web::http::http_request set_service_properties(web::http::uri_builder uri_builder, const std::chrono::seconds& timeout, operation_context context) { uri_builder.append_query(core::make_query_parameter(uri_query_resource_type, resource_service, /* do_encoding */ false)); uri_builder.append_query(core::make_query_parameter(uri_query_component, component_properties, /* do_encoding */ false)); web::http::http_request request(base_request(web::http::methods::PUT, uri_builder, timeout, context)); return request; }
web::http::http_request get_service_stats(web::http::uri_builder uri_builder, const std::chrono::seconds& timeout, operation_context context) { uri_builder.append_query(uri_query_resource_type, resource_service); uri_builder.append_query(uri_query_component, component_stats); web::http::http_request request(base_request(web::http::methods::GET, uri_builder, timeout, context)); return request; }
JsonNode *torrent_add_url(const gchar * url, gboolean paused) { JsonNode *root = base_request(METHOD_TORRENT_ADD); JsonObject *args = node_get_arguments(root); json_object_set_string_member(args, PARAM_FILENAME, url); json_object_set_boolean_member(args, PARAM_PAUSED, paused); request_set_tag(root, TORRENT_GET_TAG_MODE_FULL); return root; }
web::http::http_request queue_base_request(web::http::method method, web::http::uri_builder uri_builder, const std::chrono::seconds& timeout, operation_context context) { web::http::http_request request = base_request(method, uri_builder, timeout, context); /* web::http::http_headers& headers = request.headers(); headers.add(web::http::header_names::accept_charset, header_value_charset_utf8); */ return request; }
JsonNode *generic_request(gchar * method, JsonArray * ids) { JsonNode *root = base_request(method); if (ids) { JsonObject *args = node_get_arguments(root); json_object_set_array_member(args, PARAM_IDS, ids); request_set_tag_from_ids(root, ids); } return root; }
JsonNode *torrent_remove(JsonArray * array, gboolean removeData) { JsonNode *root = base_request(METHOD_TORRENT_REMOVE); JsonObject *args = node_get_arguments(root); json_object_set_array_member(args, PARAM_IDS, array); json_object_set_boolean_member(args, PARAM_DELETE_LOCAL_DATA, removeData); request_set_tag(root, TORRENT_GET_TAG_MODE_FULL); return root; }
JsonNode *torrent_add(gchar * target, gint flags) { JsonNode *root; JsonObject *args; gboolean isMagnet = is_magnet(target); gboolean isUri = isMagnet || is_url(target); gchar *encodedFile; if (!isUri && !g_file_test(target, G_FILE_TEST_IS_REGULAR)) { g_message("file \"%s\" does not exist.", target); return NULL; } root = base_request(METHOD_TORRENT_ADD); args = node_get_arguments(root); if (isUri) { json_object_set_string_member(args, PARAM_FILENAME, target); } else { encodedFile = trg_base64encode(target); if (encodedFile) { json_object_set_string_member(args, PARAM_METAINFO, encodedFile); g_free(encodedFile); } else { g_error("unable to base64 encode file \"%s\".", target); return NULL; } } json_object_set_boolean_member(args, PARAM_PAUSED, (flags & TORRENT_ADD_FLAG_PAUSED)); if ((flags & TORRENT_ADD_FLAG_DELETE)) g_unlink(target); return root; }
web::http::http_request queue_base_request(web::http::method method, web::http::uri_builder& uri_builder, const std::chrono::seconds& timeout, operation_context context) { web::http::http_request request = base_request(method, uri_builder, timeout, context); return request; }
JsonNode *session_get(void) { return base_request(METHOD_SESSION_GET); }
JsonNode *port_test(void) { return base_request(METHOD_PORT_TEST); }
JsonNode *blocklist_update(void) { return base_request(METHOD_BLOCKLIST_UPDATE); }
JsonNode *session_stats(void) { return base_request(METHOD_SESSION_STATS); }
JsonNode *torrent_get(gint64 id) { JsonNode *root = base_request(METHOD_TORRENT_GET); JsonObject *args = node_get_arguments(root); JsonArray *fields = json_array_new(); if (id == TORRENT_GET_TAG_MODE_UPDATE) { json_object_set_string_member(args, PARAM_IDS, FIELD_RECENTLY_ACTIVE); } else if (id >= 0) { JsonArray *ids = json_array_new(); json_array_add_int_element(ids, id); json_object_set_array_member(args, PARAM_IDS, ids); } json_array_add_string_element(fields, FIELD_ETA); json_array_add_string_element(fields, FIELD_PEERS); json_array_add_string_element(fields, FIELD_PEERSFROM); json_array_add_string_element(fields, FIELD_FILES); json_array_add_string_element(fields, FIELD_PEERS_SENDING_TO_US); json_array_add_string_element(fields, FIELD_PEERS_GETTING_FROM_US); json_array_add_string_element(fields, FIELD_PEERS_CONNECTED); /*json_array_add_string_element(fields, FIELD_HAVEVALID); json_array_add_string_element(fields, FIELD_HAVEUNCHECKED); */ json_array_add_string_element(fields, FIELD_RATEUPLOAD); json_array_add_string_element(fields, FIELD_RATEDOWNLOAD); json_array_add_string_element(fields, FIELD_STATUS); json_array_add_string_element(fields, FIELD_ISFINISHED); json_array_add_string_element(fields, FIELD_ISPRIVATE); json_array_add_string_element(fields, FIELD_ADDED_DATE); json_array_add_string_element(fields, FIELD_DOWNLOADEDEVER); json_array_add_string_element(fields, FIELD_UPLOADEDEVER); json_array_add_string_element(fields, FIELD_SIZEWHENDONE); json_array_add_string_element(fields, FIELD_QUEUE_POSITION); json_array_add_string_element(fields, FIELD_ID); json_array_add_string_element(fields, FIELD_NAME); json_array_add_string_element(fields, FIELD_PERCENTDONE); json_array_add_string_element(fields, FIELD_COMMENT); json_array_add_string_element(fields, FIELD_TOTAL_SIZE); json_array_add_string_element(fields, FIELD_LEFT_UNTIL_DONE); json_array_add_string_element(fields, FIELD_ANNOUNCE_URL); json_array_add_string_element(fields, FIELD_ERROR_STRING); json_array_add_string_element(fields, FIELD_SWARM_SPEED); json_array_add_string_element(fields, FIELD_TRACKER_STATS); json_array_add_string_element(fields, FIELD_DOWNLOAD_DIR); json_array_add_string_element(fields, FIELD_HASH_STRING); json_array_add_string_element(fields, FIELD_DONE_DATE); json_array_add_string_element(fields, FIELD_HONORS_SESSION_LIMITS); json_array_add_string_element(fields, FIELD_UPLOAD_LIMIT); json_array_add_string_element(fields, FIELD_UPLOAD_LIMITED); json_array_add_string_element(fields, FIELD_DOWNLOAD_LIMIT); json_array_add_string_element(fields, FIELD_DOWNLOAD_LIMITED); json_array_add_string_element(fields, FIELD_BANDWIDTH_PRIORITY); json_array_add_string_element(fields, FIELD_SEED_RATIO_LIMIT); json_array_add_string_element(fields, FIELD_SEED_RATIO_MODE); json_array_add_string_element(fields, FIELD_PEER_LIMIT); json_array_add_string_element(fields, FIELD_ACTIVITY_DATE); json_array_add_string_element(fields, FIELD_ERRORSTR); json_array_add_string_element(fields, FIELD_WANTED); json_array_add_string_element(fields, FIELD_PRIORITIES); json_array_add_string_element(fields, FIELD_RECHECK_PROGRESS); json_object_set_array_member(args, PARAM_FIELDS, fields); return root; }