static void hangouts_auth_get_session_cookies_uberauth_cb(PurpleHttpConnection *http_conn, PurpleHttpResponse *response, gpointer user_data) { HangoutsAccount *ha = user_data; PurpleHttpRequest *request; const gchar *uberauth; uberauth = purple_http_response_get_data(response, NULL); if (purple_http_response_get_error(response) != NULL) { purple_connection_error(ha->pc, PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED, _("Auth error")); return; } purple_debug_misc("hangouts-prpl", "uberauth: %s", uberauth); request = purple_http_request_new(NULL); purple_http_request_set_url_printf(request, "https://accounts.google.com/MergeSession" "?service=mail&continue=http://www.google.com&uberauth=%s", purple_url_encode(uberauth)); purple_http_request_set_cookie_jar(request, ha->cookie_jar); purple_http_request_header_set_printf(request, "Authorization", "Bearer %s", ha->access_token); purple_http_request_set_max_redirects(request, 0); purple_http_request(ha->pc, request, hangouts_auth_get_session_cookies_got_cb, ha); purple_http_request_unref(request); }
static void ggp_avatar_buddy_update_received(PurpleHttpConnection *http_conn, PurpleHttpResponse *response, gpointer _pending_update) { ggp_avatar_buddy_update_req *pending_update = _pending_update; PurpleBuddy *buddy; PurpleAccount *account; PurpleConnection *gc = pending_update->gc; ggp_avatar_session_data *avdata; gchar timestamp_str[20]; const gchar *got_data; size_t got_len; PURPLE_ASSERT_CONNECTION_IS_VALID(gc); avdata = ggp_avatar_get_avdata(gc); g_assert(pending_update == avdata->current_update); avdata->current_update = NULL; if (!purple_http_response_is_successful(response)) { purple_debug_error("gg", "ggp_avatar_buddy_update_received: bad" " response while getting avatar for %u: %s\n", pending_update->uin, purple_http_response_get_error(response)); g_free(pending_update); return; } account = purple_connection_get_account(gc); buddy = purple_blist_find_buddy(account, ggp_uin_to_str(pending_update->uin)); if (!buddy) { purple_debug_warning("gg", "ggp_avatar_buddy_update_received: " "buddy %u disappeared\n", pending_update->uin); g_free(pending_update); return; } g_snprintf(timestamp_str, sizeof(timestamp_str), "%lu", pending_update->timestamp); got_data = purple_http_response_get_data(response, &got_len); purple_buddy_icons_set_for_user(account, purple_buddy_get_name(buddy), g_memdup(got_data, got_len), got_len, timestamp_str); purple_debug_info("gg", "ggp_avatar_buddy_update_received: " "got avatar for buddy %u [ts=%lu]\n", pending_update->uin, pending_update->timestamp); g_free(pending_update); }
static void ggp_avatar_own_sent(PurpleHttpConnection *http_conn, PurpleHttpResponse *response, gpointer user_data) { PurpleConnection *gc = purple_http_conn_get_purple_connection(http_conn); PURPLE_ASSERT_CONNECTION_IS_VALID(gc); if (!purple_http_response_is_successful(response)) { purple_debug_error("gg", "ggp_avatar_own_sent: " "avatar not sent. %s\n", purple_http_response_get_error(response)); return; } purple_debug_info("gg", "ggp_avatar_own_sent: %s\n", purple_http_response_get_data(response, NULL)); }