Dict::operator std::map<std::string, std::string>(){ std::map<std::string, std::string> ret; onion_dict_preorder(c_handler(), (void*)add_to_map, (void*)&ret); return ret; }
static void swift_handle_request(struct http_request *req, void (*a_handler)(struct http_request *req, const char *account), void (*c_handler)(struct http_request *req, const char *account, const char *container), void (*o_handler)(struct http_request *req, const char *account, const char *container, const char *object)) { char *args[4] = {}; char *version, *account, *container, *object; split_path(req->uri, ARRAY_SIZE(args), args); version = args[0]; account = args[1]; container = args[2]; object = args[3]; sd_info("%s", str_http_req(req)); if (account == NULL) { sd_info("invalid uri: %s", req->uri); http_response_header(req, NOT_FOUND); } else if (container == NULL) { sd_info("account operation, %s", account); a_handler(req, account); } else if (object == NULL) { sd_info("container operation, %s, %s", account, container); c_handler(req, account, container); } else { sd_info("object operation, %s, %s, %s", account, container, object); o_handler(req, account, container, object); } sd_info("%s", str_http_req(req)); free(version); free(account); free(container); free(object); }