void hangouts_oauth_with_code(HangoutsAccount *ha, const gchar *auth_code) { PurpleHttpRequest *request; PurpleConnection *pc; GString *postdata; pc = ha->pc; postdata = g_string_new(NULL); g_string_append_printf(postdata, "client_id=%s&", purple_url_encode(GOOGLE_CLIENT_ID)); g_string_append_printf(postdata, "client_secret=%s&", purple_url_encode(GOOGLE_CLIENT_SECRET)); g_string_append_printf(postdata, "code=%s&", purple_url_encode(auth_code)); g_string_append_printf(postdata, "redirect_uri=%s&", purple_url_encode(HANGOUTS_API_OAUTH2_REDIRECT_URI)); g_string_append(postdata, "grant_type=authorization_code&"); request = purple_http_request_new(HANGOUTS_API_OAUTH2_TOKEN_URL); purple_http_request_set_cookie_jar(request, ha->cookie_jar); purple_http_request_set_method(request, "POST"); purple_http_request_header_set(request, "Content-Type", "application/x-www-form-urlencoded"); purple_http_request_set_contents(request, postdata->str, postdata->len); purple_http_request(pc, request, hangouts_oauth_with_code_cb, ha); purple_http_request_unref(request); g_string_free(postdata, TRUE); }
void hangouts_oauth_refresh_token(HangoutsAccount *ha) { PurpleHttpRequest *request; PurpleConnection *pc; GString *postdata; pc = ha->pc; postdata = g_string_new(NULL); g_string_append_printf(postdata, "client_id=%s&", purple_url_encode(GOOGLE_CLIENT_ID)); g_string_append_printf(postdata, "client_secret=%s&", purple_url_encode(GOOGLE_CLIENT_SECRET)); g_string_append_printf(postdata, "refresh_token=%s&", purple_url_encode(ha->refresh_token)); g_string_append(postdata, "grant_type=refresh_token&"); request = purple_http_request_new(HANGOUTS_API_OAUTH2_TOKEN_URL); purple_http_request_set_cookie_jar(request, ha->cookie_jar); purple_http_request_set_method(request, "POST"); purple_http_request_header_set(request, "Content-Type", "application/x-www-form-urlencoded"); purple_http_request_set_contents(request, postdata->str, postdata->len); purple_http_request(pc, request, hangouts_oauth_refresh_token_cb, ha); purple_http_request_unref(request); purple_debug_info("hangouts", "Postdata: %s\n", postdata->str); g_string_free(postdata, TRUE); }
static void ggp_pubdir_set_info_got_token(PurpleConnection *gc, const gchar *token, gpointer _record) { PurpleHttpRequest *req; ggp_pubdir_record *record = _record; gchar *request_data; gchar *name, *surname, *city; uin_t uin = record->uin; PURPLE_ASSERT_CONNECTION_IS_VALID(gc); if (!token) { /* TODO: notify about failure */ ggp_pubdir_record_free(record, 1); return; } name = g_uri_escape_string(record->first_name, NULL, FALSE); surname = g_uri_escape_string(record->last_name, NULL, FALSE); city = g_uri_escape_string(record->city, NULL, FALSE); request_data = g_strdup_printf( "name=%s&" "surname=%s&" "birth=%sT10:00:00%%2B00:00&" "birth_priv=2&" "gender=%d&" "gender_priv=2&" "city=%s&" "province=%d", name, surname, ggp_date_strftime("%Y-%m-%d", record->birth), record->gender, city, record->province); if (purple_debug_is_verbose() && purple_debug_is_unsafe()) { purple_debug_misc("gg", "ggp_pubdir_set_info_got_token: " "query [%s]\n", request_data); } req = purple_http_request_new(NULL); purple_http_request_set_method(req, "PUT"); purple_http_request_set_url_printf(req, "http://api.gadu-gadu.pl/users/%u.xml", uin); purple_http_request_header_set(req, "Authorization", token); purple_http_request_header_set(req, "Content-Type", "application/x-www-form-urlencoded"); purple_http_request_set_contents(req, request_data, -1); purple_http_request(gc, req, ggp_pubdir_set_info_got_response, NULL); purple_http_request_unref(req); g_free(request_data); ggp_pubdir_record_free(record, 1); }
static void ggp_edisc_xfer_send_init_authenticated(PurpleConnection *gc, gboolean success, gpointer _xfer) { ggp_edisc_session_data *sdata = ggp_edisc_get_sdata(gc); PurpleHttpRequest *req; PurpleXfer *xfer = _xfer; ggp_edisc_xfer *edisc_xfer = purple_xfer_get_protocol_data(xfer); gchar *data; if (purple_xfer_is_cancelled(xfer)) return; if (!success) { ggp_edisc_xfer_error(xfer, _("Authentication failed")); return; } g_return_if_fail(sdata != NULL); req = purple_http_request_new("https://drive.mpa.gg.pl/send_ticket"); purple_http_request_set_method(req, "PUT"); ggp_edisc_set_defaults(req); purple_http_request_set_cookie_jar(req, sdata->cookies); purple_http_request_header_set(req, "X-gged-security-token", sdata->security_token); data = g_strdup_printf("{\"send_ticket\":{" "\"recipient\":\"%s\"," "\"file_name\":\"%s\"," "\"file_size\":\"%u\"" "}}", purple_xfer_get_remote_user(xfer), edisc_xfer->filename, (int)purple_xfer_get_size(xfer)); purple_http_request_set_contents(req, data, -1); g_free(data); edisc_xfer->hc = purple_http_request(gc, req, ggp_edisc_xfer_send_init_ticket_created, xfer); purple_http_request_unref(req); }
static PurpleHttpRequest * jabber_bosh_connection_http_request_new(PurpleJabberBOSHConnection *conn, const GString *data) { PurpleHttpRequest *req; jabber_stream_restart_inactivity_timer(conn->js); req = purple_http_request_new(conn->url); purple_http_request_set_keepalive_pool(req, conn->kapool); purple_http_request_set_method(req, "POST"); purple_http_request_set_timeout(req, JABBER_BOSH_TIMEOUT + 2); purple_http_request_header_set(req, "User-Agent", jabber_bosh_useragent); purple_http_request_header_set(req, "Content-Encoding", "text/xml; charset=utf-8"); purple_http_request_set_contents(req, data->str, data->len); return req; }
static void ggp_avatar_own_got_token(PurpleConnection *gc, const gchar *token, gpointer _img) { PurpleHttpRequest *req; PurpleImage *img = _img; ggp_avatar_own_data *own_data = ggp_avatar_get_avdata(gc)->own_data; gchar *img_data, *img_data_e, *request_data; PurpleAccount *account = purple_connection_get_account(gc); uin_t uin = ggp_str_to_uin(purple_account_get_username(account)); if (img != own_data->img) { purple_debug_warning("gg", "ggp_avatar_own_got_token: " "avatar was changed in meantime\n"); return; } own_data->img = NULL; img_data = purple_base64_encode(purple_image_get_data(img), purple_image_get_size(img)); img_data_e = g_uri_escape_string(img_data, NULL, FALSE); g_free(img_data); request_data = g_strdup_printf("uin=%d&photo=%s", uin, img_data_e); g_free(img_data_e); purple_debug_misc("gg", "ggp_avatar_own_got_token: " "uploading new avatar...\n"); req = purple_http_request_new("http://avatars.nowe.gg/upload"); purple_http_request_set_max_len(req, GGP_AVATAR_RESPONSE_MAX); purple_http_request_set_method(req, "POST"); purple_http_request_header_set(req, "Authorization", token); purple_http_request_header_set(req, "From", "avatars to avatars"); purple_http_request_header_set(req, "Content-Type", "application/x-www-form-urlencoded"); purple_http_request_set_contents(req, request_data, -1); purple_http_request(gc, req, ggp_avatar_own_sent, NULL); purple_http_request_unref(req); g_free(request_data); }