libpurple/protocols/gg/oauth/oauth-purple.c

Thu, 23 Feb 2023 22:42:20 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 23 Feb 2023 22:42:20 -0600
changeset 42085
a76f1668564c
parent 41979
31c32b8d4bef
permissions
-rw-r--r--

Make the gadu gadu protocol plugin clean for warning level 2

Testing Done:
Touched all of the files, built, and verifed the warnings were gone.

Reviewed at https://reviews.imfreedom.org/r/2262/

33349
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
1 /* purple
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
2 *
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
5 * source distribution.
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
6 *
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
7 * Rewritten from scratch during Google Summer of Code 2012
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
8 * by Tomek Wasilczyk (http://www.wasilczyk.pl).
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
9 *
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
10 * Previously implemented by:
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
11 * - Arkadiusz Miskiewicz <misiek@pld.org.pl> - first implementation (2001);
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
12 * - Bartosz Oler <bartosz@bzimage.us> - reimplemented during GSoC 2005;
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
13 * - Krzysztof Klinikowski <grommasher@gmail.com> - some parts (2009-2011).
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
14 *
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
15 * This program is free software; you can redistribute it and/or modify
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
16 * it under the terms of the GNU General Public License as published by
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
17 * the Free Software Foundation; either version 2 of the License, or
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
18 * (at your option) any later version.
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
19 *
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
20 * This program is distributed in the hope that it will be useful,
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
23 * GNU General Public License for more details.
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
24 *
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
25 * You should have received a copy of the GNU General Public License
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
26 * along with this program; if not, write to the Free Software
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
27 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
28 */
d4a017428f4d Gadu-Gadu: missing copyright notes
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33343
diff changeset
29
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
30 #include "oauth-purple.h"
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
31 #include "gg.h"
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
32
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
33 #include "oauth.h"
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
34 #include "../utils.h"
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
35 #include "../xml.h"
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
36
40358
e6fe6fc1f516 move all protocols, purple plugins, and purple tests to use purple.h instead of including files individually
Gary Kramlich <grim@reaperworld.com>
parents: 40058
diff changeset
37 #include <purple.h>
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
38
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
39 #define GGP_OAUTH_RESPONSE_MAX 10240
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
40
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
41 typedef struct
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
42 {
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
43 SoupMessage *msg;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
44 PurpleConnection *gc;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
45 ggp_oauth_request_cb callback;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
46 gpointer user_data;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
47 gchar *token;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
48 gchar *token_secret;
35359
d8aa47a78f55 Style: fix all remaining gg warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34999
diff changeset
49
33343
09f740724036 Gadu-Gadu: extended OAuth support, initial support for gg10.5 public directory
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33329
diff changeset
50 gchar *sign_method, *sign_url;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
51 } ggp_oauth_data;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
52
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
53 static void ggp_oauth_data_free(ggp_oauth_data *data)
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
54 {
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
55 g_object_unref(data->msg);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
56 g_free(data->token);
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
57 g_free(data->token_secret);
33343
09f740724036 Gadu-Gadu: extended OAuth support, initial support for gg10.5 public directory
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33329
diff changeset
58 g_free(data->sign_method);
09f740724036 Gadu-Gadu: extended OAuth support, initial support for gg10.5 public directory
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33329
diff changeset
59 g_free(data->sign_url);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
60 g_free(data);
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
61 }
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
62
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
63 static void
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
64 ggp_oauth_access_token_got(GObject *source, GAsyncResult *result,
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
65 gpointer user_data)
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
66 {
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
67 ggp_oauth_data *data = user_data;
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
68 GBytes *response_body = NULL;
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
69 const char *buffer = NULL;
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
70 gsize size = 0;
40520
eae11ccb1bef Fix some ggp_xml stuff
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40474
diff changeset
71 gchar *token = NULL, *token_secret = NULL;
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
72 PurpleXmlNode *xml;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
73 gboolean succ = TRUE;
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
74 GError *error = NULL;
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
75
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
76 response_body = soup_session_send_and_read_finish(SOUP_SESSION(source),
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
77 result, &error);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
78 if(response_body == NULL) {
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
79 purple_debug_error("gg", "ggp_oauth_access_token_got: failed: %s",
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
80 error->message);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
81 ggp_oauth_data_free(data);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
82 g_error_free(error);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
83 return;
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
84 }
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
85
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
86 buffer = g_bytes_get_data(response_body, &size);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
87 xml = purple_xmlnode_from_str(buffer, size);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
88 g_bytes_unref(response_body);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
89
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
90 if (xml == NULL) {
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
91 purple_debug_error("gg", "ggp_oauth_access_token_got: invalid xml");
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
92 ggp_oauth_data_free(data);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
93 return;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
94 }
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
95
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
96 succ &= ggp_xml_get_string(xml, "oauth_token", &token);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
97 succ &= ggp_xml_get_string(xml, "oauth_token_secret", &token_secret);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
98 purple_xmlnode_free(xml);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
99 if (!succ || strlen(token) < 10) {
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
100 purple_debug_error("gg", "ggp_oauth_access_token_got: invalid xml - "
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
101 "token is not present");
40520
eae11ccb1bef Fix some ggp_xml stuff
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40474
diff changeset
102 g_free(token);
eae11ccb1bef Fix some ggp_xml stuff
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40474
diff changeset
103 g_free(token_secret);
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
104 ggp_oauth_data_free(data);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
105 return;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
106 }
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
107
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
108 if (data->sign_url) {
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
109 PurpleAccount *account;
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
110 PurpleContactInfo *info = NULL;
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
111 gchar *auth;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
112
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
113 purple_debug_misc("gg", "ggp_oauth_access_token_got: got access token, "
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
114 "returning signed url");
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
115
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
116 account = purple_connection_get_account(data->gc);
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
117 info = PURPLE_CONTACT_INFO(account);
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
118 auth = gg_oauth_generate_header(
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
119 data->sign_method, data->sign_url,
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
120 purple_contact_info_get_username(info),
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
121 purple_connection_get_password(data->gc), token, token_secret);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
122 data->callback(data->gc, auth, data->user_data);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
123 } else {
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
124 purple_debug_misc(
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
125 "gg",
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
126 "ggp_oauth_access_token_got: got access token, returning it");
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
127 data->callback(data->gc, token, data->user_data);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
128 }
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
129
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
130 g_free(token);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
131 g_free(token_secret);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
132 ggp_oauth_data_free(data);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
133 }
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
134
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
135 static void
42085
a76f1668564c Make the gadu gadu protocol plugin clean for warning level 2
Gary Kramlich <grim@reaperworld.com>
parents: 41979
diff changeset
136 ggp_oauth_authorization_done(GObject *source,
a76f1668564c Make the gadu gadu protocol plugin clean for warning level 2
Gary Kramlich <grim@reaperworld.com>
parents: 41979
diff changeset
137 G_GNUC_UNUSED GAsyncResult *result,
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
138 gpointer user_data)
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
139 {
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
140 ggp_oauth_data *data = user_data;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
141 PurpleAccount *account;
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
142 PurpleContactInfo *info = NULL;
41212
9f0f4c23132e Use accessor for SoupMessage->status_code
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40520
diff changeset
143 SoupStatus status_code;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
144 char *auth;
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
145 SoupMessage *msg = NULL;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
146 const char *method = "POST";
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
147 const char *url = "http://api.gadu-gadu.pl/access_token";
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
148
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
149 PURPLE_ASSERT_CONNECTION_IS_VALID(data->gc);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
150
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
151 account = purple_connection_get_account(data->gc);
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
152 info = PURPLE_CONTACT_INFO(account);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
153
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
154 status_code = soup_message_get_status(data->msg);
41212
9f0f4c23132e Use accessor for SoupMessage->status_code
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40520
diff changeset
155 if (status_code != 302) {
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
156 purple_debug_error("gg",
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
157 "ggp_oauth_authorization_done: failed (code = %d)",
41212
9f0f4c23132e Use accessor for SoupMessage->status_code
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40520
diff changeset
158 status_code);
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
159 ggp_oauth_data_free(data);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
160 return;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
161 }
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
162
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
163 purple_debug_misc("gg", "ggp_oauth_authorization_done: authorization done, "
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
164 "requesting access token...");
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
165
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
166 auth = gg_oauth_generate_header(method, url,
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
167 purple_contact_info_get_username(info),
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
168 purple_connection_get_password(data->gc),
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
169 data->token, data->token_secret);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
170
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
171 g_clear_object(&data->msg);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
172 data->msg = msg = soup_message_new(method, url);
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
173 // purple_http_request_set_max_len(req, GGP_OAUTH_RESPONSE_MAX);
41214
b0b7d118475f Use accessor for SoupMessage->request_headers
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 41212
diff changeset
174 soup_message_headers_replace(soup_message_get_request_headers(msg),
b0b7d118475f Use accessor for SoupMessage->request_headers
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 41212
diff changeset
175 "Authorization", auth);
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
176 soup_session_send_and_read_async(SOUP_SESSION(source), msg,
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
177 G_PRIORITY_DEFAULT, NULL,
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
178 ggp_oauth_access_token_got, data);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
179
40021
6b1b05adda03 Use correct memory functions for GG oauth.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40012
diff changeset
180 g_free(auth);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
181 }
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
182
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
183 static void
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
184 ggp_oauth_request_token_got(GObject *source, GAsyncResult *result,
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
185 gpointer user_data)
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
186 {
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
187 SoupSession *session = SOUP_SESSION(source);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
188 ggp_oauth_data *data = user_data;
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
189 GBytes *response_body = NULL;
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
190 const char *buffer = NULL;
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
191 gsize size = 0;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
192 PurpleAccount *account;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34287
diff changeset
193 PurpleXmlNode *xml;
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
194 SoupMessage *msg = NULL;
34232
a5517f235e0f HTTP: migrate purple_util_fetch_url_request to new API for GG prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34148
diff changeset
195 gchar *request_data;
41700
9f6a2c90800e Convert soup_message_set_request to soup_message_set_request_body_from_bytes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41214
diff changeset
196 GBytes *body = NULL;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
197 gboolean succ = TRUE;
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
198 GError *error = NULL;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
199
36068
e9b9320a985a Drop PURPLE_CONNECTION_IS_VALID in favor of (temporary) PURPLE_ASSERT_CONNECTION_IS_VALID
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35361
diff changeset
200 PURPLE_ASSERT_CONNECTION_IS_VALID(data->gc);
e9b9320a985a Drop PURPLE_CONNECTION_IS_VALID in favor of (temporary) PURPLE_ASSERT_CONNECTION_IS_VALID
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35361
diff changeset
201
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
202 account = purple_connection_get_account(data->gc);
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
203
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
204 if(!SOUP_STATUS_IS_SUCCESSFUL(soup_message_get_status(data->msg))) {
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
205 purple_debug_error("gg", "ggp_oauth_request_token_got: "
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
206 "requested token not received\n");
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
207 ggp_oauth_data_free(data);
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
208 return;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
209 }
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
210
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
211 response_body = soup_session_send_and_read_finish(session, result, &error);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
212 if(response_body == NULL) {
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
213 purple_debug_error("gg", "ggp_oauth_access_token_got: failed: %s",
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
214 error->message);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
215 ggp_oauth_data_free(data);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
216 g_error_free(error);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
217 return;
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
218 }
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
219
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
220 purple_debug_misc("gg", "ggp_oauth_request_token_got: "
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
221 "got request token, doing authorization...\n");
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
222
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
223 buffer = g_bytes_get_data(response_body, &size);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
224 xml = purple_xmlnode_from_str(buffer, size);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
225 g_bytes_unref(response_body);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
226
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35359
diff changeset
227 if (xml == NULL) {
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
228 purple_debug_error("gg", "ggp_oauth_request_token_got: "
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
229 "invalid xml\n");
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
230 ggp_oauth_data_free(data);
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
231 return;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
232 }
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
233
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
234 succ &= ggp_xml_get_string(xml, "oauth_token", &data->token);
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
235 succ &= ggp_xml_get_string(xml, "oauth_token_secret",
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
236 &data->token_secret);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34287
diff changeset
237 purple_xmlnode_free(xml);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35359
diff changeset
238 if (!succ) {
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
239 purple_debug_error("gg", "ggp_oauth_request_token_got: "
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
240 "invalid xml - token is not present\n");
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
241 ggp_oauth_data_free(data);
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
242 return;
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
243 }
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
244
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
245 request_data = g_strdup_printf(
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
246 "callback_url=http://www.mojageneracja.pl&request_token=%s&"
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
247 "uin=%s&password=%s", data->token,
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
248 purple_contact_info_get_username(PURPLE_CONTACT_INFO(account)),
34106
1b0c94670bcc Merge with default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33351
diff changeset
249 purple_connection_get_password(data->gc));
34232
a5517f235e0f HTTP: migrate purple_util_fetch_url_request to new API for GG prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34148
diff changeset
250
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
251 g_clear_object(&data->msg);
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
252 data->msg = msg = soup_message_new("POST",
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
253 "https://login.gadu-gadu.pl/authorize");
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
254 // purple_http_request_set_max_len(msg, GGP_OAUTH_RESPONSE_MAX);
35359
d8aa47a78f55 Style: fix all remaining gg warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34999
diff changeset
255 /* we don't need any results, nor 302 redirection */
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
256 soup_message_set_flags(msg, SOUP_MESSAGE_NO_REDIRECT);
41700
9f6a2c90800e Convert soup_message_set_request to soup_message_set_request_body_from_bytes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41214
diff changeset
257 body = g_bytes_new_take(request_data, strlen(request_data));
9f6a2c90800e Convert soup_message_set_request to soup_message_set_request_body_from_bytes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41214
diff changeset
258 soup_message_set_request_body_from_bytes(msg,
9f6a2c90800e Convert soup_message_set_request to soup_message_set_request_body_from_bytes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41214
diff changeset
259 "application/x-www-form-urlencoded",
9f6a2c90800e Convert soup_message_set_request to soup_message_set_request_body_from_bytes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41214
diff changeset
260 body);
9f6a2c90800e Convert soup_message_set_request to soup_message_set_request_body_from_bytes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41214
diff changeset
261 g_bytes_unref(body);
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
262 soup_session_send_and_read_async(session, msg, G_PRIORITY_DEFAULT, NULL,
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
263 ggp_oauth_authorization_done, data);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
264 }
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
265
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
266 void
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
267 ggp_oauth_request(PurpleConnection *gc, ggp_oauth_request_cb callback,
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
268 gpointer user_data, const gchar *sign_method,
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
269 const gchar *sign_url)
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
270 {
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
271 GGPInfo *info = purple_connection_get_protocol_data(gc);
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
272 PurpleAccount *account = purple_connection_get_account(gc);
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
273 SoupMessage *msg;
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
274 char *auth;
34232
a5517f235e0f HTTP: migrate purple_util_fetch_url_request to new API for GG prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34148
diff changeset
275 const char *method = "POST";
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
276 const char *url = "http://api.gadu-gadu.pl/request_token";
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
277 ggp_oauth_data *data;
34232
a5517f235e0f HTTP: migrate purple_util_fetch_url_request to new API for GG prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34148
diff changeset
278
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
279 purple_debug_misc("gg", "ggp_oauth_request: requesting token...\n");
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
280
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
281 auth = gg_oauth_generate_header(
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
282 method, url,
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41921
diff changeset
283 purple_contact_info_get_username(PURPLE_CONTACT_INFO(account)),
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
284 purple_connection_get_password(gc), NULL, NULL);
34232
a5517f235e0f HTTP: migrate purple_util_fetch_url_request to new API for GG prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34148
diff changeset
285
40012
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
286 data = g_new0(ggp_oauth_data, 1);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
287 data->gc = gc;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
288 data->callback = callback;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
289 data->user_data = user_data;
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
290 data->sign_method = g_strdup(sign_method);
d76cbf47c896 Re-arrange GG oauth-purple code to avoid prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
291 data->sign_url = g_strdup(sign_url);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
292
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
293 data->msg = msg = soup_message_new(method, url);
40022
8faeba4c2dfe Convert GG oauth to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40021
diff changeset
294 // purple_http_request_set_max_len(req, GGP_OAUTH_RESPONSE_MAX);
41214
b0b7d118475f Use accessor for SoupMessage->request_headers
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 41212
diff changeset
295 soup_message_headers_replace(soup_message_get_request_headers(msg),
b0b7d118475f Use accessor for SoupMessage->request_headers
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 41212
diff changeset
296 "Authorization", auth);
41878
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
297 soup_session_send_and_read_async(info->http, msg, G_PRIORITY_DEFAULT, NULL,
64e455cfb6b4 Port some of gg to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41700
diff changeset
298 ggp_oauth_request_token_got, data);
34232
a5517f235e0f HTTP: migrate purple_util_fetch_url_request to new API for GG prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34148
diff changeset
299
40021
6b1b05adda03 Use correct memory functions for GG oauth.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40012
diff changeset
300 g_free(auth);
33329
cf23e0f1861a Gadu-Gadu: OAuth support
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
301 }

mercurial