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_recv_start(PurpleXfer *xfer) { ggp_edisc_session_data *sdata; ggp_edisc_xfer *edisc_xfer; gchar *upload_url; 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); upload_url = g_strdup_printf("https://drive.mpa.gg.pl/me/file/inbox/" "%s,%s?api_version=%s&security_token=%s", edisc_xfer->ticket_id, purple_url_encode(purple_xfer_get_filename(xfer)), GGP_EDISC_API, sdata->security_token); req = purple_http_request_new(upload_url); g_free(upload_url); purple_http_request_set_timeout(req, -1); ggp_edisc_set_defaults(req); purple_http_request_set_max_len(req, purple_xfer_get_size(xfer) + 1); purple_http_request_set_cookie_jar(req, sdata->cookies); purple_http_request_set_response_writer(req, ggp_edisc_xfer_recv_writer, xfer); edisc_xfer->hc = purple_http_request(edisc_xfer->gc, req, ggp_edisc_xfer_recv_done, xfer); purple_http_request_unref(req); purple_http_conn_set_progress_watcher(edisc_xfer->hc, ggp_edisc_xfer_progress_watcher, xfer, 250000); }