static void yahoo_xfer_start(PurpleXfer *xfer) { PurpleHttpRequest *req; struct yahoo_xfer_data *xd; xd = purple_xfer_get_protocol_data(xfer); req = yahoo_ft_new_req(xd); purple_http_request_set_timeout(req, -1); if (purple_xfer_get_xfer_type(xfer) == PURPLE_XFER_TYPE_RECEIVE) { purple_http_request_set_max_len(req, -1); purple_http_request_set_response_writer(req, yahoo_process_filetrans_15_writer, xfer); xd->hc = purple_http_request(xd->gc, req, yahoo_process_filetrans_15_downloaded, xfer); } else { purple_http_request_set_method(req, "POST"); /* YHttpServer quirk: it sets content-length, but doesn't sends * any data. */ purple_http_request_set_max_len(req, 0); purple_http_request_set_contents_reader(req, yahoo_process_filetrans_15_reader, purple_xfer_get_size(xfer), xfer); xd->hc = purple_http_request(xd->gc, req, yahoo_process_filetrans_15_sent, xfer); } purple_http_conn_set_progress_watcher(xd->hc, yahoo_process_filetrans_15_watcher, xfer, -1); purple_http_request_unref(req); }
static void ggp_edisc_xfer_send_start(PurpleXfer *xfer) { ggp_edisc_session_data *sdata; ggp_edisc_xfer *edisc_xfer; gchar *upload_url, *filename_e; PurpleHttpRequest *req; g_return_if_fail(xfer != NULL); edisc_xfer = purple_xfer_get_protocol_data(xfer); g_return_if_fail(edisc_xfer != NULL); sdata = ggp_edisc_get_sdata(edisc_xfer->gc); g_return_if_fail(sdata != NULL); filename_e = purple_strreplace(edisc_xfer->filename, " ", "%20"); upload_url = g_strdup_printf("https://drive.mpa.gg.pl/me/file/outbox/" "%s%%2C%s", edisc_xfer->ticket_id, filename_e); g_free(filename_e); req = purple_http_request_new(upload_url); g_free(upload_url); purple_http_request_set_method(req, "PUT"); purple_http_request_set_timeout(req, -1); ggp_edisc_set_defaults(req); purple_http_request_set_cookie_jar(req, sdata->cookies); purple_http_request_header_set(req, "X-gged-local-revision", "0"); purple_http_request_header_set(req, "X-gged-security-token", sdata->security_token); purple_http_request_header_set(req, "X-gged-metadata", "{\"node_type\": \"file\"}"); purple_http_request_set_contents_reader(req, ggp_edisc_xfer_send_reader, purple_xfer_get_size(xfer), xfer); edisc_xfer->hc = purple_http_request(edisc_xfer->gc, req, ggp_edisc_xfer_send_done, xfer); purple_http_request_unref(req); purple_http_conn_set_progress_watcher(edisc_xfer->hc, ggp_edisc_xfer_progress_watcher, xfer, 250000); }