Wed, 29 Mar 2023 23:21:45 -0500
Remove the original irc protocol plugin
I was waiting to do this until IRCv3 was at feature parity, but now one is
using this right now anyways which means having to keep updating it for changes
is just a waste of effort.
Testing Done:
ran `ninja turtles` and opened the new account dialog without issue.
Reviewed at https://reviews.imfreedom.org/r/2392/
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1 | /* purple |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3 | * Purple is the legal property of its developers, whose names are too numerous |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
5 | * source distribution. |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
6 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
10 | * (at your option) any later version. |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
11 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
15 | * GNU General Public License for more details. |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
16 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
20 | */ |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
21 | |
|
40439
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40195
diff
changeset
|
22 | #include <glib/gi18n-lib.h> |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40195
diff
changeset
|
23 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
24 | #include <json-glib/json-glib.h> |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
25 | #include <libsoup/soup.h> |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
26 | #include <stdarg.h> |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
27 | #include <string.h> |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
28 | |
|
40756
3a58ef28ee44
Implement mitigation for GHSL-2021-045
Gary Kramlich <grim@reaperworld.com>
parents:
40519
diff
changeset
|
29 | #include "libpurple/glibcompat.h" |
|
37312
d6cb70301fea
facebook: refactored error propagation
James Geboski <jgeboski@gmail.com>
parents:
37309
diff
changeset
|
30 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
31 | #include "api.h" |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
32 | #include "http.h" |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
33 | #include "json.h" |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
34 | #include "thrift.h" |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
35 | #include "util.h" |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
36 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
37 | enum |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
38 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
39 | PROP_0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
40 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
41 | PROP_CID, |
|
37253
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
42 | PROP_DID, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
43 | PROP_MID, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
44 | PROP_STOKEN, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
45 | PROP_TOKEN, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
46 | PROP_UID, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
47 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
48 | PROP_N |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
49 | }; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
50 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
51 | /** |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
52 | * FbApi: |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
53 | * |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
54 | * Represents a Facebook Messenger connection. |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
55 | */ |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
56 | struct _FbApi { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
57 | GObject parent; |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
58 | |
|
37433
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37419
diff
changeset
|
59 | FbMqtt *mqtt; |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
60 | SoupSession *cons; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
61 | PurpleConnection *gc; |
|
37512
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
62 | gboolean retrying; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
63 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
64 | FbId uid; |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
65 | gint64 sid; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
66 | guint64 mid; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
67 | gchar *cid; |
|
37253
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
68 | gchar *did; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
69 | gchar *stoken; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
70 | gchar *token; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
71 | |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
72 | GQueue *msgs; |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
73 | gboolean invisible; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
74 | guint unread; |
|
37514
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
75 | FbId lastmid; |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
76 | gchar *contacts_delta; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
77 | }; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
78 | |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
79 | static void fb_api_error_literal(FbApi *api, FbApiError error, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
80 | const gchar *msg); |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
81 | |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
82 | static void |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
83 | fb_api_attach(FbApi *api, FbId aid, const gchar *msgid, FbApiMessage *msg); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
84 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
85 | static void |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
86 | fb_api_contacts_after(FbApi *api, const gchar *cursor); |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
87 | |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
88 | static void |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
89 | fb_api_message_send(FbApi *api, FbApiMessage *msg); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
90 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
91 | static void |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
92 | fb_api_sticker(FbApi *api, FbId sid, FbApiMessage *msg); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
93 | |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
94 | void |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
95 | fb_api_contacts_delta(FbApi *api, const gchar *delta_cursor); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
96 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
97 | G_DEFINE_TYPE(FbApi, fb_api, G_TYPE_OBJECT); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
98 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
99 | static void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
100 | fb_api_set_property(GObject *obj, guint prop, const GValue *val, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
101 | GParamSpec *pspec) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
102 | { |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
103 | FbApi *api = FB_API(obj); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
104 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
105 | switch (prop) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
106 | case PROP_CID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
107 | g_free(api->cid); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
108 | api->cid = g_value_dup_string(val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
109 | break; |
|
37253
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
110 | case PROP_DID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
111 | g_free(api->did); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
112 | api->did = g_value_dup_string(val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
113 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
114 | case PROP_MID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
115 | api->mid = g_value_get_uint64(val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
116 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
117 | case PROP_STOKEN: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
118 | g_free(api->stoken); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
119 | api->stoken = g_value_dup_string(val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
120 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
121 | case PROP_TOKEN: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
122 | g_free(api->token); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
123 | api->token = g_value_dup_string(val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
124 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
125 | case PROP_UID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
126 | api->uid = g_value_get_int64(val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
127 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
128 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
129 | default: |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
130 | G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop, pspec); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
131 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
132 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
133 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
134 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
135 | static void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
136 | fb_api_get_property(GObject *obj, guint prop, GValue *val, GParamSpec *pspec) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
137 | { |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
138 | FbApi *api = FB_API(obj); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
139 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
140 | switch (prop) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
141 | case PROP_CID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
142 | g_value_set_string(val, api->cid); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
143 | break; |
|
37253
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
144 | case PROP_DID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
145 | g_value_set_string(val, api->did); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
146 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
147 | case PROP_MID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
148 | g_value_set_uint64(val, api->mid); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
149 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
150 | case PROP_STOKEN: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
151 | g_value_set_string(val, api->stoken); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
152 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
153 | case PROP_TOKEN: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
154 | g_value_set_string(val, api->token); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
155 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
156 | case PROP_UID: |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
157 | g_value_set_int64(val, api->uid); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
158 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
159 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
160 | default: |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
161 | G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop, pspec); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
162 | break; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
163 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
164 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
165 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
166 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
167 | static void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
168 | fb_api_dispose(GObject *obj) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
169 | { |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
170 | FbApi *api = FB_API(obj); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
171 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
172 | if(api->cons != NULL) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
173 | soup_session_abort(api->cons); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
174 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
175 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
176 | g_clear_object(&api->mqtt); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
177 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
178 | g_clear_object(&api->cons); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
179 | if(api->msgs != NULL) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
180 | g_queue_free_full(api->msgs, (GDestroyNotify)fb_api_message_free); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
181 | api->msgs = NULL; |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
182 | } |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
183 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
184 | g_clear_pointer(&api->cid, g_free); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
185 | g_clear_pointer(&api->did, g_free); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
186 | g_clear_pointer(&api->stoken, g_free); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
187 | g_clear_pointer(&api->token, g_free); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
188 | g_clear_pointer(&api->contacts_delta, g_free); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
189 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
190 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
191 | static void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
192 | fb_api_class_init(FbApiClass *klass) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
193 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
194 | GObjectClass *gklass = G_OBJECT_CLASS(klass); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
195 | GParamSpec *props[PROP_N] = {NULL}; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
196 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
197 | gklass->set_property = fb_api_set_property; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
198 | gklass->get_property = fb_api_get_property; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
199 | gklass->dispose = fb_api_dispose; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
200 | |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
201 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
202 | * FbApi:cid: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
203 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
204 | * The client identifier for MQTT. This value should be saved |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
205 | * and loaded for persistence. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
206 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
207 | props[PROP_CID] = g_param_spec_string( |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
208 | "cid", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
209 | "Client ID", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
210 | "Client identifier for MQTT", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
211 | NULL, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
212 | G_PARAM_READWRITE); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
213 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
214 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
215 | * FbApi:did: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
216 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
217 | * The device identifier for the MQTT message queue. This value |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
218 | * should be saved and loaded for persistence. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
219 | */ |
|
37253
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
220 | props[PROP_DID] = g_param_spec_string( |
|
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
221 | "did", |
|
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
222 | "Device ID", |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
223 | "Device identifier for the MQTT message queue", |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
224 | NULL, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
225 | G_PARAM_READWRITE); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
226 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
227 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
228 | * FbApi:mid: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
229 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
230 | * The MQTT identifier. This value should be saved and loaded |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
231 | * for persistence. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
232 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
233 | props[PROP_MID] = g_param_spec_uint64( |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
234 | "mid", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
235 | "MQTT ID", |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
236 | "MQTT identifier", |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
237 | 0, G_MAXUINT64, 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
238 | G_PARAM_READWRITE); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
239 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
240 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
241 | * FbApi:stoken: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
242 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
243 | * The synchronization token for the MQTT message queue. This |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
244 | * value should be saved and loaded for persistence. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
245 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
246 | props[PROP_STOKEN] = g_param_spec_string( |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
247 | "stoken", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
248 | "Sync Token", |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
249 | "Synchronization token for the MQTT message queue", |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
250 | NULL, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
251 | G_PARAM_READWRITE); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
252 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
253 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
254 | * FbApi:token: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
255 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
256 | * The access token for authentication. This value should be |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
257 | * saved and loaded for persistence. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
258 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
259 | props[PROP_TOKEN] = g_param_spec_string( |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
260 | "token", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
261 | "Access Token", |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
262 | "Access token for authentication", |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
263 | NULL, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
264 | G_PARAM_READWRITE); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
265 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
266 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
267 | * FbApi:uid: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
268 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
269 | * The #FbId of the user of the #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
270 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
271 | props[PROP_UID] = g_param_spec_int64( |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
272 | "uid", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
273 | "User ID", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
274 | "User identifier", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
275 | 0, G_MAXINT64, 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
276 | G_PARAM_READWRITE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
277 | g_object_class_install_properties(gklass, PROP_N, props); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
278 | |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
279 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
280 | * FbApi::auth: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
281 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
282 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
283 | * Emitted upon the successful completion of the authentication |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
284 | * process. This is emitted as a result of #fb_api_auth(). |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
285 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
286 | g_signal_new("auth", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
287 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
288 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
289 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
290 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
291 | G_TYPE_NONE, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
292 | 0); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
293 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
294 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
295 | * FbApi::connect: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
296 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
297 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
298 | * Emitted upon the successful completion of the connection |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
299 | * process. This is emitted as a result of #fb_api_connect(). |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
300 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
301 | g_signal_new("connect", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
302 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
303 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
304 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
305 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
306 | G_TYPE_NONE, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
307 | 0); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
308 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
309 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
310 | * FbApi::contact: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
311 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
312 | * @user: The #FbApiUser. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
313 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
314 | * Emitted upon the successful reply of a contact request. This |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
315 | * is emitted as a result of #fb_api_contact(). |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
316 | */ |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
317 | g_signal_new("contact", |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
318 | G_TYPE_FROM_CLASS(klass), |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
319 | G_SIGNAL_ACTION, |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
320 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
321 | NULL, NULL, NULL, |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
322 | G_TYPE_NONE, |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
323 | 1, G_TYPE_POINTER); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
324 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
325 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
326 | * FbApi::contacts: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
327 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
328 | * @users: The #GSList of #FbApiUser's. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
329 | * @complete: #TRUE if the list is fetched, otherwise #FALSE. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
330 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
331 | * Emitted upon the successful reply of a contacts request. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
332 | * This is emitted as a result of #fb_api_contacts(). This can |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
333 | * be emitted multiple times before the entire contacts list |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
334 | * has been fetched. Use @complete for detecting the completion |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
335 | * status of the list fetch. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
336 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
337 | g_signal_new("contacts", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
338 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
339 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
340 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
341 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
342 | G_TYPE_NONE, |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
343 | 2, G_TYPE_POINTER, G_TYPE_BOOLEAN); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
344 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
345 | /** |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
346 | * FbApi::contacts-delta: |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
347 | * @api: The #FbApi. |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
348 | * @added: The #GSList of added #FbApiUser's. |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
349 | * @removed: The #GSList of strings with removed user ids. |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
350 | * |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
351 | * Like 'contacts', but only the deltas. |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
352 | */ |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
353 | g_signal_new("contacts-delta", |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
354 | G_TYPE_FROM_CLASS(klass), |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
355 | G_SIGNAL_ACTION, |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
356 | 0, |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
357 | NULL, NULL, NULL, |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
358 | G_TYPE_NONE, |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
359 | 2, G_TYPE_POINTER, G_TYPE_POINTER); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
360 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
361 | /** |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
362 | * FbApi::error: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
363 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
364 | * @error: The #GError. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
365 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
366 | * Emitted whenever an error is hit within the #FbApi. This |
|
37378
0e87176c6292
facebook: do not auto close the MQTT connection on error
James Geboski <jgeboski@gmail.com>
parents:
37377
diff
changeset
|
367 | * should disconnect the #FbApi with #fb_api_disconnect(). |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
368 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
369 | g_signal_new("error", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
370 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
371 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
372 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
373 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
374 | G_TYPE_NONE, |
|
38401
fb78a9b724e0
facebook: Fix return type of "error" signal
dx <dx@dxzone.com.ar>
parents:
38400
diff
changeset
|
375 | 1, G_TYPE_POINTER); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
376 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
377 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
378 | * FbApi::events: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
379 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
380 | * @events: The #GSList of #FbApiEvent's. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
381 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
382 | * Emitted upon incoming events from the stream. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
383 | */ |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
384 | g_signal_new("events", |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
385 | G_TYPE_FROM_CLASS(klass), |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
386 | G_SIGNAL_ACTION, |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
387 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
388 | NULL, NULL, NULL, |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
389 | G_TYPE_NONE, |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
390 | 1, G_TYPE_POINTER); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
391 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
392 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
393 | * FbApi::messages: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
394 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
395 | * @msgs: The #GSList of #FbApiMessage's. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
396 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
397 | * Emitted upon incoming messages from the stream. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
398 | */ |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
399 | g_signal_new("messages", |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
400 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
401 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
402 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
403 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
404 | G_TYPE_NONE, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
405 | 1, G_TYPE_POINTER); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
406 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
407 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
408 | * FbApi::presences: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
409 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
410 | * @press: The #GSList of #FbApiPresence's. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
411 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
412 | * Emitted upon incoming presences from the stream. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
413 | */ |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
414 | g_signal_new("presences", |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
415 | G_TYPE_FROM_CLASS(klass), |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
416 | G_SIGNAL_ACTION, |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
417 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
418 | NULL, NULL, NULL, |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
419 | G_TYPE_NONE, |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
420 | 1, G_TYPE_POINTER); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
421 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
422 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
423 | * FbApi::thread: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
424 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
425 | * @thrd: The #FbApiThread. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
426 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
427 | * Emitted upon the successful reply of a thread request. This |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
428 | * is emitted as a result of #fb_api_thread(). |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
429 | */ |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
430 | g_signal_new("thread", |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
431 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
432 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
433 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
434 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
435 | G_TYPE_NONE, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
436 | 1, G_TYPE_POINTER); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
437 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
438 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
439 | * FbApi::thread-create: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
440 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
441 | * @tid: The thread #FbId. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
442 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
443 | * Emitted upon the successful reply of a thread creation |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
444 | * request. This is emitted as a result of |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
445 | * #fb_api_thread_create(). |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
446 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
447 | g_signal_new("thread-create", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
448 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
449 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
450 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
451 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
452 | G_TYPE_NONE, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
453 | 1, FB_TYPE_ID); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
454 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
455 | /** |
|
38390
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
456 | * FbApi::thread-kicked: |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
457 | * @api: The #FbApi. |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
458 | * @thrd: The #FbApiThread. |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
459 | * |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
460 | * Emitted upon the reply of a thread request when the user is no longer |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
461 | * part of that thread. This is emitted as a result of #fb_api_thread(). |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
462 | */ |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
463 | g_signal_new("thread-kicked", |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
464 | G_TYPE_FROM_CLASS(klass), |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
465 | G_SIGNAL_ACTION, |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
466 | 0, |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
467 | NULL, NULL, NULL, |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
468 | G_TYPE_NONE, |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
469 | 1, G_TYPE_POINTER); |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
470 | |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
471 | /** |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
472 | * FbApi::threads: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
473 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
474 | * @thrds: The #GSList of #FbApiThread's. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
475 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
476 | * Emitted upon the successful reply of a threads request. This |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
477 | * is emitted as a result of #fb_api_threads(). |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
478 | */ |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
479 | g_signal_new("threads", |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
480 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
481 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
482 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
483 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
484 | G_TYPE_NONE, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
485 | 1, G_TYPE_POINTER); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
486 | |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
487 | /** |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
488 | * FbApi::typing: |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
489 | * @api: The #FbApi. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
490 | * @typg: The #FbApiTyping. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
491 | * |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
492 | * Emitted upon an incoming typing state from the stream. |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
493 | */ |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
494 | g_signal_new("typing", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
495 | G_TYPE_FROM_CLASS(klass), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
496 | G_SIGNAL_ACTION, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
497 | 0, |
|
38364
9918b8ed5203
facebook: Use generic marshaller for GObject signals
Mike Ruprecht <cmaiku@gmail.com>
parents:
38187
diff
changeset
|
498 | NULL, NULL, NULL, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
499 | G_TYPE_NONE, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
500 | 1, G_TYPE_POINTER); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
501 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
502 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
503 | static void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
504 | fb_api_init(FbApi *api) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
505 | { |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
506 | api->msgs = g_queue_new(); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
507 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
508 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
509 | GQuark |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
510 | fb_api_error_quark(void) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
511 | { |
|
37252
be11d9f148a6
facebook: initialize static GQuarks
James Geboski <jgeboski@gmail.com>
parents:
37250
diff
changeset
|
512 | static GQuark q = 0; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
513 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
514 | if (G_UNLIKELY(q == 0)) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
515 | q = g_quark_from_static_string("fb-api-error-quark"); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
516 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
517 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
518 | return q; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
519 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
520 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
521 | static gboolean |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
522 | fb_api_json_chk(FbApi *api, gconstpointer data, gssize size, JsonNode **node) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
523 | { |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
524 | const gchar *str; |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
525 | FbApiError errc = FB_API_ERROR_GENERAL; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
526 | FbJsonValues *values; |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
527 | gboolean success = TRUE; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
528 | gchar *msg; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
529 | GError *err = NULL; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
530 | gint64 code; |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
531 | guint i; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
532 | JsonNode *root; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
533 | |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
534 | static const gchar *exprs[] = { |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
535 | "$.error.message", |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
536 | "$.error.summary", |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
537 | "$.error_msg", |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
538 | "$.errorCode", |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
539 | "$.failedSend.errorMessage", |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
540 | }; |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
541 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
542 | g_return_val_if_fail(FB_IS_API(api), FALSE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
543 | |
|
37287
358b11b0a793
facebook: fixed parsing of empty JSON data
James Geboski <jgeboski@gmail.com>
parents:
37285
diff
changeset
|
544 | if (G_UNLIKELY(size == 0)) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
545 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, _("Empty JSON data")); |
|
37312
d6cb70301fea
facebook: refactored error propagation
James Geboski <jgeboski@gmail.com>
parents:
37309
diff
changeset
|
546 | return FALSE; |
|
37287
358b11b0a793
facebook: fixed parsing of empty JSON data
James Geboski <jgeboski@gmail.com>
parents:
37285
diff
changeset
|
547 | } |
|
358b11b0a793
facebook: fixed parsing of empty JSON data
James Geboski <jgeboski@gmail.com>
parents:
37285
diff
changeset
|
548 | |
|
37339
61105b311c1f
facebook: use proper debugging utility for JSON data
James Geboski <jgeboski@gmail.com>
parents:
37338
diff
changeset
|
549 | fb_util_debug(FB_UTIL_DEBUG_INFO, "Parsing JSON: %.*s\n", |
|
61105b311c1f
facebook: use proper debugging utility for JSON data
James Geboski <jgeboski@gmail.com>
parents:
37338
diff
changeset
|
550 | (gint) size, (const gchar *) data); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
551 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
552 | root = fb_json_node_new(data, size, &err); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
553 | FB_API_ERROR_EMIT(api, err, return FALSE); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
554 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
555 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
556 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, "$.error_code"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
557 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.error.type"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
558 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.errorCode"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
559 | fb_json_values_update(values, &err); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
560 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
561 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
562 | g_object_unref(values); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
563 | json_node_free(root); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
564 | return FALSE |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
565 | ); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
566 | |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
567 | code = fb_json_values_next_int(values, 0); |
|
37372
60583804399d
facebook: use NULL not 0
James Geboski <jgeboski@gmail.com>
parents:
37370
diff
changeset
|
568 | str = fb_json_values_next_str(values, NULL); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
569 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
570 | if (purple_strequal(str, "OAuthException") || (code == 401)) { |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
571 | errc = FB_API_ERROR_AUTH; |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
572 | success = FALSE; |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
573 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
574 | g_clear_pointer(&api->stoken, g_free); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
575 | g_clear_pointer(&api->token, g_free); |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
576 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
577 | |
|
38185
955dcca1ac3d
facebook: Prevent disconnections on 509 errors, "Invalid attachment id"
dequis <dx@dxzone.com.ar>
parents:
38184
diff
changeset
|
578 | /* 509 is used for "invalid attachment id" */ |
|
955dcca1ac3d
facebook: Prevent disconnections on 509 errors, "Invalid attachment id"
dequis <dx@dxzone.com.ar>
parents:
38184
diff
changeset
|
579 | if (code == 509) { |
|
955dcca1ac3d
facebook: Prevent disconnections on 509 errors, "Invalid attachment id"
dequis <dx@dxzone.com.ar>
parents:
38184
diff
changeset
|
580 | errc = FB_API_ERROR_NONFATAL; |
|
955dcca1ac3d
facebook: Prevent disconnections on 509 errors, "Invalid attachment id"
dequis <dx@dxzone.com.ar>
parents:
38184
diff
changeset
|
581 | success = FALSE; |
|
955dcca1ac3d
facebook: Prevent disconnections on 509 errors, "Invalid attachment id"
dequis <dx@dxzone.com.ar>
parents:
38184
diff
changeset
|
582 | } |
|
955dcca1ac3d
facebook: Prevent disconnections on 509 errors, "Invalid attachment id"
dequis <dx@dxzone.com.ar>
parents:
38184
diff
changeset
|
583 | |
|
37372
60583804399d
facebook: use NULL not 0
James Geboski <jgeboski@gmail.com>
parents:
37370
diff
changeset
|
584 | str = fb_json_values_next_str(values, NULL); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
585 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
586 | if (purple_strequal(str, "ERROR_QUEUE_NOT_FOUND") || |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
587 | purple_strequal(str, "ERROR_QUEUE_LOST")) |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
588 | { |
|
37377
c92bc4233941
facebook: fixed improper handling of queue errors
James Geboski <jgeboski@gmail.com>
parents:
37376
diff
changeset
|
589 | errc = FB_API_ERROR_QUEUE; |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
590 | success = FALSE; |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
591 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
592 | g_clear_pointer(&api->stoken, g_free); |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
593 | } |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
594 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
595 | g_object_unref(values); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
596 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
597 | for (msg = NULL, i = 0; i < G_N_ELEMENTS(exprs); i++) { |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
598 | msg = fb_json_node_get_str(root, exprs[i], NULL); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
599 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
600 | if (msg != NULL) { |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
601 | success = FALSE; |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
602 | break; |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
603 | } |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
604 | } |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
605 | |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
606 | if (!success && (msg == NULL)) { |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
607 | msg = g_strdup(_("Unknown error")); |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
608 | } |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
609 | |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
610 | if (msg != NULL) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
611 | fb_api_error_literal(api, errc, msg); |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
612 | json_node_free(root); |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
613 | g_free(msg); |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
614 | return FALSE; |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
615 | } |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
616 | |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
617 | if (node != NULL) { |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
618 | *node = root; |
|
37262
510e0ad7dfea
facebook: prevent potential memory leak
James Geboski <jgeboski@gmail.com>
parents:
37261
diff
changeset
|
619 | } else { |
|
510e0ad7dfea
facebook: prevent potential memory leak
James Geboski <jgeboski@gmail.com>
parents:
37261
diff
changeset
|
620 | json_node_free(root); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
621 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
622 | |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
623 | return TRUE; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
624 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
625 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
626 | static gboolean |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
627 | fb_api_http_chk(FbApi *api, SoupSession *session, GAsyncResult *result, |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
628 | SoupMessage *msg, JsonNode **root) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
629 | { |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
630 | GBytes *response_body = NULL; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
631 | const gchar *reason = NULL; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
632 | const gchar *data = NULL; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
633 | GError *err = NULL; |
|
37296
1da02f9677f8
facebook: added HTTP status to debug messages
James Geboski <jgeboski@gmail.com>
parents:
37295
diff
changeset
|
634 | gint code; |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
635 | gsize size = 0; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
636 | |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
637 | reason = soup_message_get_reason_phrase(msg); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
638 | code = soup_message_get_status(msg); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
639 | |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
640 | fb_util_debug(FB_UTIL_DEBUG_INFO, "HTTP Response (%p):", msg); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
641 | if (reason != NULL) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
642 | fb_util_debug(FB_UTIL_DEBUG_INFO, " Response Error: %s (%d)", reason, |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
643 | code); |
|
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
644 | } else { |
|
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
645 | fb_util_debug(FB_UTIL_DEBUG_INFO, " Response Error: %d", code); |
|
37366
1cbcea2165c1
facebook: ignore canceling HTTP requests
James Geboski <jgeboski@gmail.com>
parents:
37365
diff
changeset
|
646 | } |
|
1cbcea2165c1
facebook: ignore canceling HTTP requests
James Geboski <jgeboski@gmail.com>
parents:
37365
diff
changeset
|
647 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
648 | if (fb_http_error_chk(msg, &err) && (root == NULL)) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
649 | return TRUE; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
650 | } |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
651 | |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
652 | response_body = soup_session_send_and_read_finish(session, result, &err); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
653 | if(response_body != NULL) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
654 | data = g_bytes_get_data(response_body, &size); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
655 | } |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
656 | |
|
37297
305f27dd23c0
facebook: fixed dumping of empty HTTP data
James Geboski <jgeboski@gmail.com>
parents:
37296
diff
changeset
|
657 | if (G_LIKELY(size > 0)) { |
|
305f27dd23c0
facebook: fixed dumping of empty HTTP data
James Geboski <jgeboski@gmail.com>
parents:
37296
diff
changeset
|
658 | fb_util_debug(FB_UTIL_DEBUG_INFO, " Response Data: %.*s", |
|
305f27dd23c0
facebook: fixed dumping of empty HTTP data
James Geboski <jgeboski@gmail.com>
parents:
37296
diff
changeset
|
659 | (gint) size, data); |
|
305f27dd23c0
facebook: fixed dumping of empty HTTP data
James Geboski <jgeboski@gmail.com>
parents:
37296
diff
changeset
|
660 | } |
|
305f27dd23c0
facebook: fixed dumping of empty HTTP data
James Geboski <jgeboski@gmail.com>
parents:
37296
diff
changeset
|
661 | |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
662 | /* Rudimentary check to prevent wrongful error parsing */ |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
663 | if ((size < 2) || (data[0] != '{') || (data[size - 1] != '}')) { |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
664 | FB_API_ERROR_EMIT(api, err, return FALSE); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
665 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
666 | |
|
37367
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
667 | if (!fb_api_json_chk(api, data, size, root)) { |
|
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
668 | if (G_UNLIKELY(err != NULL)) { |
|
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
669 | g_error_free(err); |
|
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
670 | } |
|
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
671 | |
|
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
672 | return FALSE; |
|
37306
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
673 | } |
|
7c454f51b56b
facebook: handle authentication errors
James Geboski <jgeboski@gmail.com>
parents:
37304
diff
changeset
|
674 | |
|
37367
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
675 | FB_API_ERROR_EMIT(api, err, return FALSE); |
|
e0df3850e9c2
facebook: fixed memory leak with HTTP error checking
James Geboski <jgeboski@gmail.com>
parents:
37366
diff
changeset
|
676 | return TRUE; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
677 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
678 | |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
679 | static SoupMessage * |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
680 | fb_api_http_req(FbApi *api, const gchar *url, const gchar *name, |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
681 | const gchar *method, FbHttpParams *params, |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
682 | GAsyncReadyCallback callback) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
683 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
684 | gchar *data; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
685 | gchar *key; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
686 | gchar *val; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
687 | GList *keys; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
688 | GList *l; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
689 | GString *gstr; |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
690 | SoupMessage *msg; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
691 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
692 | fb_http_params_set_str(params, "api_key", FB_API_KEY); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
693 | fb_http_params_set_str(params, "device_id", api->did); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
694 | fb_http_params_set_str(params, "fb_api_req_friendly_name", name); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
695 | fb_http_params_set_str(params, "format", "json"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
696 | fb_http_params_set_str(params, "method", method); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
697 | |
|
37416
77536a48b4be
facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents:
37414
diff
changeset
|
698 | val = fb_util_get_locale(); |
|
37260
473934b0c408
facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents:
37259
diff
changeset
|
699 | fb_http_params_set_str(params, "locale", val); |
|
473934b0c408
facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents:
37259
diff
changeset
|
700 | g_free(val); |
|
473934b0c408
facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents:
37259
diff
changeset
|
701 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
702 | /* Ensure an old signature is not computed */ |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
703 | g_hash_table_remove(params, "sig"); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
704 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
705 | gstr = g_string_new(NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
706 | keys = g_hash_table_get_keys(params); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
707 | keys = g_list_sort(keys, (GCompareFunc) g_ascii_strcasecmp); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
708 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
709 | for (l = keys; l != NULL; l = l->next) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
710 | key = l->data; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
711 | val = g_hash_table_lookup(params, key); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
712 | g_string_append_printf(gstr, "%s=%s", key, val); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
713 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
714 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
715 | g_string_append(gstr, FB_API_SECRET); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
716 | data = g_compute_checksum_for_string(G_CHECKSUM_MD5, gstr->str, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
717 | gstr->len); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
718 | fb_http_params_set_str(params, "sig", data); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
719 | g_string_free(gstr, TRUE); |
|
37300
565fbae05259
facebook: fixed memory leak from HTTP requesting
James Geboski <jgeboski@gmail.com>
parents:
37299
diff
changeset
|
720 | g_list_free(keys); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
721 | g_free(data); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
722 | |
|
41216
5c4269ad7ee4
Replace the removed soup_form_request_new API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41214
diff
changeset
|
723 | msg = soup_message_new_from_encoded_form("POST", url, soup_form_encode_hash(params)); |
|
40035
d59a2f6c170f
Cut down on FbHttpParams code using libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40033
diff
changeset
|
724 | fb_http_params_free(params); |
|
d59a2f6c170f
Cut down on FbHttpParams code using libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40033
diff
changeset
|
725 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
726 | if (api->token != NULL) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
727 | data = g_strdup_printf("OAuth %s", api->token); |
|
41214
b0b7d118475f
Use accessor for SoupMessage->request_headers
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
41213
diff
changeset
|
728 | 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:
41213
diff
changeset
|
729 | "Authorization", data); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
730 | g_free(data); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
731 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
732 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
733 | g_object_set_data(G_OBJECT(msg), "facebook-api", api); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
734 | soup_session_send_and_read_async(api->cons, msg, G_PRIORITY_DEFAULT, NULL, |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
735 | callback, msg); |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
736 | |
|
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
737 | fb_util_debug(FB_UTIL_DEBUG_INFO, "HTTP Request (%p):", msg); |
|
37295
4098e875ebcb
facebook: added HTTP debug messages
James Geboski <jgeboski@gmail.com>
parents:
37287
diff
changeset
|
738 | fb_util_debug(FB_UTIL_DEBUG_INFO, " Request URL: %s", url); |
|
4098e875ebcb
facebook: added HTTP debug messages
James Geboski <jgeboski@gmail.com>
parents:
37287
diff
changeset
|
739 | |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
740 | return msg; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
741 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
742 | |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
743 | static SoupMessage * |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
744 | fb_api_http_query(FbApi *api, gint64 query, JsonBuilder *builder, |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
745 | GAsyncReadyCallback hcb) |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
746 | { |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
747 | const gchar *name; |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
748 | FbHttpParams *prms; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
749 | gchar *json; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
750 | |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
751 | switch (query) { |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
752 | case FB_API_QUERY_CONTACT: |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
753 | name = "UsersQuery"; |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
754 | break; |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
755 | case FB_API_QUERY_CONTACTS: |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
756 | name = "FetchContactsFullQuery"; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
757 | break; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
758 | case FB_API_QUERY_CONTACTS_AFTER: |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
759 | name = "FetchContactsFullWithAfterQuery"; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
760 | break; |
|
38392
f2ec33df3b4a
facebook: Update some graphql query hashes
dx <dx@dxzone.com.ar>
parents:
38391
diff
changeset
|
761 | case FB_API_QUERY_CONTACTS_DELTA: |
|
f2ec33df3b4a
facebook: Update some graphql query hashes
dx <dx@dxzone.com.ar>
parents:
38391
diff
changeset
|
762 | name = "FetchContactsDeltaQuery"; |
|
f2ec33df3b4a
facebook: Update some graphql query hashes
dx <dx@dxzone.com.ar>
parents:
38391
diff
changeset
|
763 | break; |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
764 | case FB_API_QUERY_STICKER: |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
765 | name = "FetchStickersWithPreviewsQuery"; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
766 | break; |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
767 | case FB_API_QUERY_THREAD: |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
768 | name = "ThreadQuery"; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
769 | break; |
|
38386
852ce119c395
facebook: Add new ThreadListQuery-like hash, for initial seq id only
dx <dx@dxzone.com.ar>
parents:
38385
diff
changeset
|
770 | case FB_API_QUERY_SEQ_ID: |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
771 | case FB_API_QUERY_THREADS: |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
772 | name = "ThreadListQuery"; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
773 | break; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
774 | case FB_API_QUERY_XMA: |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
775 | name = "XMAQuery"; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
776 | break; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
777 | default: |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
778 | g_return_val_if_reached(NULL); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
779 | return NULL; |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
780 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
781 | |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
782 | prms = fb_http_params_new(); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
783 | json = fb_json_bldr_close(builder, JSON_NODE_OBJECT, NULL); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
784 | |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
785 | fb_http_params_set_strf(prms, "query_id", "%" G_GINT64_FORMAT, query); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
786 | fb_http_params_set_str(prms, "query_params", json); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
787 | g_free(json); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
788 | |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
789 | return fb_api_http_req(api, FB_API_URL_GQL, name, "get", prms, hcb); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
790 | } |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
791 | |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
792 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
793 | fb_api_cb_http_bool(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
794 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
795 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
796 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
797 | JsonNode *root; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
798 | |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
799 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
800 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
801 | return; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
802 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
803 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
804 | if (!json_node_get_boolean(root)) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
805 | fb_api_error_literal(api, FB_API_ERROR, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
806 | _("Failed generic API operation")); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
807 | } |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
808 | |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
809 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
810 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
811 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
812 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
813 | static void |
|
41969
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
814 | fb_api_cb_mqtt_error(G_GNUC_UNUSED FbMqtt *mqtt, GError *error, gpointer data) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
815 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
816 | FbApi *api = data; |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
817 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
818 | if (!api->retrying) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
819 | api->retrying = TRUE; |
|
37512
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
820 | fb_util_debug_info("Attempting to reconnect the MQTT stream..."); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
821 | fb_api_connect(api, api->invisible); |
|
37512
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
822 | } else { |
|
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
823 | g_signal_emit_by_name(api, "error", error); |
|
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
824 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
825 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
826 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
827 | static void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
828 | fb_api_cb_mqtt_open(FbMqtt *mqtt, gpointer data) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
829 | { |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
830 | const GByteArray *bytes; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
831 | FbApi *api = data; |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
832 | FbThrift *thft; |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
833 | GByteArray *cytes; |
|
37414
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
834 | GError *err = NULL; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
835 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
836 | static guint8 flags = FB_MQTT_CONNECT_FLAG_USER | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
837 | FB_MQTT_CONNECT_FLAG_PASS | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
838 | FB_MQTT_CONNECT_FLAG_CLR; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
839 | |
|
37331
9cd963f45997
facebook: removed binary thrift support
James Geboski <jgeboski@gmail.com>
parents:
37330
diff
changeset
|
840 | thft = fb_thrift_new(NULL, 0); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
841 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
842 | /* Write the client identifier */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
843 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_STRING, 1, 0); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
844 | fb_thrift_write_str(thft, api->cid); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
845 | |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
846 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_STRUCT, 4, 1); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
847 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
848 | /* Write the user identifier */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
849 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_I64, 1, 0); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
850 | fb_thrift_write_i64(thft, api->uid); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
851 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
852 | /* Write the information string */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
853 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_STRING, 2, 1); |
|
38385
2b5c96a9dd53
facebook: Send user agent strings in all HTTP requests and in MQTT connect
dx <dx@dxzone.com.ar>
parents:
38364
diff
changeset
|
854 | fb_thrift_write_str(thft, FB_API_MQTT_AGENT); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
855 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
856 | /* Write the UNKNOWN ("cp"?) */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
857 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_I64, 3, 2); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
858 | fb_thrift_write_i64(thft, 23); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
859 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
860 | /* Write the UNKNOWN ("ecp"?) */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
861 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_I64, 4, 3); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
862 | fb_thrift_write_i64(thft, 26); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
863 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
864 | /* Write the UNKNOWN */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
865 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_I32, 5, 4); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
866 | fb_thrift_write_i32(thft, 1); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
867 | |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
868 | /* Write the UNKNOWN ("no_auto_fg"?) */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
869 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_BOOL, 6, 5); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
870 | fb_thrift_write_bool(thft, TRUE); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
871 | |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
872 | /* Write the visibility state */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
873 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_BOOL, 7, 6); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
874 | fb_thrift_write_bool(thft, !api->invisible); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
875 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
876 | /* Write the device identifier */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
877 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_STRING, 8, 7); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
878 | fb_thrift_write_str(thft, api->did); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
879 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
880 | /* Write the UNKNOWN ("fg"?) */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
881 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_BOOL, 9, 8); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
882 | fb_thrift_write_bool(thft, TRUE); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
883 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
884 | /* Write the UNKNOWN ("nwt"?) */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
885 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_I32, 10, 9); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
886 | fb_thrift_write_i32(thft, 1); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
887 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
888 | /* Write the UNKNOWN ("nwst"?) */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
889 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_I32, 11, 10); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
890 | fb_thrift_write_i32(thft, 0); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
891 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
892 | /* Write the MQTT identifier */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
893 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_I64, 12, 11); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
894 | fb_thrift_write_i64(thft, api->mid); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
895 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
896 | /* Write the UNKNOWN */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
897 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_LIST, 14, 12); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
898 | fb_thrift_write_list(thft, FB_THRIFT_TYPE_I32, 0); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
899 | fb_thrift_write_stop(thft); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
900 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
901 | /* Write the token */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
902 | fb_thrift_write_field(thft, FB_THRIFT_TYPE_STRING, 15, 14); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
903 | fb_thrift_write_str(thft, api->token); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
904 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
905 | /* Write the STOP for the struct */ |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
906 | fb_thrift_write_stop(thft); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
907 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
908 | bytes = fb_thrift_get_bytes(thft); |
|
37416
77536a48b4be
facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents:
37414
diff
changeset
|
909 | cytes = fb_util_zlib_deflate(bytes, &err); |
|
37414
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
910 | |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
911 | FB_API_ERROR_EMIT(api, err, |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
912 | g_object_unref(thft); |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
913 | return; |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
914 | ); |
|
37327
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
915 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
916 | fb_util_debug_hexdump(FB_UTIL_DEBUG_INFO, bytes, "Writing connect"); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
917 | fb_mqtt_connect(mqtt, flags, cytes); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
918 | |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
919 | g_byte_array_free(cytes, TRUE); |
|
68220e4ccb15
facebook: upgraded MQTT version to MQTToT
James Geboski <jgeboski@gmail.com>
parents:
37326
diff
changeset
|
920 | g_object_unref(thft); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
921 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
922 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
923 | static void |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
924 | fb_api_connect_queue(FbApi *api) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
925 | { |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
926 | FbApiMessage *msg; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
927 | gchar *json; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
928 | JsonBuilder *bldr; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
929 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
930 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
931 | fb_json_bldr_add_int(bldr, "delta_batch_size", 125); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
932 | fb_json_bldr_add_int(bldr, "max_deltas_able_to_process", 1250); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
933 | fb_json_bldr_add_int(bldr, "sync_api_version", 3); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
934 | fb_json_bldr_add_str(bldr, "encoding", "JSON"); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
935 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
936 | if (api->stoken == NULL) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
937 | fb_json_bldr_add_int(bldr, "initial_titan_sequence_id", api->sid); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
938 | fb_json_bldr_add_str(bldr, "device_id", api->did); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
939 | fb_json_bldr_add_int(bldr, "entity_fbid", api->uid); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
940 | |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
941 | fb_json_bldr_obj_begin(bldr, "queue_params"); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
942 | fb_json_bldr_add_str(bldr, "buzz_on_deltas_enabled", "false"); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
943 | |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
944 | fb_json_bldr_obj_begin(bldr, "graphql_query_hashes"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
945 | fb_json_bldr_add_str(bldr, "xma_query_id", |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
946 | G_STRINGIFY(FB_API_QUERY_XMA)); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
947 | fb_json_bldr_obj_end(bldr); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
948 | |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
949 | fb_json_bldr_obj_begin(bldr, "graphql_query_params"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
950 | fb_json_bldr_obj_begin(bldr, G_STRINGIFY(FB_API_QUERY_XMA)); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
951 | fb_json_bldr_add_str(bldr, "xma_id", "<ID>"); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
952 | fb_json_bldr_obj_end(bldr); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
953 | fb_json_bldr_obj_end(bldr); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
954 | fb_json_bldr_obj_end(bldr); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
955 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
956 | json = fb_json_bldr_close(bldr, JSON_NODE_OBJECT, NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
957 | fb_api_publish(api, "/messenger_sync_create_queue", "%s", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
958 | json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
959 | g_free(json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
960 | return; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
961 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
962 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
963 | fb_json_bldr_add_int(bldr, "last_seq_id", api->sid); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
964 | fb_json_bldr_add_str(bldr, "sync_token", api->stoken); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
965 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
966 | json = fb_json_bldr_close(bldr, JSON_NODE_OBJECT, NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
967 | fb_api_publish(api, "/messenger_sync_get_diffs", "%s", json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
968 | g_signal_emit_by_name(api, "connect"); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
969 | g_free(json); |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
970 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
971 | if (!g_queue_is_empty(api->msgs)) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
972 | msg = g_queue_peek_head(api->msgs); |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
973 | fb_api_message_send(api, msg); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
974 | } |
|
37512
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
975 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
976 | if (api->retrying) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
977 | api->retrying = FALSE; |
|
37512
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
978 | fb_util_debug_info("Reconnected the MQTT stream"); |
|
45f10c23412d
facebook: attempt to silently reconnect the MQTT stream
James Geboski <jgeboski@gmail.com>
parents:
37511
diff
changeset
|
979 | } |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
980 | } |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
981 | |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
982 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
983 | fb_api_cb_seqid(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
984 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
985 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
986 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
987 | const gchar *str; |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
988 | FbJsonValues *values; |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
989 | GError *err = NULL; |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
990 | JsonNode *root; |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
991 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
992 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
993 | g_object_unref(soupmsg); |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
994 | return; |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
995 | } |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
996 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
997 | values = fb_json_values_new(root); |
|
38388
24fcaf625943
facebook: Change error message when sync_sequence_id is missing, for clarity
dx <dx@dxzone.com.ar>
parents:
38387
diff
changeset
|
998 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
999 | "$.viewer.message_threads.sync_sequence_id"); |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1000 | fb_json_values_add(values, FB_JSON_TYPE_INT, TRUE, |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1001 | "$.viewer.message_threads.unread_count"); |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1002 | fb_json_values_update(values, &err); |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1003 | |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1004 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1005 | g_object_unref(values); |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1006 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
1007 | g_object_unref(soupmsg); |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1008 | return; |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1009 | ); |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1010 | |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1011 | str = fb_json_values_next_str(values, "0"); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1012 | api->sid = g_ascii_strtoll(str, NULL, 10); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1013 | api->unread = fb_json_values_next_int(values, 0); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1014 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1015 | if (api->sid == 0) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1016 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1017 | _("Failed to get sync_sequence_id")); |
|
38388
24fcaf625943
facebook: Change error message when sync_sequence_id is missing, for clarity
dx <dx@dxzone.com.ar>
parents:
38387
diff
changeset
|
1018 | } else { |
|
24fcaf625943
facebook: Change error message when sync_sequence_id is missing, for clarity
dx <dx@dxzone.com.ar>
parents:
38387
diff
changeset
|
1019 | fb_api_connect_queue(api); |
|
24fcaf625943
facebook: Change error message when sync_sequence_id is missing, for clarity
dx <dx@dxzone.com.ar>
parents:
38387
diff
changeset
|
1020 | } |
|
24fcaf625943
facebook: Change error message when sync_sequence_id is missing, for clarity
dx <dx@dxzone.com.ar>
parents:
38387
diff
changeset
|
1021 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1022 | g_object_unref(values); |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1023 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
1024 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1025 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1026 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1027 | static void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1028 | fb_api_cb_mqtt_connect(FbMqtt *mqtt, gpointer data) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1029 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1030 | FbApi *api = data; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1031 | gchar *json; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1032 | JsonBuilder *bldr; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1033 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1034 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1035 | fb_json_bldr_add_bool(bldr, "foreground", TRUE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1036 | fb_json_bldr_add_int(bldr, "keepalive_timeout", FB_MQTT_KA); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1037 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1038 | json = fb_json_bldr_close(bldr, JSON_NODE_OBJECT, NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1039 | fb_api_publish(api, "/foreground_state", "%s", json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1040 | g_free(json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1041 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1042 | fb_mqtt_subscribe(mqtt, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1043 | "/inbox", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1044 | "/mercury", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1045 | "/messaging_events", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1046 | "/orca_presence", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1047 | "/orca_typing_notifications", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1048 | "/pp", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1049 | "/t_ms", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1050 | "/t_p", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1051 | "/t_rtc", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1052 | "/webrtc", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1053 | "/webrtc_response", 0, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1054 | NULL |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1055 | ); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1056 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1057 | /* Notifications seem to lead to some sort of sending rate limit */ |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1058 | fb_mqtt_unsubscribe(mqtt, "/orca_message_notifications", NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1059 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1060 | if (api->sid == 0) { |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1061 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1062 | fb_json_bldr_add_str(bldr, "1", "0"); |
|
38386
852ce119c395
facebook: Add new ThreadListQuery-like hash, for initial seq id only
dx <dx@dxzone.com.ar>
parents:
38385
diff
changeset
|
1063 | fb_api_http_query(api, FB_API_QUERY_SEQ_ID, bldr, |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
1064 | fb_api_cb_seqid); |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1065 | } else { |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1066 | fb_api_connect_queue(api); |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1067 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1068 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1069 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1070 | static void |
|
37331
9cd963f45997
facebook: removed binary thrift support
James Geboski <jgeboski@gmail.com>
parents:
37330
diff
changeset
|
1071 | fb_api_cb_publish_mark(FbApi *api, GByteArray *pload) |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1072 | { |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1073 | FbJsonValues *values; |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1074 | GError *err = NULL; |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1075 | JsonNode *root; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1076 | |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1077 | if (!fb_api_json_chk(api, pload->data, pload->len, &root)) { |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1078 | return; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1079 | } |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1080 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
1081 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1082 | fb_json_values_add(values, FB_JSON_TYPE_BOOL, FALSE, "$.succeeded"); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1083 | fb_json_values_update(values, &err); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1084 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1085 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1086 | g_object_unref(values); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1087 | json_node_free(root); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1088 | return; |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1089 | ); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1090 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1091 | if (!fb_json_values_next_bool(values, TRUE)) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1092 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1093 | _("Failed to mark thread as read")); |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1094 | } |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1095 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1096 | g_object_unref(values); |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1097 | json_node_free(root); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1098 | } |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1099 | |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1100 | static GSList * |
|
41969
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
1101 | fb_api_event_parse(G_GNUC_UNUSED FbApi *api, FbApiEvent *event, GSList *events, |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1102 | JsonNode *root, GError **error) |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1103 | { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1104 | const gchar *str; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1105 | FbApiEvent *devent; |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1106 | FbJsonValues *values; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1107 | GError *err = NULL; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1108 | guint i; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1109 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1110 | static const struct { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1111 | FbApiEventType type; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1112 | const gchar *expr; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1113 | } evtypes[] = { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1114 | { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1115 | FB_API_EVENT_TYPE_THREAD_USER_ADDED, |
|
37385
43ac0ab4b1d0
facebook: fixed extra whitespacing
James Geboski <jgeboski@gmail.com>
parents:
37383
diff
changeset
|
1116 | "$.log_message_data.added_participants" |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1117 | }, { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1118 | FB_API_EVENT_TYPE_THREAD_USER_REMOVED, |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1119 | "$.log_message_data.removed_participants" |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1120 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1121 | }; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1122 | |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1123 | values = fb_json_values_new(root); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1124 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1125 | "$.log_message_type"); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1126 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.author"); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1127 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1128 | "$.log_message_data.name"); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1129 | fb_json_values_update(values, &err); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1130 | |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1131 | if (G_UNLIKELY(err != NULL)) { |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1132 | g_propagate_error(error, err); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1133 | g_object_unref(values); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1134 | return events; |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1135 | } |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1136 | |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1137 | str = fb_json_values_next_str(values, NULL); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1138 | |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1139 | if (g_strcmp0(str, "log:thread-name") == 0) { |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1140 | str = fb_json_values_next_str(values, ""); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1141 | str = strrchr(str, ':'); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1142 | |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1143 | if (str != NULL) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1144 | devent = g_new(FbApiEvent, 1); |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1145 | devent->type = FB_API_EVENT_TYPE_THREAD_TOPIC; |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1146 | devent->uid = FB_ID_FROM_STR(str + 1); |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1147 | devent->tid = event->tid; |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1148 | devent->text = fb_json_values_next_str_dup(values, NULL); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1149 | events = g_slist_prepend(events, devent); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1150 | } |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1151 | } |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1152 | |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1153 | g_object_unref(values); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1154 | |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1155 | for (i = 0; i < G_N_ELEMENTS(evtypes); i++) { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1156 | values = fb_json_values_new(root); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1157 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$"); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1158 | fb_json_values_set_array(values, FALSE, evtypes[i].expr); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1159 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1160 | while (fb_json_values_update(values, &err)) { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1161 | str = fb_json_values_next_str(values, ""); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1162 | str = strrchr(str, ':'); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1163 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1164 | if (str != NULL) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1165 | devent = g_new0(FbApiEvent, 1); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1166 | devent->type = evtypes[i].type; |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1167 | devent->uid = FB_ID_FROM_STR(str + 1); |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1168 | devent->tid = event->tid; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1169 | events = g_slist_prepend(events, devent); |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1170 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1171 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1172 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1173 | g_object_unref(values); |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1174 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1175 | if (G_UNLIKELY(err != NULL)) { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1176 | g_propagate_error(error, err); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1177 | break; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1178 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1179 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1180 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1181 | return events; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1182 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1183 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1184 | static void |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1185 | fb_api_cb_publish_mercury(FbApi *api, GByteArray *pload) |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1186 | { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1187 | const gchar *str; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1188 | FbApiEvent event; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1189 | FbJsonValues *values; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1190 | GError *err = NULL; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1191 | GSList *events = NULL; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1192 | JsonNode *root; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1193 | JsonNode *node; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1194 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1195 | if (!fb_api_json_chk(api, pload->data, pload->len, &root)) { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1196 | return; |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1197 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1198 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1199 | values = fb_json_values_new(root); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1200 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.thread_fbid"); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1201 | fb_json_values_set_array(values, FALSE, "$.actions"); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1202 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1203 | while (fb_json_values_update(values, &err)) { |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1204 | fb_api_event_reset(&event, FALSE); |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1205 | str = fb_json_values_next_str(values, "0"); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1206 | event.tid = FB_ID_FROM_STR(str); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1207 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1208 | node = fb_json_values_get_root(values); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1209 | events = fb_api_event_parse(api, &event, events, node, &err); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1210 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1211 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1212 | if (G_LIKELY(err == NULL)) { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1213 | events = g_slist_reverse(events); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1214 | g_signal_emit_by_name(api, "events", events); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1215 | } else { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1216 | fb_api_error_emit(api, err); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1217 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1218 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1219 | g_slist_free_full(events, (GDestroyNotify) fb_api_event_free); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1220 | g_object_unref(values); |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1221 | json_node_free(root); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1222 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1223 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
1224 | |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1225 | static void |
|
37331
9cd963f45997
facebook: removed binary thrift support
James Geboski <jgeboski@gmail.com>
parents:
37330
diff
changeset
|
1226 | fb_api_cb_publish_typing(FbApi *api, GByteArray *pload) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1227 | { |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1228 | const gchar *str; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1229 | FbApiTyping typg; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1230 | FbJsonValues *values; |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1231 | GError *err = NULL; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1232 | JsonNode *root; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1233 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1234 | if (!fb_api_json_chk(api, pload->data, pload->len, &root)) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1235 | return; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1236 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1237 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
1238 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1239 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.type"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1240 | fb_json_values_add(values, FB_JSON_TYPE_INT, TRUE, "$.sender_fbid"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1241 | fb_json_values_add(values, FB_JSON_TYPE_INT, TRUE, "$.state"); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1242 | fb_json_values_update(values, &err); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
1243 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1244 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1245 | g_object_unref(values); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1246 | json_node_free(root); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1247 | return; |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1248 | ); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1249 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1250 | str = fb_json_values_next_str(values, NULL); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1251 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1252 | if (g_ascii_strcasecmp(str, "typ") == 0) { |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1253 | typg.uid = fb_json_values_next_int(values, 0); |
|
37317
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1254 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1255 | if (typg.uid != api->uid) { |
|
37317
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1256 | typg.state = fb_json_values_next_int(values, 0); |
|
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1257 | g_signal_emit_by_name(api, "typing", &typg); |
|
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1258 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1259 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1260 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1261 | g_object_unref(values); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1262 | json_node_free(root); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1263 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1264 | |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1265 | static void |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1266 | fb_api_cb_publish_ms_r(FbApi *api, GByteArray *pload) |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1267 | { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1268 | FbApiMessage *msg; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1269 | FbJsonValues *values; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1270 | GError *err = NULL; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1271 | JsonNode *root; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1272 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1273 | if (!fb_api_json_chk(api, pload->data, pload->len, &root)) { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1274 | return; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1275 | } |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1276 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1277 | values = fb_json_values_new(root); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1278 | fb_json_values_add(values, FB_JSON_TYPE_BOOL, TRUE, "$.succeeded"); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1279 | fb_json_values_update(values, &err); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1280 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1281 | FB_API_ERROR_EMIT(api, err, |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1282 | g_object_unref(values); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1283 | json_node_free(root); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1284 | return; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1285 | ); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1286 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1287 | if (fb_json_values_next_bool(values, TRUE)) { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1288 | /* Pop and free the successful message */ |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1289 | msg = g_queue_pop_head(api->msgs); |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1290 | fb_api_message_free(msg); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1291 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1292 | if (!g_queue_is_empty(api->msgs)) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1293 | msg = g_queue_peek_head(api->msgs); |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1294 | fb_api_message_send(api, msg); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1295 | } |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1296 | } else { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1297 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1298 | "Failed to send message"); |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1299 | } |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1300 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1301 | g_object_unref(values); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1302 | json_node_free(root); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1303 | } |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1304 | |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1305 | static gchar * |
|
41969
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
1306 | fb_api_xma_parse(G_GNUC_UNUSED FbApi *api, const char *body, JsonNode *root, |
|
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
1307 | GError **error) |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1308 | { |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1309 | const gchar *str; |
|
37336
fb0b92c3533e
facebook: support all XMA messages
James Geboski <jgeboski@gmail.com>
parents:
37335
diff
changeset
|
1310 | const gchar *url; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1311 | FbHttpParams *params; |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1312 | FbJsonValues *values; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1313 | gchar *text; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1314 | GError *err = NULL; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
1315 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
1316 | values = fb_json_values_new(root); |
|
37382
6a0a79182ebc
facebook: fixed deleted XMAs being fatal
James Geboski <jgeboski@gmail.com>
parents:
37381
diff
changeset
|
1317 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1318 | "$.story_attachment.target.__type__.name"); |
|
37382
6a0a79182ebc
facebook: fixed deleted XMAs being fatal
James Geboski <jgeboski@gmail.com>
parents:
37381
diff
changeset
|
1319 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1320 | "$.story_attachment.url"); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1321 | fb_json_values_update(values, &err); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1322 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1323 | if (G_UNLIKELY(err != NULL)) { |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1324 | g_propagate_error(error, err); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1325 | g_object_unref(values); |
|
37382
6a0a79182ebc
facebook: fixed deleted XMAs being fatal
James Geboski <jgeboski@gmail.com>
parents:
37381
diff
changeset
|
1326 | return NULL; |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1327 | } |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1328 | |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1329 | str = fb_json_values_next_str(values, NULL); |
|
37336
fb0b92c3533e
facebook: support all XMA messages
James Geboski <jgeboski@gmail.com>
parents:
37335
diff
changeset
|
1330 | url = fb_json_values_next_str(values, NULL); |
|
fb0b92c3533e
facebook: support all XMA messages
James Geboski <jgeboski@gmail.com>
parents:
37335
diff
changeset
|
1331 | |
|
37382
6a0a79182ebc
facebook: fixed deleted XMAs being fatal
James Geboski <jgeboski@gmail.com>
parents:
37381
diff
changeset
|
1332 | if ((str == NULL) || (url == NULL)) { |
|
37521
21aac0fb8dd0
facebook: fixed incorrect handling of unknown XMA types
James Geboski <jgeboski@gmail.com>
parents:
37514
diff
changeset
|
1333 | text = g_strdup(_("<Unsupported Attachment>")); |
|
37382
6a0a79182ebc
facebook: fixed deleted XMAs being fatal
James Geboski <jgeboski@gmail.com>
parents:
37381
diff
changeset
|
1334 | g_object_unref(values); |
|
37521
21aac0fb8dd0
facebook: fixed incorrect handling of unknown XMA types
James Geboski <jgeboski@gmail.com>
parents:
37514
diff
changeset
|
1335 | return text; |
|
37382
6a0a79182ebc
facebook: fixed deleted XMAs being fatal
James Geboski <jgeboski@gmail.com>
parents:
37381
diff
changeset
|
1336 | } |
|
6a0a79182ebc
facebook: fixed deleted XMAs being fatal
James Geboski <jgeboski@gmail.com>
parents:
37381
diff
changeset
|
1337 | |
|
37336
fb0b92c3533e
facebook: support all XMA messages
James Geboski <jgeboski@gmail.com>
parents:
37335
diff
changeset
|
1338 | if (purple_strequal(str, "ExternalUrl")) { |
|
fb0b92c3533e
facebook: support all XMA messages
James Geboski <jgeboski@gmail.com>
parents:
37335
diff
changeset
|
1339 | params = fb_http_params_new_parse(url, TRUE); |
|
38395
922cb6303d80
facebook: Extract target url from fbrpc:// URLs
Mickaël Thomas <mickael9@gmail.com>
parents:
38394
diff
changeset
|
1340 | if (g_str_has_prefix(url, FB_API_FBRPC_PREFIX)) { |
|
922cb6303d80
facebook: Extract target url from fbrpc:// URLs
Mickaël Thomas <mickael9@gmail.com>
parents:
38394
diff
changeset
|
1341 | text = fb_http_params_dup_str(params, "target_url", NULL); |
|
922cb6303d80
facebook: Extract target url from fbrpc:// URLs
Mickaël Thomas <mickael9@gmail.com>
parents:
38394
diff
changeset
|
1342 | } else { |
|
922cb6303d80
facebook: Extract target url from fbrpc:// URLs
Mickaël Thomas <mickael9@gmail.com>
parents:
38394
diff
changeset
|
1343 | text = fb_http_params_dup_str(params, "u", NULL); |
|
922cb6303d80
facebook: Extract target url from fbrpc:// URLs
Mickaël Thomas <mickael9@gmail.com>
parents:
38394
diff
changeset
|
1344 | } |
|
37336
fb0b92c3533e
facebook: support all XMA messages
James Geboski <jgeboski@gmail.com>
parents:
37335
diff
changeset
|
1345 | fb_http_params_free(params); |
|
fb0b92c3533e
facebook: support all XMA messages
James Geboski <jgeboski@gmail.com>
parents:
37335
diff
changeset
|
1346 | } else { |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1347 | text = g_strdup(url); |
|
37354
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37348
diff
changeset
|
1348 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37348
diff
changeset
|
1349 | |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1350 | if (fb_http_urlcmp(body, text, FALSE)) { |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1351 | g_free(text); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1352 | g_object_unref(values); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1353 | return NULL; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1354 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1355 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1356 | g_object_unref(values); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1357 | return text; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1358 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1359 | |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1360 | static GSList * |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1361 | fb_api_message_parse_attach(FbApi *api, const gchar *mid, FbApiMessage *msg, |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1362 | GSList *msgs, const gchar *body, JsonNode *root, |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1363 | GError **error) |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1364 | { |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1365 | const gchar *str; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1366 | FbApiMessage *dmsg; |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1367 | FbId id; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1368 | FbJsonValues *values; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1369 | gchar *xma; |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1370 | GError *err = NULL; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
1371 | JsonNode *node; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
1372 | JsonNode *xode; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1373 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
1374 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1375 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.xmaGraphQL"); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1376 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, "$.fbid"); |
|
38400
6cbf84468fac
facebook: Fix receiving attachments
dx <dx@dxzone.com.ar>
parents:
38399
diff
changeset
|
1377 | fb_json_values_set_array(values, FALSE, "$.attachments"); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1378 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1379 | while (fb_json_values_update(values, &err)) { |
|
37355
047c6f5d4392
facebook: display thread URL for videos
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
1380 | str = fb_json_values_next_str(values, NULL); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1381 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1382 | if (str == NULL) { |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1383 | id = fb_json_values_next_int(values, 0); |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1384 | dmsg = g_memdup2(msg, sizeof(*msg)); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1385 | fb_api_attach(api, id, mid, dmsg); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1386 | continue; |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1387 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1388 | |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1389 | node = fb_json_node_new(str, -1, &err); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1390 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1391 | if (G_UNLIKELY(err != NULL)) { |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1392 | break; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1393 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1394 | |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1395 | xode = fb_json_node_get_nth(node, 0); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1396 | xma = fb_api_xma_parse(api, body, xode, &err); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1397 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1398 | if (xma != NULL) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1399 | dmsg = g_memdup2(msg, sizeof(*msg)); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1400 | dmsg->text = xma; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1401 | msgs = g_slist_prepend(msgs, dmsg); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1402 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1403 | |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1404 | json_node_free(node); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1405 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1406 | if (G_UNLIKELY(err != NULL)) { |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1407 | break; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1408 | } |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1409 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1410 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1411 | if (G_UNLIKELY(err != NULL)) { |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1412 | g_propagate_error(error, err); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1413 | } |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1414 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1415 | g_object_unref(values); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1416 | return msgs; |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1417 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1418 | |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1419 | |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1420 | static GSList * |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1421 | fb_api_cb_publish_ms_new_message(FbApi *api, JsonNode *root, GSList *msgs, GError **error); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1422 | |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1423 | static GSList * |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1424 | fb_api_cb_publish_ms_event(FbApi *api, JsonNode *root, GSList *events, FbApiEventType type, GError **error); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1425 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1426 | static void |
|
40794
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1427 | fb_api_cb_publish_mst(FbThrift *thft, GError **error) |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1428 | { |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1429 | if (fb_thrift_read_isstop(thft)) { |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1430 | FB_API_TCHK(fb_thrift_read_stop(thft)); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1431 | } else { |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1432 | FbThriftType type; |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1433 | gint16 id; |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1434 | |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1435 | FB_API_TCHK(fb_thrift_read_field(thft, &type, &id, 0)); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1436 | FB_API_TCHK(type == FB_THRIFT_TYPE_STRING); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1437 | // FB_API_TCHK(id == 2); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1438 | FB_API_TCHK(fb_thrift_read_str(thft, NULL)); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1439 | FB_API_TCHK(fb_thrift_read_stop(thft)); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1440 | } |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1441 | } |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1442 | |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1443 | static void |
|
37331
9cd963f45997
facebook: removed binary thrift support
James Geboski <jgeboski@gmail.com>
parents:
37330
diff
changeset
|
1444 | fb_api_cb_publish_ms(FbApi *api, GByteArray *pload) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1445 | { |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1446 | const gchar *data; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1447 | FbJsonValues *values; |
|
37268
2d85594bb9ee
facebook: fixed JSON parse errors with messages
James Geboski <jgeboski@gmail.com>
parents:
37262
diff
changeset
|
1448 | FbThrift *thft; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1449 | gchar *stoken; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1450 | GError *err = NULL; |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1451 | GList *elms, *l; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1452 | GSList *msgs = NULL; |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1453 | GSList *events = NULL; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1454 | guint size; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1455 | JsonNode *root; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1456 | JsonNode *node; |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1457 | JsonArray *arr; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1458 | |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1459 | static const struct { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1460 | const gchar *member; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1461 | FbApiEventType type; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1462 | gboolean is_message; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1463 | } event_types[] = { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1464 | {"deltaNewMessage", 0, 1}, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1465 | {"deltaThreadName", FB_API_EVENT_TYPE_THREAD_TOPIC, 0}, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1466 | {"deltaParticipantsAddedToGroupThread", FB_API_EVENT_TYPE_THREAD_USER_ADDED, 0}, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1467 | {"deltaParticipantLeftGroupThread", FB_API_EVENT_TYPE_THREAD_USER_REMOVED, 0}, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1468 | }; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1469 | |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1470 | /* Read identifier string (for Facebook employees) */ |
|
37331
9cd963f45997
facebook: removed binary thrift support
James Geboski <jgeboski@gmail.com>
parents:
37330
diff
changeset
|
1471 | thft = fb_thrift_new(pload, 0); |
|
40794
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1472 | fb_api_cb_publish_mst(thft, &err); |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1473 | size = fb_thrift_get_pos(thft); |
|
37268
2d85594bb9ee
facebook: fixed JSON parse errors with messages
James Geboski <jgeboski@gmail.com>
parents:
37262
diff
changeset
|
1474 | g_object_unref(thft); |
|
2d85594bb9ee
facebook: fixed JSON parse errors with messages
James Geboski <jgeboski@gmail.com>
parents:
37262
diff
changeset
|
1475 | |
|
40794
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1476 | FB_API_ERROR_EMIT(api, err, |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1477 | return; |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1478 | ); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1479 | |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1480 | g_return_if_fail(size < pload->len); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1481 | data = (gchar *) pload->data + size; |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1482 | size = pload->len - size; |
|
37268
2d85594bb9ee
facebook: fixed JSON parse errors with messages
James Geboski <jgeboski@gmail.com>
parents:
37262
diff
changeset
|
1483 | |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1484 | if (!fb_api_json_chk(api, data, size, &root)) { |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1485 | return; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1486 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1487 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
1488 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1489 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1490 | "$.lastIssuedSeqId"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1491 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.syncToken"); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1492 | fb_json_values_update(values, &err); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1493 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1494 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1495 | g_object_unref(values); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1496 | json_node_free(root); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1497 | return; |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1498 | ); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1499 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1500 | api->sid = fb_json_values_next_int(values, 0); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1501 | stoken = fb_json_values_next_str_dup(values, NULL); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1502 | g_object_unref(values); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1503 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1504 | if (G_UNLIKELY(stoken != NULL)) { |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1505 | g_free(api->stoken); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1506 | api->stoken = stoken; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1507 | g_signal_emit_by_name(api, "connect"); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1508 | json_node_free(root); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1509 | return; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1510 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1511 | |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1512 | arr = fb_json_node_get_arr(root, "$.deltas", NULL); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1513 | elms = json_array_get_elements(arr); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1514 | |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1515 | for (l = elms; l != NULL; l = l->next) { |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1516 | guint i = 0; |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1517 | JsonObject *o = json_node_get_object(l->data); |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1518 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1519 | for (i = 0; i < G_N_ELEMENTS(event_types); i++) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1520 | if ((node = json_object_get_member(o, event_types[i].member))) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1521 | if (event_types[i].is_message) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1522 | msgs = fb_api_cb_publish_ms_new_message( |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1523 | api, node, msgs, &err |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1524 | ); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1525 | } else { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1526 | events = fb_api_cb_publish_ms_event( |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1527 | api, node, events, event_types[i].type, &err |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1528 | ); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1529 | } |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1530 | } |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1531 | } |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1532 | |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1533 | if (G_UNLIKELY(err != NULL)) { |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1534 | break; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1535 | } |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1536 | } |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1537 | |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1538 | g_list_free(elms); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1539 | json_array_unref(arr); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1540 | |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1541 | if (G_LIKELY(err == NULL)) { |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1542 | if (msgs) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1543 | msgs = g_slist_reverse(msgs); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1544 | g_signal_emit_by_name(api, "messages", msgs); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1545 | } |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1546 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1547 | if (events) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1548 | events = g_slist_reverse(events); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1549 | g_signal_emit_by_name(api, "events", events); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1550 | } |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1551 | } else { |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1552 | fb_api_error_emit(api, err); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1553 | } |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1554 | |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1555 | g_slist_free_full(msgs, (GDestroyNotify) fb_api_message_free); |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1556 | g_slist_free_full(events, (GDestroyNotify) fb_api_event_free); |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1557 | json_node_free(root); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1558 | } |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1559 | |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1560 | static GSList * |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1561 | fb_api_cb_publish_ms_new_message(FbApi *api, JsonNode *root, GSList *msgs, GError **error) |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1562 | { |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1563 | const gchar *body; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1564 | const gchar *str; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1565 | GError *err = NULL; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1566 | FbApiMessage *dmsg; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1567 | FbApiMessage msg; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1568 | FbId id; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1569 | FbId oid; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1570 | FbJsonValues *values; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1571 | JsonNode *node; |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1572 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
1573 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1574 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1575 | "$.messageMetadata.offlineThreadingId"); |
|
37514
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1576 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1577 | "$.messageMetadata.actorFbId"); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1578 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1579 | "$.messageMetadata" |
|
37317
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1580 | ".threadKey.otherUserFbId"); |
|
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1581 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1582 | "$.messageMetadata" |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1583 | ".threadKey.threadFbId"); |
|
37475
643d7b0aadbd
facebook: preserve the timestamp on incoming messages
James Geboski <jgeboski@gmail.com>
parents:
37474
diff
changeset
|
1584 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1585 | "$.messageMetadata.timestamp"); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1586 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1587 | "$.body"); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1588 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1589 | "$.stickerId"); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1590 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1591 | "$.messageMetadata.messageId"); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1592 | |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1593 | if (fb_json_values_update(values, &err)) { |
|
37514
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1594 | id = fb_json_values_next_int(values, 0); |
|
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1595 | |
|
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1596 | /* Ignore everything but new messages */ |
|
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1597 | if (id == 0) { |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1598 | goto beach; |
|
37514
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1599 | } |
|
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1600 | |
|
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1601 | /* Ignore sequential duplicates */ |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1602 | if (id == api->lastmid) { |
|
37514
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1603 | fb_util_debug_info("Ignoring duplicate %" FB_ID_FORMAT, id); |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1604 | goto beach; |
|
37514
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1605 | } |
|
ad2ee74b913a
facebook: ignore messages which are sequentially duplicated
James Geboski <jgeboski@gmail.com>
parents:
37513
diff
changeset
|
1606 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1607 | api->lastmid = id; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1608 | fb_api_message_reset(&msg, FALSE); |
|
37383
72cb6af0a275
facebook-api: fix groupchat self messages
dequis <dx@dxzone.com.ar>
parents:
37382
diff
changeset
|
1609 | msg.uid = fb_json_values_next_int(values, 0); |
|
37317
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1610 | oid = fb_json_values_next_int(values, 0); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
1611 | msg.tid = fb_json_values_next_int(values, 0); |
|
37475
643d7b0aadbd
facebook: preserve the timestamp on incoming messages
James Geboski <jgeboski@gmail.com>
parents:
37474
diff
changeset
|
1612 | msg.tstamp = fb_json_values_next_int(values, 0); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1613 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1614 | if (msg.uid == api->uid) { |
|
37361
6545b86a0705
facebook: refactored for future inline images
James Geboski <jgeboski@gmail.com>
parents:
37356
diff
changeset
|
1615 | msg.flags |= FB_API_MESSAGE_FLAG_SELF; |
|
37383
72cb6af0a275
facebook-api: fix groupchat self messages
dequis <dx@dxzone.com.ar>
parents:
37382
diff
changeset
|
1616 | |
|
72cb6af0a275
facebook-api: fix groupchat self messages
dequis <dx@dxzone.com.ar>
parents:
37382
diff
changeset
|
1617 | if (msg.tid == 0) { |
|
72cb6af0a275
facebook-api: fix groupchat self messages
dequis <dx@dxzone.com.ar>
parents:
37382
diff
changeset
|
1618 | msg.uid = oid; |
|
72cb6af0a275
facebook-api: fix groupchat self messages
dequis <dx@dxzone.com.ar>
parents:
37382
diff
changeset
|
1619 | } |
|
37317
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1620 | } |
|
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
1621 | |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
1622 | body = fb_json_values_next_str(values, NULL); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
1623 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
1624 | if (body != NULL) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1625 | dmsg = g_memdup2(&msg, sizeof(msg)); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1626 | dmsg->text = g_strdup(body); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1627 | msgs = g_slist_prepend(msgs, dmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1628 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1629 | |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1630 | id = fb_json_values_next_int(values, 0); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
1631 | |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1632 | if (id != 0) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1633 | dmsg = g_memdup2(&msg, sizeof(msg)); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
1634 | fb_api_sticker(api, id, dmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1635 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1636 | |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1637 | str = fb_json_values_next_str(values, NULL); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1638 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1639 | if (str == NULL) { |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1640 | goto beach; |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1641 | } |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1642 | |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
1643 | node = fb_json_values_get_root(values); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
1644 | msgs = fb_api_message_parse_attach(api, str, &msg, msgs, body, |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
1645 | node, &err); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1646 | |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1647 | if (G_UNLIKELY(err != NULL)) { |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1648 | g_propagate_error(error, err); |
|
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1649 | goto beach; |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
1650 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1651 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1652 | |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1653 | beach: |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
1654 | g_object_unref(values); |
|
38396
a7a919217259
facebook: Refactor, split fb_api_cb_publish_ms into ..._new_message
dx <dx@dxzone.com.ar>
parents:
38395
diff
changeset
|
1655 | return msgs; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1656 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1657 | |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1658 | static GSList * |
|
41969
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
1659 | fb_api_cb_publish_ms_event(G_GNUC_UNUSED FbApi *api, JsonNode *root, |
|
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
1660 | GSList *events, FbApiEventType type, GError **error) |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1661 | { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1662 | FbApiEvent *event; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1663 | FbJsonValues *values = NULL; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1664 | FbJsonValues *values_inner = NULL; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1665 | GError *err = NULL; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1666 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1667 | values = fb_json_values_new(root); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1668 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1669 | "$.messageMetadata.threadKey.threadFbId"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1670 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1671 | "$.messageMetadata.actorFbId"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1672 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1673 | switch (type) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1674 | case FB_API_EVENT_TYPE_THREAD_TOPIC: |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1675 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1676 | "$.name"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1677 | break; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1678 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1679 | case FB_API_EVENT_TYPE_THREAD_USER_ADDED: |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1680 | values_inner = fb_json_values_new(root); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1681 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1682 | fb_json_values_add(values_inner, FB_JSON_TYPE_INT, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1683 | "$.userFbId"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1684 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1685 | /* use the text field for the full name */ |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1686 | fb_json_values_add(values_inner, FB_JSON_TYPE_STR, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1687 | "$.fullName"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1688 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1689 | fb_json_values_set_array(values_inner, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1690 | "$.addedParticipants"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1691 | break; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1692 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1693 | case FB_API_EVENT_TYPE_THREAD_USER_REMOVED: |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1694 | fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1695 | "$.leftParticipantFbId"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1696 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1697 | /* use the text field for the kick message */ |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1698 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1699 | "$.messageMetadata.adminText"); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1700 | break; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1701 | } |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1702 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1703 | fb_json_values_update(values, &err); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1704 | |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
1705 | event = g_new0(FbApiEvent, 1); |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1706 | event->type = type; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1707 | event->tid = fb_json_values_next_int(values, 0); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1708 | event->uid = fb_json_values_next_int(values, 0); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1709 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1710 | if (type == FB_API_EVENT_TYPE_THREAD_TOPIC) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1711 | event->text = fb_json_values_next_str_dup(values, NULL); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1712 | } else if (type == FB_API_EVENT_TYPE_THREAD_USER_REMOVED) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1713 | /* overwrite actor with subject */ |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1714 | event->uid = fb_json_values_next_int(values, 0); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1715 | event->text = fb_json_values_next_str_dup(values, NULL); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1716 | } else if (type == FB_API_EVENT_TYPE_THREAD_USER_ADDED) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1717 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1718 | while (fb_json_values_update(values_inner, &err)) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1719 | FbApiEvent *devent = g_new0(FbApiEvent, 1); |
|
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1720 | |
|
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1721 | devent->type = event->type; |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1722 | devent->uid = fb_json_values_next_int(values_inner, 0); |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1723 | devent->tid = event->tid; |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1724 | devent->text = fb_json_values_next_str_dup(values_inner, NULL); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1725 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1726 | events = g_slist_prepend(events, devent); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1727 | } |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
1728 | g_clear_pointer(&event, fb_api_event_free); |
|
38397
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1729 | g_object_unref(values_inner); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1730 | } |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1731 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1732 | g_object_unref(values); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1733 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1734 | if (G_UNLIKELY(err != NULL)) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1735 | g_propagate_error(error, err); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1736 | } else if (event) { |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1737 | events = g_slist_prepend(events, event); |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1738 | } |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1739 | |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1740 | return events; |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1741 | } |
|
046138091ee2
facebook: Handle new style topic/groupchat membership events
dx <dx@dxzone.com.ar>
parents:
38396
diff
changeset
|
1742 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1743 | static void |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1744 | fb_api_cb_publish_pt(FbThrift *thft, GSList **presences, GError **error) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1745 | { |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1746 | FbApiPresence *api_presence; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1747 | FbThriftType type; |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1748 | gint16 id; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1749 | gint32 i32; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1750 | gint64 i64; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1751 | guint i; |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1752 | guint size = 0; |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1753 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1754 | /* Read identifier string (for Facebook employees) */ |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1755 | FB_API_TCHK(fb_thrift_read_str(thft, NULL)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1756 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1757 | /* Read the full list boolean field */ |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1758 | FB_API_TCHK(fb_thrift_read_field(thft, &type, &id, 0)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1759 | FB_API_TCHK(type == FB_THRIFT_TYPE_BOOL); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1760 | FB_API_TCHK(id == 1); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1761 | FB_API_TCHK(fb_thrift_read_bool(thft, NULL)); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1762 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1763 | /* Read the list field */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1764 | FB_API_TCHK(fb_thrift_read_field(thft, &type, &id, id)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1765 | FB_API_TCHK(type == FB_THRIFT_TYPE_LIST); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1766 | FB_API_TCHK(id == 2); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1767 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1768 | /* Read the list */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1769 | FB_API_TCHK(fb_thrift_read_list(thft, &type, &size)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1770 | FB_API_TCHK(type == FB_THRIFT_TYPE_STRUCT); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1771 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1772 | for (i = 0; i < size; i++) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1773 | /* Read the user identifier field */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1774 | FB_API_TCHK(fb_thrift_read_field(thft, &type, &id, 0)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1775 | FB_API_TCHK(type == FB_THRIFT_TYPE_I64); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1776 | FB_API_TCHK(id == 1); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1777 | FB_API_TCHK(fb_thrift_read_i64(thft, &i64)); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1778 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1779 | /* Read the active field */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1780 | FB_API_TCHK(fb_thrift_read_field(thft, &type, &id, id)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1781 | FB_API_TCHK(type == FB_THRIFT_TYPE_I32); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1782 | FB_API_TCHK(id == 2); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1783 | FB_API_TCHK(fb_thrift_read_i32(thft, &i32)); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1784 | |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
1785 | api_presence = g_new0(FbApiPresence, 1); |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1786 | api_presence->uid = i64; |
|
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1787 | api_presence->active = i32 != 0; |
|
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1788 | *presences = g_slist_prepend(*presences, api_presence); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
1789 | |
|
40794
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1790 | fb_util_debug_info("Presence: %" FB_ID_FORMAT " (%d) id: %d", |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1791 | i64, i32 != 0, id); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1792 | |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1793 | while (id <= 6) { |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1794 | if (fb_thrift_read_isstop(thft)) { |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1795 | break; |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1796 | } |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1797 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1798 | FB_API_TCHK(fb_thrift_read_field(thft, &type, &id, id)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1799 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1800 | switch (id) { |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1801 | case 3: |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1802 | /* Read the last active timestamp field */ |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1803 | FB_API_TCHK(type == FB_THRIFT_TYPE_I64); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1804 | FB_API_TCHK(fb_thrift_read_i64(thft, NULL)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1805 | break; |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1806 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1807 | case 4: |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1808 | /* Read the active client bits field */ |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1809 | FB_API_TCHK(type == FB_THRIFT_TYPE_I16); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1810 | FB_API_TCHK(fb_thrift_read_i16(thft, NULL)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1811 | break; |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1812 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1813 | case 5: |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1814 | /* Read the VoIP compatibility bits field */ |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1815 | FB_API_TCHK(type == FB_THRIFT_TYPE_I64); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1816 | FB_API_TCHK(fb_thrift_read_i64(thft, NULL)); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1817 | break; |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1818 | |
|
38648
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1819 | case 6: |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1820 | /* Unknown new field */ |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1821 | FB_API_TCHK(type == FB_THRIFT_TYPE_I64); |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1822 | FB_API_TCHK(fb_thrift_read_i64(thft, NULL)); |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1823 | break; |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1824 | |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1825 | default: |
|
38648
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1826 | /* Try to read unknown fields as varint */ |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1827 | FB_API_TCHK(type == FB_THRIFT_TYPE_I16 || |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1828 | type == FB_THRIFT_TYPE_I32 || |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1829 | type == FB_THRIFT_TYPE_I64); |
|
9ff9acf9fa14
facebook: Fix "Failed to read thrift" with unknown fields in /t_p payload
dx <dx@dxzone.com.ar>
parents:
38401
diff
changeset
|
1830 | FB_API_TCHK(fb_thrift_read_i64(thft, NULL)); |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1831 | break; |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1832 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1833 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1834 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1835 | /* Read the field stop */ |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1836 | FB_API_TCHK(fb_thrift_read_stop(thft)); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1837 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1838 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1839 | /* Read the field stop */ |
|
40794
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1840 | if (fb_thrift_read_isstop(thft)) { |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1841 | FB_API_TCHK(fb_thrift_read_stop(thft)); |
|
0a69216b0b3f
Backport some patches from github.com/dequis/purple-facebook
Gary Kramlich <grim@reaperworld.com>
parents:
40756
diff
changeset
|
1842 | } |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1843 | } |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1844 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1845 | static void |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1846 | fb_api_cb_publish_p(FbApi *api, GByteArray *pload) |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1847 | { |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1848 | FbThrift *thft; |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1849 | GError *err = NULL; |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1850 | GSList *presences = NULL; |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1851 | |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1852 | thft = fb_thrift_new(pload, 0); |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1853 | fb_api_cb_publish_pt(thft, &presences, &err); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1854 | g_object_unref(thft); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1855 | |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1856 | if (G_LIKELY(err == NULL)) { |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1857 | g_signal_emit_by_name(api, "presences", presences); |
|
37510
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1858 | } else { |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1859 | fb_api_error_emit(api, err); |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1860 | } |
|
1bee26614db9
facebook: properly handle optional Thrift fields and scoping
James Geboski <jgeboski@gmail.com>
parents:
37478
diff
changeset
|
1861 | |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
1862 | g_slist_free_full(presences, (GDestroyNotify)fb_api_presence_free); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1863 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1864 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1865 | static void |
|
41969
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
1866 | fb_api_cb_mqtt_publish(G_GNUC_UNUSED FbMqtt *mqtt, const char *topic, |
|
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
1867 | GByteArray *pload, gpointer data) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1868 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1869 | FbApi *api = data; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1870 | gboolean comp; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1871 | GByteArray *bytes; |
|
37414
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
1872 | GError *err = NULL; |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1873 | guint i; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1874 | |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1875 | static const struct { |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1876 | const gchar *topic; |
|
37331
9cd963f45997
facebook: removed binary thrift support
James Geboski <jgeboski@gmail.com>
parents:
37330
diff
changeset
|
1877 | void (*func) (FbApi *api, GByteArray *pload); |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1878 | } parsers[] = { |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1879 | {"/mark_thread_response", fb_api_cb_publish_mark}, |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
1880 | {"/mercury", fb_api_cb_publish_mercury}, |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1881 | {"/orca_typing_notifications", fb_api_cb_publish_typing}, |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
1882 | {"/send_message_response", fb_api_cb_publish_ms_r}, |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1883 | {"/t_ms", fb_api_cb_publish_ms}, |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1884 | {"/t_p", fb_api_cb_publish_p} |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1885 | }; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1886 | |
|
37416
77536a48b4be
facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents:
37414
diff
changeset
|
1887 | comp = fb_util_zlib_test(pload); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1888 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1889 | if (G_LIKELY(comp)) { |
|
37416
77536a48b4be
facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents:
37414
diff
changeset
|
1890 | bytes = fb_util_zlib_inflate(pload, &err); |
|
37414
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
1891 | FB_API_ERROR_EMIT(api, err, return); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1892 | } else { |
|
37471
32c1e77d0474
facebook: coding style consistencies
James Geboski <jgeboski@gmail.com>
parents:
37433
diff
changeset
|
1893 | bytes = (GByteArray *) pload; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1894 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1895 | |
|
37278
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
1896 | fb_util_debug_hexdump(FB_UTIL_DEBUG_INFO, bytes, |
|
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
1897 | "Reading message (topic: %s)", |
|
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
1898 | topic); |
|
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
1899 | |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1900 | for (i = 0; i < G_N_ELEMENTS(parsers); i++) { |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1901 | if (g_ascii_strcasecmp(topic, parsers[i].topic) == 0) { |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1902 | parsers[i].func(api, bytes); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1903 | break; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
1904 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1905 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1906 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1907 | if (G_LIKELY(comp)) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1908 | g_byte_array_free(bytes, TRUE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1909 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1910 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1911 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1912 | FbApi * |
|
40030
1827a7e715e0
Pass correct proxy resolver to Facebook soup session.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40029
diff
changeset
|
1913 | fb_api_new(PurpleConnection *gc, GProxyResolver *resolver) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1914 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1915 | FbApi *api; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1916 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1917 | api = g_object_new(FB_TYPE_API, NULL); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1918 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1919 | api->gc = gc; |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1920 | api->cons = soup_session_new_with_options( |
|
40819
54b2a95ac176
Cleanup deprecated libsoup usage
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40794
diff
changeset
|
1921 | "proxy-resolver", resolver, |
|
54b2a95ac176
Cleanup deprecated libsoup usage
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40794
diff
changeset
|
1922 | "user-agent", FB_API_AGENT, |
|
54b2a95ac176
Cleanup deprecated libsoup usage
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40794
diff
changeset
|
1923 | NULL); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1924 | api->mqtt = fb_mqtt_new(gc); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1925 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1926 | g_signal_connect(api->mqtt, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1927 | "connect", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1928 | G_CALLBACK(fb_api_cb_mqtt_connect), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1929 | api); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1930 | g_signal_connect(api->mqtt, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1931 | "error", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1932 | G_CALLBACK(fb_api_cb_mqtt_error), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1933 | api); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1934 | g_signal_connect(api->mqtt, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1935 | "open", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1936 | G_CALLBACK(fb_api_cb_mqtt_open), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1937 | api); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1938 | g_signal_connect(api->mqtt, |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1939 | "publish", |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1940 | G_CALLBACK(fb_api_cb_mqtt_publish), |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1941 | api); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1942 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1943 | return api; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1944 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1945 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1946 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1947 | fb_api_rehash(FbApi *api) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1948 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1949 | g_return_if_fail(FB_IS_API(api)); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1950 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1951 | if (api->cid == NULL) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1952 | api->cid = fb_util_rand_alnum(32); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1953 | } |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1954 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1955 | if (api->did == NULL) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1956 | api->did = g_uuid_string_random(); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1957 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1958 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1959 | if (api->mid == 0) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1960 | api->mid = g_random_int(); |
|
37253
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
1961 | } |
|
7951b68cec73
facebook: use 'did' instead of 'cuid'
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
1962 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1963 | if (strlen(api->cid) > 20) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1964 | api->cid = g_realloc_n(api->cid , 21, sizeof *api->cid); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1965 | api->cid[20] = 0; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1966 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1967 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1968 | |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1969 | gboolean |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1970 | fb_api_is_invisible(FbApi *api) |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1971 | { |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1972 | g_return_val_if_fail(FB_IS_API(api), FALSE); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1973 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
1974 | return api->invisible; |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1975 | } |
|
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
1976 | |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1977 | static void |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1978 | fb_api_error_literal(FbApi *api, FbApiError error, const gchar *msg) |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1979 | { |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1980 | GError *err; |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1981 | |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1982 | g_return_if_fail(FB_IS_API(api)); |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1983 | |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1984 | err = g_error_new_literal(FB_API_ERROR, error, msg); |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1985 | |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1986 | fb_api_error_emit(api, err); |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1987 | } |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
1988 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1989 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1990 | fb_api_error(FbApi *api, FbApiError error, const gchar *format, ...) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1991 | { |
|
37312
d6cb70301fea
facebook: refactored error propagation
James Geboski <jgeboski@gmail.com>
parents:
37309
diff
changeset
|
1992 | GError *err; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1993 | va_list ap; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1994 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1995 | g_return_if_fail(FB_IS_API(api)); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1996 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1997 | va_start(ap, format); |
|
37312
d6cb70301fea
facebook: refactored error propagation
James Geboski <jgeboski@gmail.com>
parents:
37309
diff
changeset
|
1998 | err = g_error_new_valist(FB_API_ERROR, error, format, ap); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1999 | va_end(ap); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2000 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2001 | fb_api_error_emit(api, err); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2002 | } |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2003 | |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2004 | void |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2005 | fb_api_error_emit(FbApi *api, GError *error) |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2006 | { |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2007 | g_return_if_fail(FB_IS_API(api)); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2008 | g_return_if_fail(error != NULL); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2009 | |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2010 | g_signal_emit_by_name(api, "error", error); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2011 | g_error_free(error); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2012 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2013 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2014 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2015 | fb_api_cb_attach(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2016 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2017 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2018 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2019 | const gchar *str; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2020 | FbApiMessage *msg; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2021 | FbJsonValues *values; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2022 | gchar *name; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2023 | GError *err = NULL; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2024 | GSList *msgs = NULL; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2025 | guint i; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2026 | JsonNode *root; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2027 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2028 | static const gchar *imgexts[] = {".jpg", ".png", ".gif"}; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2029 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2030 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2031 | g_object_unref(soupmsg); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2032 | return; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2033 | } |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2034 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2035 | values = fb_json_values_new(root); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2036 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.filename"); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2037 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.redirect_uri"); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2038 | fb_json_values_update(values, &err); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2039 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2040 | FB_API_ERROR_EMIT(api, err, |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2041 | g_object_unref(values); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2042 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2043 | g_object_unref(soupmsg); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2044 | return; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2045 | ); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2046 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2047 | msg = g_object_steal_data(G_OBJECT(soupmsg), "fb-api-msg"); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2048 | str = fb_json_values_next_str(values, NULL); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2049 | name = g_ascii_strdown(str, -1); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2050 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2051 | for (i = 0; i < G_N_ELEMENTS(imgexts); i++) { |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2052 | if (g_str_has_suffix(name, imgexts[i])) { |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2053 | msg->flags |= FB_API_MESSAGE_FLAG_IMAGE; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2054 | break; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2055 | } |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2056 | } |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2057 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2058 | g_free(name); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2059 | msg->text = fb_json_values_next_str_dup(values, NULL); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2060 | msgs = g_slist_prepend(msgs, msg); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2061 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2062 | g_signal_emit_by_name(api, "messages", msgs); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2063 | g_slist_free_full(msgs, (GDestroyNotify) fb_api_message_free); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2064 | g_object_unref(values); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2065 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2066 | g_object_unref(soupmsg); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2067 | } |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2068 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2069 | static void |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2070 | fb_api_attach(FbApi *api, FbId aid, const gchar *msgid, FbApiMessage *msg) |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2071 | { |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2072 | FbHttpParams *prms; |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
2073 | SoupMessage *http; |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2074 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2075 | prms = fb_http_params_new(); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2076 | fb_http_params_set_str(prms, "mid", msgid); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2077 | fb_http_params_set_strf(prms, "aid", "%" FB_ID_FORMAT, aid); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2078 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2079 | http = fb_api_http_req(api, FB_API_URL_ATTACH, "getAttachment", |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2080 | "messaging.getAttachment", prms, |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2081 | fb_api_cb_attach); |
|
40032
66078eb9ad15
Replace custom data storage with GObject data.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40030
diff
changeset
|
2082 | g_object_set_data_full(G_OBJECT(http), "fb-api-msg", msg, |
|
66078eb9ad15
Replace custom data storage with GObject data.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40030
diff
changeset
|
2083 | (GDestroyNotify)fb_api_message_free); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2084 | } |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2085 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2086 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2087 | fb_api_cb_auth(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2088 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2089 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2090 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2091 | FbJsonValues *values; |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2092 | GError *err = NULL; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2093 | JsonNode *root; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2094 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2095 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2096 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2097 | return; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2098 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2099 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2100 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2101 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.access_token"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2102 | fb_json_values_add(values, FB_JSON_TYPE_INT, TRUE, "$.uid"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2103 | fb_json_values_update(values, &err); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2104 | |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2105 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2106 | g_object_unref(values); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2107 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2108 | g_object_unref(soupmsg); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2109 | return; |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2110 | ); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2111 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2112 | g_free(api->token); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2113 | api->token = fb_json_values_next_str_dup(values, NULL); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2114 | api->uid = fb_json_values_next_int(values, 0); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2115 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2116 | g_signal_emit_by_name(api, "auth"); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2117 | g_object_unref(values); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2118 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2119 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2120 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2121 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2122 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2123 | fb_api_auth(FbApi *api, const gchar *user, const gchar *pass) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2124 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2125 | FbHttpParams *prms; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2126 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2127 | prms = fb_http_params_new(); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2128 | fb_http_params_set_str(prms, "email", user); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2129 | fb_http_params_set_str(prms, "password", pass); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2130 | fb_api_http_req(api, FB_API_URL_AUTH, "authenticate", "auth.login", |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2131 | prms, fb_api_cb_auth); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2132 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2133 | |
|
38184
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2134 | static gchar * |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2135 | fb_api_user_icon_checksum(gchar *icon) |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2136 | { |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2137 | gchar *csum; |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2138 | FbHttpParams *prms; |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2139 | |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2140 | if (G_UNLIKELY(icon == NULL)) { |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2141 | return NULL; |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2142 | } |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2143 | |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2144 | prms = fb_http_params_new_parse(icon, TRUE); |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2145 | csum = fb_http_params_dup_str(prms, "oh", NULL); |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2146 | fb_http_params_free(prms); |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2147 | |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2148 | if (G_UNLIKELY(csum == NULL)) { |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2149 | /* Revert to the icon URL as the unique checksum */ |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2150 | csum = g_strdup(icon); |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2151 | } |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2152 | |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2153 | return csum; |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2154 | } |
|
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2155 | |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2156 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2157 | fb_api_cb_contact(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2158 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2159 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2160 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2161 | const gchar *str; |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2162 | FbApiUser user; |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2163 | FbJsonValues *values; |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2164 | GError *err = NULL; |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2165 | JsonNode *node; |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2166 | JsonNode *root; |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2167 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2168 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2169 | g_object_unref(soupmsg); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2170 | return; |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2171 | } |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2172 | |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2173 | node = fb_json_node_get_nth(root, 0); |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2174 | |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2175 | if (node == NULL) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
2176 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
2177 | _("Failed to obtain contact information")); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2178 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2179 | g_object_unref(soupmsg); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2180 | return; |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2181 | } |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2182 | |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2183 | values = fb_json_values_new(node); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2184 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.id"); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2185 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.name"); |
|
38184
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2186 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2187 | "$.profile_pic_large.uri"); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2188 | fb_json_values_update(values, &err); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2189 | |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2190 | FB_API_ERROR_EMIT(api, err, |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2191 | g_object_unref(values); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2192 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2193 | g_object_unref(soupmsg); |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2194 | return; |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2195 | ); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2196 | |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2197 | fb_api_user_reset(&user, FALSE); |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2198 | str = fb_json_values_next_str(values, "0"); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2199 | user.uid = FB_ID_FROM_STR(str); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2200 | user.name = fb_json_values_next_str_dup(values, NULL); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2201 | user.icon = fb_json_values_next_str_dup(values, NULL); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2202 | |
|
38184
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2203 | user.csum = fb_api_user_icon_checksum(user.icon); |
|
37539
25a255f32eee
facebook: use the icon URL as a backup checksum
James Geboski <jgeboski@gmail.com>
parents:
37521
diff
changeset
|
2204 | |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2205 | g_signal_emit_by_name(api, "contact", &user); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2206 | fb_api_user_reset(&user, TRUE); |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2207 | g_object_unref(values); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2208 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2209 | g_object_unref(soupmsg); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2210 | } |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2211 | |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2212 | void |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2213 | fb_api_contact(FbApi *api, FbId uid) |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2214 | { |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2215 | JsonBuilder *bldr; |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2216 | |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2217 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2218 | fb_json_bldr_arr_begin(bldr, "0"); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2219 | fb_json_bldr_add_strf(bldr, NULL, "%" FB_ID_FORMAT, uid); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2220 | fb_json_bldr_arr_end(bldr); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2221 | |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2222 | fb_json_bldr_add_str(bldr, "1", "true"); |
|
37338
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2223 | fb_api_http_query(api, FB_API_QUERY_CONTACT, bldr, fb_api_cb_contact); |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2224 | } |
|
e4d77bc25235
facebook: add and alias non-friend buddies
James Geboski <jgeboski@gmail.com>
parents:
37337
diff
changeset
|
2225 | |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2226 | static GSList * |
|
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2227 | fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2228 | { |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2229 | const gchar *str; |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2230 | FbApiUser *user; |
|
37478
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2231 | FbId uid; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2232 | FbJsonValues *values; |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2233 | gboolean is_array; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2234 | GError *err = NULL; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2235 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2236 | values = fb_json_values_new(root); |
|
38187
6917682375dd
facebook: fb_api_cb_contacts: Make all the other fields optional too
dequis <dx@dxzone.com.ar>
parents:
38185
diff
changeset
|
2237 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37478
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2238 | "$.represented_profile.id"); |
|
38187
6917682375dd
facebook: fb_api_cb_contacts: Make all the other fields optional too
dequis <dx@dxzone.com.ar>
parents:
38185
diff
changeset
|
2239 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37478
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2240 | "$.represented_profile.friendship_status"); |
|
38187
6917682375dd
facebook: fb_api_cb_contacts: Make all the other fields optional too
dequis <dx@dxzone.com.ar>
parents:
38185
diff
changeset
|
2241 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2242 | "$.structured_name.text"); |
|
38184
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2243 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2244 | "$.hugePictureUrl.uri"); |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2245 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2246 | is_array = (JSON_NODE_TYPE(root) == JSON_NODE_ARRAY); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2247 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2248 | if (is_array) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2249 | fb_json_values_set_array(values, FALSE, "$"); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2250 | } |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37255
diff
changeset
|
2251 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2252 | while (fb_json_values_update(values, &err)) { |
|
37478
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2253 | str = fb_json_values_next_str(values, "0"); |
|
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2254 | uid = FB_ID_FROM_STR(str); |
|
37419
25bab54aa2fa
facebook: fixed non-friend contacts showing as buddies
James Geboski <jgeboski@gmail.com>
parents:
37416
diff
changeset
|
2255 | str = fb_json_values_next_str(values, NULL); |
|
37478
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2256 | |
|
38187
6917682375dd
facebook: fb_api_cb_contacts: Make all the other fields optional too
dequis <dx@dxzone.com.ar>
parents:
38185
diff
changeset
|
2257 | if ((!purple_strequal(str, "ARE_FRIENDS") && |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2258 | (uid != api->uid)) || (uid == 0)) |
|
37478
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2259 | { |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2260 | if (!is_array) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2261 | break; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2262 | } |
|
37419
25bab54aa2fa
facebook: fixed non-friend contacts showing as buddies
James Geboski <jgeboski@gmail.com>
parents:
37416
diff
changeset
|
2263 | continue; |
|
25bab54aa2fa
facebook: fixed non-friend contacts showing as buddies
James Geboski <jgeboski@gmail.com>
parents:
37416
diff
changeset
|
2264 | } |
|
25bab54aa2fa
facebook: fixed non-friend contacts showing as buddies
James Geboski <jgeboski@gmail.com>
parents:
37416
diff
changeset
|
2265 | |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
2266 | user = g_new0(FbApiUser, 1); |
|
37478
c7a1976029ea
facebook: fixed the self contact being ignored
James Geboski <jgeboski@gmail.com>
parents:
37475
diff
changeset
|
2267 | user->uid = uid; |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2268 | user->name = fb_json_values_next_str_dup(values, NULL); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2269 | user->icon = fb_json_values_next_str_dup(values, NULL); |
|
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2270 | |
|
38184
69b44723d52c
facebook: Make $.hugePictureUrl.uri optional
dequis <dx@dxzone.com.ar>
parents:
38183
diff
changeset
|
2271 | user->csum = fb_api_user_icon_checksum(user->icon); |
|
37539
25a255f32eee
facebook: use the icon URL as a backup checksum
James Geboski <jgeboski@gmail.com>
parents:
37521
diff
changeset
|
2272 | |
|
37381
8e23ae2d2ef6
facebook: fixed the contact query not fetching non-users
James Geboski <jgeboski@gmail.com>
parents:
37380
diff
changeset
|
2273 | users = g_slist_prepend(users, user); |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2274 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2275 | if (!is_array) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2276 | break; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2277 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2278 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2279 | |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2280 | g_object_unref(values); |
|
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2281 | |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2282 | return users; |
|
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2283 | } |
|
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2284 | |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2285 | /* base64(contact:<our id>:<their id>:<whatever>) */ |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2286 | static GSList * |
|
41969
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
2287 | fb_api_cb_contacts_parse_removed(G_GNUC_UNUSED FbApi *api, JsonNode *node, |
|
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
2288 | GSList *users) |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2289 | { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2290 | gsize len; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2291 | char **split; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2292 | char *decoded = (char *) g_base64_decode(json_node_get_string(node), &len); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2293 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2294 | g_return_val_if_fail(decoded[len] == '\0', users); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2295 | g_return_val_if_fail(len == strlen(decoded), users); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2296 | g_return_val_if_fail(g_str_has_prefix(decoded, "contact:"), users); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2297 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2298 | split = g_strsplit_set(decoded, ":", 4); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2299 | |
|
39918
1c8e11f9274f
Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39556
diff
changeset
|
2300 | if (g_strv_length(split) != 4) { |
|
1c8e11f9274f
Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39556
diff
changeset
|
2301 | g_strfreev(split); |
|
1c8e11f9274f
Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39556
diff
changeset
|
2302 | g_return_val_if_reached(users); |
|
1c8e11f9274f
Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39556
diff
changeset
|
2303 | } |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2304 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2305 | users = g_slist_prepend(users, g_strdup(split[2])); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2306 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2307 | g_strfreev(split); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2308 | g_free(decoded); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2309 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2310 | return users; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2311 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2312 | |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2313 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2314 | fb_api_cb_contacts(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2315 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2316 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2317 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2318 | const gchar *cursor; |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2319 | const gchar *delta_cursor; |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2320 | FbJsonValues *values; |
|
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2321 | gboolean complete; |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2322 | gboolean is_delta; |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2323 | GError *err = NULL; |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2324 | GList *l; |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2325 | GSList *users = NULL; |
|
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2326 | JsonNode *root; |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2327 | JsonNode *croot; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2328 | JsonNode *node; |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2329 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2330 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2331 | g_object_unref(soupmsg); |
|
38391
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2332 | return; |
|
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2333 | } |
|
c1dcc9f4992b
facebook: Refactor, split off contact nodes parsing from fb_api_cb_contacts
dx <dx@dxzone.com.ar>
parents:
38390
diff
changeset
|
2334 | |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2335 | croot = fb_json_node_get(root, "$.viewer.messenger_contacts.deltas", NULL); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2336 | is_delta = (croot != NULL); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2337 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2338 | if (!is_delta) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2339 | croot = fb_json_node_get(root, "$.viewer.messenger_contacts", NULL); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2340 | node = fb_json_node_get(croot, "$.nodes", NULL); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2341 | users = fb_api_cb_contacts_nodes(api, node, users); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2342 | json_node_free(node); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2343 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2344 | } else { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2345 | GSList *added = NULL; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2346 | GSList *removed = NULL; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2347 | JsonArray *arr = fb_json_node_get_arr(croot, "$.nodes", NULL); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2348 | GList *elms = json_array_get_elements(arr); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2349 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2350 | for (l = elms; l != NULL; l = l->next) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2351 | if ((node = fb_json_node_get(l->data, "$.added", NULL))) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2352 | added = fb_api_cb_contacts_nodes(api, node, added); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2353 | json_node_free(node); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2354 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2355 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2356 | if ((node = fb_json_node_get(l->data, "$.removed", NULL))) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2357 | removed = fb_api_cb_contacts_parse_removed(api, node, removed); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2358 | json_node_free(node); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2359 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2360 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2361 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2362 | g_signal_emit_by_name(api, "contacts-delta", added, removed); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2363 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2364 | g_slist_free_full(added, (GDestroyNotify) fb_api_user_free); |
|
40128
9b64a2d80f8c
Remove redundant callback type casts
qarkai <qarkai@gmail.com>
parents:
40035
diff
changeset
|
2365 | g_slist_free_full(removed, g_free); |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2366 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2367 | g_list_free(elms); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2368 | json_array_unref(arr); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2369 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2370 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2371 | values = fb_json_values_new(croot); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2372 | fb_json_values_add(values, FB_JSON_TYPE_BOOL, FALSE, |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2373 | "$.page_info.has_next_page"); |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2374 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2375 | "$.page_info.delta_cursor"); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2376 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2377 | "$.page_info.end_cursor"); |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2378 | fb_json_values_update(values, NULL); |
|
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2379 | |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2380 | complete = !fb_json_values_next_bool(values, FALSE); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2381 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2382 | delta_cursor = fb_json_values_next_str(values, NULL); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2383 | |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2384 | cursor = fb_json_values_next_str(values, NULL); |
|
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2385 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2386 | if (G_UNLIKELY(err == NULL)) { |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2387 | if (is_delta || complete) { |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2388 | g_free(api->contacts_delta); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2389 | api->contacts_delta = g_strdup(is_delta ? cursor : delta_cursor); |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2390 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2391 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2392 | if (users) { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2393 | g_signal_emit_by_name(api, "contacts", users, complete); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2394 | } |
|
37329
3953bf31338c
facebook: only attempt to fetch more contacts if needed
James Geboski <jgeboski@gmail.com>
parents:
37328
diff
changeset
|
2395 | |
|
3953bf31338c
facebook: only attempt to fetch more contacts if needed
James Geboski <jgeboski@gmail.com>
parents:
37328
diff
changeset
|
2396 | if (!complete) { |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2397 | fb_api_contacts_after(api, cursor); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2398 | } |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2399 | } else { |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2400 | fb_api_error_emit(api, err); |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2401 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2402 | |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
2403 | g_slist_free_full(users, (GDestroyNotify) fb_api_user_free); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2404 | g_object_unref(values); |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2405 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2406 | json_node_free(croot); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2407 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2408 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2409 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2410 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2411 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2412 | fb_api_contacts(FbApi *api) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2413 | { |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2414 | JsonBuilder *bldr; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2415 | |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2416 | g_return_if_fail(FB_IS_API(api)); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2417 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2418 | if (api->contacts_delta) { |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2419 | fb_api_contacts_delta(api, api->contacts_delta); |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2420 | return; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2421 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2422 | |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2423 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2424 | fb_json_bldr_arr_begin(bldr, "0"); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2425 | fb_json_bldr_add_str(bldr, NULL, "user"); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2426 | fb_json_bldr_arr_end(bldr); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2427 | |
|
37329
3953bf31338c
facebook: only attempt to fetch more contacts if needed
James Geboski <jgeboski@gmail.com>
parents:
37328
diff
changeset
|
2428 | fb_json_bldr_add_str(bldr, "1", G_STRINGIFY(FB_API_CONTACTS_COUNT)); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2429 | fb_api_http_query(api, FB_API_QUERY_CONTACTS, bldr, |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2430 | fb_api_cb_contacts); |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2431 | } |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2432 | |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2433 | static void |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2434 | fb_api_contacts_after(FbApi *api, const gchar *cursor) |
|
37298
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2435 | { |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2436 | JsonBuilder *bldr; |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2437 | |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2438 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2439 | fb_json_bldr_arr_begin(bldr, "0"); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2440 | fb_json_bldr_add_str(bldr, NULL, "user"); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2441 | fb_json_bldr_arr_end(bldr); |
|
213498a7ab94
facebook: fetch contacts in incremental chunks
James Geboski <jgeboski@gmail.com>
parents:
37297
diff
changeset
|
2442 | |
|
37638
66ee77378d82
facebook: fix contacts pagination, use page_info.end_cursor
dx <dx@dxzone.com.ar>
parents:
37539
diff
changeset
|
2443 | fb_json_bldr_add_str(bldr, "1", cursor); |
|
37329
3953bf31338c
facebook: only attempt to fetch more contacts if needed
James Geboski <jgeboski@gmail.com>
parents:
37328
diff
changeset
|
2444 | fb_json_bldr_add_str(bldr, "2", G_STRINGIFY(FB_API_CONTACTS_COUNT)); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2445 | fb_api_http_query(api, FB_API_QUERY_CONTACTS_AFTER, bldr, |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2446 | fb_api_cb_contacts); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2447 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2448 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2449 | void |
|
38394
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2450 | fb_api_contacts_delta(FbApi *api, const gchar *delta_cursor) |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2451 | { |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2452 | JsonBuilder *bldr; |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2453 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2454 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2455 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2456 | fb_json_bldr_add_str(bldr, "0", delta_cursor); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2457 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2458 | fb_json_bldr_arr_begin(bldr, "1"); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2459 | fb_json_bldr_add_str(bldr, NULL, "user"); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2460 | fb_json_bldr_arr_end(bldr); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2461 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2462 | fb_json_bldr_add_str(bldr, "2", G_STRINGIFY(FB_API_CONTACTS_COUNT)); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2463 | fb_api_http_query(api, FB_API_QUERY_CONTACTS_DELTA, bldr, |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2464 | fb_api_cb_contacts); |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2465 | } |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2466 | |
|
cc616d24fa7e
facebook: Use FetchContactsDeltaQuery for contact sync
dx <dx@dxzone.com.ar>
parents:
38392
diff
changeset
|
2467 | void |
|
37328
4c091ac7c55a
facebook: implemented the invisible presence state
James Geboski <jgeboski@gmail.com>
parents:
37327
diff
changeset
|
2468 | fb_api_connect(FbApi *api, gboolean invisible) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2469 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2470 | g_return_if_fail(FB_IS_API(api)); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2471 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2472 | api->invisible = invisible; |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2473 | fb_mqtt_open(api->mqtt, FB_MQTT_HOST, FB_MQTT_PORT); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2474 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2475 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2476 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2477 | fb_api_disconnect(FbApi *api) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2478 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2479 | g_return_if_fail(FB_IS_API(api)); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2480 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2481 | fb_mqtt_disconnect(api->mqtt); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2482 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2483 | |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2484 | static void |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2485 | fb_api_message_send(FbApi *api, FbApiMessage *msg) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2486 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2487 | const gchar *tpfx; |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2488 | FbId id; |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2489 | FbId mid; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2490 | gchar *json; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2491 | JsonBuilder *bldr; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2492 | |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2493 | mid = FB_API_MSGID(g_get_real_time() / 1000, g_random_int()); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2494 | api->lastmid = mid; |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2495 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2496 | if (msg->tid != 0) { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2497 | tpfx = "tfbid_"; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2498 | id = msg->tid; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2499 | } else { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2500 | tpfx = ""; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2501 | id = msg->uid; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2502 | } |
|
37317
143a4d8db15c
facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents:
37316
diff
changeset
|
2503 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2504 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2505 | fb_json_bldr_add_str(bldr, "body", msg->text); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2506 | fb_json_bldr_add_strf(bldr, "msgid", "%" FB_ID_FORMAT, mid); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2507 | fb_json_bldr_add_strf(bldr, "sender_fbid", "%" FB_ID_FORMAT, api->uid); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2508 | fb_json_bldr_add_strf(bldr, "to", "%s%" FB_ID_FORMAT, tpfx, id); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2509 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2510 | json = fb_json_bldr_close(bldr, JSON_NODE_OBJECT, NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2511 | fb_api_publish(api, "/send_message2", "%s", json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2512 | g_free(json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2513 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2514 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2515 | void |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2516 | fb_api_message(FbApi *api, FbId id, gboolean thread, const gchar *text) |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2517 | { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2518 | FbApiMessage *msg; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2519 | gboolean empty; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2520 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2521 | g_return_if_fail(FB_IS_API(api)); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2522 | g_return_if_fail(text != NULL); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2523 | |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
2524 | msg = g_new0(FbApiMessage, 1); |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2525 | msg->text = g_strdup(text); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2526 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2527 | if (thread) { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2528 | msg->tid = id; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2529 | } else { |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2530 | msg->uid = id; |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2531 | } |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2532 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2533 | empty = g_queue_is_empty(api->msgs); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2534 | g_queue_push_tail(api->msgs, msg); |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2535 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2536 | if (empty && fb_mqtt_connected(api->mqtt, FALSE)) { |
|
37511
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2537 | fb_api_message_send(api, msg); |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2538 | } |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2539 | } |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2540 | |
|
313fc6c8f415
facebook: implemented queued message sending
James Geboski <jgeboski@gmail.com>
parents:
37510
diff
changeset
|
2541 | void |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
2542 | fb_api_publish(FbApi *api, const gchar *topic, const gchar *format, ...) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2543 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2544 | GByteArray *bytes; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2545 | GByteArray *cytes; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2546 | gchar *msg; |
|
37414
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
2547 | GError *err = NULL; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2548 | va_list ap; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2549 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2550 | g_return_if_fail(FB_IS_API(api)); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2551 | g_return_if_fail(topic != NULL); |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
2552 | g_return_if_fail(format != NULL); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2553 | |
|
37347
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
2554 | va_start(ap, format); |
|
34d43f8c10d1
facebook: added GTK-Doc for the internal APIs
James Geboski <jgeboski@gmail.com>
parents:
37346
diff
changeset
|
2555 | msg = g_strdup_vprintf(format, ap); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2556 | va_end(ap); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2557 | |
|
37471
32c1e77d0474
facebook: coding style consistencies
James Geboski <jgeboski@gmail.com>
parents:
37433
diff
changeset
|
2558 | bytes = g_byte_array_new_take((guint8 *) msg, strlen(msg)); |
|
37416
77536a48b4be
facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents:
37414
diff
changeset
|
2559 | cytes = fb_util_zlib_deflate(bytes, &err); |
|
37414
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
2560 | |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
2561 | FB_API_ERROR_EMIT(api, err, |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
2562 | g_byte_array_free(bytes, TRUE); |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
2563 | return; |
|
252bb96afbe0
facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents:
37385
diff
changeset
|
2564 | ); |
|
37278
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
2565 | |
|
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
2566 | fb_util_debug_hexdump(FB_UTIL_DEBUG_INFO, bytes, |
|
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
2567 | "Writing message (topic: %s)", |
|
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
2568 | topic); |
|
3ee1b27dacc4
facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents:
37273
diff
changeset
|
2569 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2570 | fb_mqtt_publish(api->mqtt, topic, cytes); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2571 | g_byte_array_free(cytes, TRUE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2572 | g_byte_array_free(bytes, TRUE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2573 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2574 | |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2575 | void |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2576 | fb_api_read(FbApi *api, FbId id, gboolean thread) |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2577 | { |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2578 | const gchar *key; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2579 | gchar *json; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2580 | JsonBuilder *bldr; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2581 | |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2582 | g_return_if_fail(FB_IS_API(api)); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2583 | |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2584 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2585 | fb_json_bldr_add_bool(bldr, "state", TRUE); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2586 | fb_json_bldr_add_int(bldr, "syncSeqId", api->sid); |
|
37304
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2587 | fb_json_bldr_add_str(bldr, "mark", "read"); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2588 | |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2589 | key = thread ? "threadFbId" : "otherUserFbId"; |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2590 | fb_json_bldr_add_strf(bldr, key, "%" FB_ID_FORMAT, id); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2591 | |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2592 | json = fb_json_bldr_close(bldr, JSON_NODE_OBJECT, NULL); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2593 | fb_api_publish(api, "/mark_thread", "%s", json); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2594 | g_free(json); |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2595 | } |
|
168a859417f6
facebook: implemented marking threads as read
James Geboski <jgeboski@gmail.com>
parents:
37300
diff
changeset
|
2596 | |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2597 | static GSList * |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2598 | fb_api_cb_unread_parse_attach(FbApi *api, const gchar *mid, FbApiMessage *msg, |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2599 | GSList *msgs, JsonNode *root, GError **error) |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2600 | { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2601 | const gchar *str; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2602 | FbApiMessage *dmsg; |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2603 | FbId id; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2604 | FbJsonValues *values; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2605 | GError *err = NULL; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2606 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2607 | values = fb_json_values_new(root); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2608 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2609 | "$.attachment_fbid"); |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2610 | fb_json_values_set_array(values, FALSE, "$.blob_attachments"); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2611 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2612 | while (fb_json_values_update(values, &err)) { |
|
37355
047c6f5d4392
facebook: display thread URL for videos
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
2613 | str = fb_json_values_next_str(values, NULL); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2614 | id = FB_ID_FROM_STR(str); |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
2615 | dmsg = g_memdup2(msg, sizeof(*msg)); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2616 | fb_api_attach(api, id, mid, dmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2617 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2618 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2619 | if (G_UNLIKELY(err != NULL)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2620 | g_propagate_error(error, err); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2621 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2622 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2623 | g_object_unref(values); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2624 | return msgs; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2625 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2626 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2627 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2628 | fb_api_cb_unread_msgs(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2629 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2630 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2631 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2632 | const gchar *body; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2633 | const gchar *str; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2634 | FbApiMessage *dmsg; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2635 | FbApiMessage msg; |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2636 | FbId id; |
|
37335
53db47311bda
facebook: fixed unread messages for group chats
James Geboski <jgeboski@gmail.com>
parents:
37334
diff
changeset
|
2637 | FbId tid; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2638 | FbJsonValues *values; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2639 | gchar *xma; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2640 | GError *err = NULL; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2641 | GSList *msgs = NULL; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2642 | JsonNode *node; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2643 | JsonNode *root; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2644 | JsonNode *xode; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2645 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2646 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2647 | g_object_unref(soupmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2648 | return; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2649 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2650 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2651 | node = fb_json_node_get_nth(root, 0); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2652 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2653 | if (node == NULL) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
2654 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
2655 | _("Failed to obtain unread messages")); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2656 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2657 | g_object_unref(soupmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2658 | return; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2659 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2660 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2661 | values = fb_json_values_new(node); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2662 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2663 | "$.thread_key.thread_fbid"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2664 | fb_json_values_update(values, &err); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2665 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2666 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2667 | g_object_unref(values); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2668 | g_object_unref(soupmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2669 | return; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2670 | ); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2671 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2672 | fb_api_message_reset(&msg, FALSE); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2673 | str = fb_json_values_next_str(values, "0"); |
|
37335
53db47311bda
facebook: fixed unread messages for group chats
James Geboski <jgeboski@gmail.com>
parents:
37334
diff
changeset
|
2674 | tid = FB_ID_FROM_STR(str); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2675 | g_object_unref(values); |
|
37335
53db47311bda
facebook: fixed unread messages for group chats
James Geboski <jgeboski@gmail.com>
parents:
37334
diff
changeset
|
2676 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2677 | values = fb_json_values_new(node); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2678 | fb_json_values_add(values, FB_JSON_TYPE_BOOL, TRUE, "$.unread"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2679 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2680 | "$.message_sender.messaging_actor.id"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2681 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.message.text"); |
|
37475
643d7b0aadbd
facebook: preserve the timestamp on incoming messages
James Geboski <jgeboski@gmail.com>
parents:
37474
diff
changeset
|
2682 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, |
|
643d7b0aadbd
facebook: preserve the timestamp on incoming messages
James Geboski <jgeboski@gmail.com>
parents:
37474
diff
changeset
|
2683 | "$.timestamp_precise"); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2684 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.sticker.id"); |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2685 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.message_id"); |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2686 | fb_json_values_set_array(values, FALSE, "$.messages.nodes"); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2687 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2688 | while (fb_json_values_update(values, &err)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2689 | if (!fb_json_values_next_bool(values, FALSE)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2690 | continue; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2691 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2692 | |
|
37335
53db47311bda
facebook: fixed unread messages for group chats
James Geboski <jgeboski@gmail.com>
parents:
37334
diff
changeset
|
2693 | str = fb_json_values_next_str(values, "0"); |
|
53db47311bda
facebook: fixed unread messages for group chats
James Geboski <jgeboski@gmail.com>
parents:
37334
diff
changeset
|
2694 | body = fb_json_values_next_str(values, NULL); |
|
53db47311bda
facebook: fixed unread messages for group chats
James Geboski <jgeboski@gmail.com>
parents:
37334
diff
changeset
|
2695 | |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2696 | fb_api_message_reset(&msg, FALSE); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2697 | msg.uid = FB_ID_FROM_STR(str); |
|
37335
53db47311bda
facebook: fixed unread messages for group chats
James Geboski <jgeboski@gmail.com>
parents:
37334
diff
changeset
|
2698 | msg.tid = tid; |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2699 | |
|
37475
643d7b0aadbd
facebook: preserve the timestamp on incoming messages
James Geboski <jgeboski@gmail.com>
parents:
37474
diff
changeset
|
2700 | str = fb_json_values_next_str(values, "0"); |
|
643d7b0aadbd
facebook: preserve the timestamp on incoming messages
James Geboski <jgeboski@gmail.com>
parents:
37474
diff
changeset
|
2701 | msg.tstamp = g_ascii_strtoll(str, NULL, 10); |
|
643d7b0aadbd
facebook: preserve the timestamp on incoming messages
James Geboski <jgeboski@gmail.com>
parents:
37474
diff
changeset
|
2702 | |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2703 | if (body != NULL) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
2704 | dmsg = g_memdup2(&msg, sizeof(msg)); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2705 | dmsg->text = g_strdup(body); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2706 | msgs = g_slist_prepend(msgs, dmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2707 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2708 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2709 | str = fb_json_values_next_str(values, NULL); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2710 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2711 | if (str != NULL) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
2712 | dmsg = g_memdup2(&msg, sizeof(msg)); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2713 | id = FB_ID_FROM_STR(str); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2714 | fb_api_sticker(api, id, dmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2715 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2716 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2717 | node = fb_json_values_get_root(values); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2718 | xode = fb_json_node_get(node, "$.extensible_attachment", NULL); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2719 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2720 | if (xode != NULL) { |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2721 | xma = fb_api_xma_parse(api, body, xode, &err); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2722 | |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2723 | if (xma != NULL) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
2724 | dmsg = g_memdup2(&msg, sizeof(msg)); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2725 | dmsg->text = xma; |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2726 | msgs = g_slist_prepend(msgs, dmsg); |
|
37354
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37348
diff
changeset
|
2727 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37348
diff
changeset
|
2728 | |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2729 | json_node_free(xode); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2730 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2731 | if (G_UNLIKELY(err != NULL)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2732 | break; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2733 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2734 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2735 | |
|
37370
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2736 | str = fb_json_values_next_str(values, NULL); |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2737 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2738 | if (str == NULL) { |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2739 | continue; |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2740 | } |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2741 | |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2742 | msgs = fb_api_cb_unread_parse_attach(api, str, &msg, msgs, |
|
2d832af0f400
facebook: fetch URLs for all messages attachments
James Geboski <jgeboski@gmail.com>
parents:
37369
diff
changeset
|
2743 | node, &err); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2744 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2745 | if (G_UNLIKELY(err != NULL)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2746 | break; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2747 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2748 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2749 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2750 | if (G_UNLIKELY(err == NULL)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2751 | msgs = g_slist_reverse(msgs); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2752 | g_signal_emit_by_name(api, "messages", msgs); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2753 | } else { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2754 | fb_api_error_emit(api, err); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2755 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2756 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2757 | g_slist_free_full(msgs, (GDestroyNotify) fb_api_message_free); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2758 | g_object_unref(values); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2759 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2760 | g_object_unref(soupmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2761 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2762 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2763 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2764 | fb_api_cb_unread(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2765 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2766 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2767 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2768 | const gchar *id; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2769 | FbJsonValues *values; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2770 | GError *err = NULL; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2771 | gint64 count; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2772 | JsonBuilder *bldr; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2773 | JsonNode *root; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2774 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2775 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2776 | g_object_unref(soupmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2777 | return; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2778 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2779 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2780 | values = fb_json_values_new(root); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2781 | fb_json_values_add(values, FB_JSON_TYPE_INT, TRUE, "$.unread_count"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2782 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2783 | "$.thread_key.other_user_id"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2784 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2785 | "$.thread_key.thread_fbid"); |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2786 | fb_json_values_set_array(values, FALSE, "$.viewer.message_threads" |
|
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2787 | ".nodes"); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2788 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2789 | while (fb_json_values_update(values, &err)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2790 | count = fb_json_values_next_int(values, -5); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2791 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2792 | if (count < 1) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2793 | continue; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2794 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2795 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2796 | id = fb_json_values_next_str(values, NULL); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2797 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2798 | if (id == NULL) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2799 | id = fb_json_values_next_str(values, "0"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2800 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2801 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2802 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2803 | fb_json_bldr_arr_begin(bldr, "0"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2804 | fb_json_bldr_add_str(bldr, NULL, id); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2805 | fb_json_bldr_arr_end(bldr); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2806 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2807 | fb_json_bldr_add_str(bldr, "10", "true"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2808 | fb_json_bldr_add_str(bldr, "11", "true"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2809 | fb_json_bldr_add_int(bldr, "12", count); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2810 | fb_json_bldr_add_str(bldr, "13", "false"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2811 | fb_api_http_query(api, FB_API_QUERY_THREAD, bldr, |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2812 | fb_api_cb_unread_msgs); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2813 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2814 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2815 | if (G_UNLIKELY(err != NULL)) { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2816 | fb_api_error_emit(api, err); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2817 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2818 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2819 | g_object_unref(values); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2820 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2821 | g_object_unref(soupmsg); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2822 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2823 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2824 | void |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2825 | fb_api_unread(FbApi *api) |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2826 | { |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2827 | JsonBuilder *bldr; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2828 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2829 | g_return_if_fail(FB_IS_API(api)); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2830 | |
|
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2831 | if (api->unread < 1) { |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2832 | return; |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2833 | } |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2834 | |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2835 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2836 | fb_json_bldr_add_str(bldr, "2", "true"); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2837 | fb_json_bldr_add_int(bldr, "1", api->unread); |
|
37326
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2838 | fb_json_bldr_add_str(bldr, "12", "true"); |
|
c768f27357ec
facebook: implemented the retrieval of unread messages
James Geboski <jgeboski@gmail.com>
parents:
37325
diff
changeset
|
2839 | fb_json_bldr_add_str(bldr, "13", "false"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2840 | fb_api_http_query(api, FB_API_QUERY_THREADS, bldr, |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
2841 | fb_api_cb_unread); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2842 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2843 | |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2844 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2845 | fb_api_cb_sticker(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2846 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2847 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2848 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2849 | FbApiMessage *msg; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2850 | FbJsonValues *values; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2851 | GError *err = NULL; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2852 | GSList *msgs = NULL; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2853 | JsonNode *node; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2854 | JsonNode *root; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2855 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2856 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2857 | g_object_unref(soupmsg); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2858 | return; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2859 | } |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2860 | |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2861 | node = fb_json_node_get_nth(root, 0); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2862 | values = fb_json_values_new(node); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2863 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2864 | "$.thread_image.uri"); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2865 | fb_json_values_update(values, &err); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2866 | |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2867 | FB_API_ERROR_EMIT(api, err, |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2868 | g_object_unref(values); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2869 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2870 | g_object_unref(soupmsg); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2871 | return; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2872 | ); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2873 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2874 | msg = g_object_steal_data(G_OBJECT(soupmsg), "fb-api-msg"); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2875 | msg->flags |= FB_API_MESSAGE_FLAG_IMAGE; |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2876 | msg->text = fb_json_values_next_str_dup(values, NULL); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2877 | msgs = g_slist_prepend(msgs, msg); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2878 | |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2879 | g_signal_emit_by_name(api, "messages", msgs); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2880 | g_slist_free_full(msgs, (GDestroyNotify) fb_api_message_free); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2881 | g_object_unref(values); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2882 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2883 | g_object_unref(soupmsg); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2884 | } |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2885 | |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2886 | static void |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2887 | fb_api_sticker(FbApi *api, FbId sid, FbApiMessage *msg) |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2888 | { |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2889 | JsonBuilder *bldr; |
|
40029
70a9571132e4
Convert most Facebook prpl to libsoup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39921
diff
changeset
|
2890 | SoupMessage *http; |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2891 | |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2892 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2893 | fb_json_bldr_arr_begin(bldr, "0"); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2894 | fb_json_bldr_add_strf(bldr, NULL, "%" FB_ID_FORMAT, sid); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2895 | fb_json_bldr_arr_end(bldr); |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2896 | |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2897 | http = fb_api_http_query(api, FB_API_QUERY_STICKER, bldr, |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2898 | fb_api_cb_sticker); |
|
40032
66078eb9ad15
Replace custom data storage with GObject data.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40030
diff
changeset
|
2899 | g_object_set_data_full(G_OBJECT(http), "fb-api-msg", msg, |
|
66078eb9ad15
Replace custom data storage with GObject data.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40030
diff
changeset
|
2900 | (GDestroyNotify)fb_api_message_free); |
|
37369
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2901 | } |
|
ebcd09a1a124
facebook: display stickers in-line
James Geboski <jgeboski@gmail.com>
parents:
37367
diff
changeset
|
2902 | |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2903 | static gboolean |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2904 | fb_api_thread_parse(FbApi *api, FbApiThread *thrd, JsonNode *root, |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2905 | GError **error) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2906 | { |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2907 | const gchar *str; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2908 | FbApiUser *user; |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2909 | FbId uid; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2910 | FbJsonValues *values; |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2911 | gboolean haself = FALSE; |
|
38389
36e7d457c3d1
facebook: Don't fail on groupchats with only two members including self
dx <dx@dxzone.com.ar>
parents:
38388
diff
changeset
|
2912 | guint num_users = 0; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2913 | GError *err = NULL; |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2914 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2915 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2916 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2917 | "$.thread_key.thread_fbid"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2918 | fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.name"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2919 | fb_json_values_update(values, &err); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2920 | |
|
37321
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
2921 | if (G_UNLIKELY(err != NULL)) { |
|
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
2922 | g_propagate_error(error, err); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2923 | g_object_unref(values); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2924 | return FALSE; |
|
37321
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
2925 | } |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2926 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2927 | str = fb_json_values_next_str(values, NULL); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2928 | |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2929 | if (str == NULL) { |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2930 | g_object_unref(values); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2931 | return FALSE; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2932 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2933 | |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2934 | thrd->tid = FB_ID_FROM_STR(str); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2935 | thrd->topic = fb_json_values_next_str_dup(values, NULL); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2936 | g_object_unref(values); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2937 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2938 | values = fb_json_values_new(root); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2939 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2940 | "$.messaging_actor.id"); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2941 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2942 | "$.messaging_actor.name"); |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
2943 | fb_json_values_set_array(values, TRUE, "$.all_participants.nodes"); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2944 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2945 | while (fb_json_values_update(values, &err)) { |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
2946 | str = fb_json_values_next_str(values, "0"); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2947 | uid = FB_ID_FROM_STR(str); |
|
38389
36e7d457c3d1
facebook: Don't fail on groupchats with only two members including self
dx <dx@dxzone.com.ar>
parents:
38388
diff
changeset
|
2948 | num_users++; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2949 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
2950 | if (uid != api->uid) { |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
2951 | user = g_new0(FbApiUser, 1); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2952 | user->uid = uid; |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2953 | user->name = fb_json_values_next_str_dup(values, NULL); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
2954 | thrd->users = g_slist_prepend(thrd->users, user); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2955 | } else { |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2956 | haself = TRUE; |
|
37273
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2957 | } |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2958 | } |
|
37273
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2959 | |
|
37321
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
2960 | if (G_UNLIKELY(err != NULL)) { |
|
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
2961 | g_propagate_error(error, err); |
|
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
2962 | fb_api_thread_reset(thrd, TRUE); |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2963 | g_object_unref(values); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2964 | return FALSE; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2965 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2966 | |
|
38389
36e7d457c3d1
facebook: Don't fail on groupchats with only two members including self
dx <dx@dxzone.com.ar>
parents:
38388
diff
changeset
|
2967 | if (num_users < 2 || !haself) { |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2968 | g_object_unref(values); |
|
37321
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
2969 | return FALSE; |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2970 | } |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2971 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
2972 | g_object_unref(values); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2973 | return TRUE; |
|
37273
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2974 | } |
|
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2975 | |
|
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2976 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2977 | fb_api_cb_thread(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2978 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2979 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2980 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2981 | FbApiThread thrd; |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2982 | GError *err = NULL; |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
2983 | JsonNode *node; |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2984 | JsonNode *root; |
|
37273
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2985 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
2986 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2987 | g_object_unref(soupmsg); |
|
37273
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2988 | return; |
|
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2989 | } |
|
2faa9b0d80eb
facebook: merged fb_api_cb_thread_info() and fb_api_cb_thread_list()
James Geboski <jgeboski@gmail.com>
parents:
37269
diff
changeset
|
2990 | |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
2991 | node = fb_json_node_get_nth(root, 0); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2992 | |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2993 | if (node == NULL) { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
2994 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
2995 | _("Failed to obtain thread information")); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2996 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
2997 | g_object_unref(soupmsg); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
2998 | return; |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
2999 | } |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3000 | |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3001 | fb_api_thread_reset(&thrd, FALSE); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3002 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3003 | if (!fb_api_thread_parse(api, &thrd, node, &err)) { |
|
37321
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
3004 | if (G_LIKELY(err == NULL)) { |
|
38390
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
3005 | if (thrd.tid) { |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
3006 | g_signal_emit_by_name(api, "thread-kicked", &thrd); |
|
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
3007 | } else { |
|
39921
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
3008 | fb_api_error_literal(api, FB_API_ERROR_GENERAL, |
|
a9c92a82f4c8
Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39918
diff
changeset
|
3009 | _("Failed to parse thread information")); |
|
38390
44e088051f69
facebook: Don't disconnect when trying to join a chat after being kicked
dx <dx@dxzone.com.ar>
parents:
38389
diff
changeset
|
3010 | } |
|
37321
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
3011 | } else { |
|
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
3012 | fb_api_error_emit(api, err); |
|
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
3013 | } |
|
5631c25850cc
facebook: fixed issues and leaks with API error handling
James Geboski <jgeboski@gmail.com>
parents:
37319
diff
changeset
|
3014 | } else { |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3015 | g_signal_emit_by_name(api, "thread", &thrd); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3016 | } |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3017 | |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3018 | fb_api_thread_reset(&thrd, TRUE); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3019 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3020 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3021 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3022 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3023 | void |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3024 | fb_api_thread(FbApi *api, FbId tid) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3025 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3026 | JsonBuilder *bldr; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3027 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3028 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3029 | fb_json_bldr_arr_begin(bldr, "0"); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3030 | fb_json_bldr_add_strf(bldr, NULL, "%" FB_ID_FORMAT, tid); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3031 | fb_json_bldr_arr_end(bldr); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3032 | |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3033 | fb_json_bldr_add_str(bldr, "10", "false"); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3034 | fb_json_bldr_add_str(bldr, "11", "false"); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3035 | fb_json_bldr_add_str(bldr, "13", "false"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3036 | fb_api_http_query(api, FB_API_QUERY_THREAD, bldr, fb_api_cb_thread); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3037 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3038 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3039 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3040 | fb_api_cb_thread_create(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3041 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3042 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3043 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3044 | const gchar *str; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3045 | FbId tid; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3046 | FbJsonValues *values; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3047 | GError *err = NULL; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3048 | JsonNode *root; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3049 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3050 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3051 | g_object_unref(soupmsg); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3052 | return; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3053 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3054 | |
|
37334
860ee76f5f58
facebook: fixed all JSON arrays being required
James Geboski <jgeboski@gmail.com>
parents:
37333
diff
changeset
|
3055 | values = fb_json_values_new(root); |
|
38399
d81c2350fc21
facebook: Fix creating threads, inviting, kicking members (misc api changes)
dx <dx@dxzone.com.ar>
parents:
38398
diff
changeset
|
3056 | fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.id"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3057 | fb_json_values_update(values, &err); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3058 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3059 | FB_API_ERROR_EMIT(api, err, |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
3060 | g_object_unref(values); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3061 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3062 | g_object_unref(soupmsg); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3063 | return; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3064 | ); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3065 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3066 | str = fb_json_values_next_str(values, "0"); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3067 | tid = FB_ID_FROM_STR(str); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3068 | g_signal_emit_by_name(api, "thread-create", tid); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3069 | |
|
37363
7201f07fe8f7
facebook: gobjectified the FbJsonValues interface
James Geboski <jgeboski@gmail.com>
parents:
37362
diff
changeset
|
3070 | g_object_unref(values); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3071 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3072 | g_object_unref(soupmsg); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3073 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3074 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3075 | void |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3076 | fb_api_thread_create(FbApi *api, GSList *uids) |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3077 | { |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3078 | FbHttpParams *prms; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3079 | FbId *uid; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3080 | gchar *json; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3081 | GSList *l; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3082 | JsonBuilder *bldr; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3083 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3084 | g_return_if_fail(FB_IS_API(api)); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3085 | g_warn_if_fail(g_slist_length(uids) > 1); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3086 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3087 | bldr = fb_json_bldr_new(JSON_NODE_ARRAY); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3088 | fb_json_bldr_obj_begin(bldr, NULL); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3089 | fb_json_bldr_add_str(bldr, "type", "id"); |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
3090 | fb_json_bldr_add_strf(bldr, "id", "%" FB_ID_FORMAT, api->uid); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3091 | fb_json_bldr_obj_end(bldr); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3092 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3093 | for (l = uids; l != NULL; l = l->next) { |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3094 | uid = l->data; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3095 | fb_json_bldr_obj_begin(bldr, NULL); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3096 | fb_json_bldr_add_str(bldr, "type", "id"); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3097 | fb_json_bldr_add_strf(bldr, "id", "%" FB_ID_FORMAT, *uid); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3098 | fb_json_bldr_obj_end(bldr); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3099 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3100 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3101 | json = fb_json_bldr_close(bldr, JSON_NODE_ARRAY, NULL); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3102 | prms = fb_http_params_new(); |
|
38399
d81c2350fc21
facebook: Fix creating threads, inviting, kicking members (misc api changes)
dx <dx@dxzone.com.ar>
parents:
38398
diff
changeset
|
3103 | fb_http_params_set_str(prms, "recipients", json); |
|
d81c2350fc21
facebook: Fix creating threads, inviting, kicking members (misc api changes)
dx <dx@dxzone.com.ar>
parents:
38398
diff
changeset
|
3104 | fb_api_http_req(api, FB_API_URL_THREADS, "createGroup", "POST", |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3105 | prms, fb_api_cb_thread_create); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3106 | g_free(json); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3107 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3108 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3109 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3110 | fb_api_thread_invite(FbApi *api, FbId tid, FbId uid) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3111 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3112 | FbHttpParams *prms; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3113 | gchar *json; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3114 | JsonBuilder *bldr; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3115 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3116 | bldr = fb_json_bldr_new(JSON_NODE_ARRAY); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3117 | fb_json_bldr_obj_begin(bldr, NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3118 | fb_json_bldr_add_str(bldr, "type", "id"); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3119 | fb_json_bldr_add_strf(bldr, "id", "%" FB_ID_FORMAT, uid); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3120 | fb_json_bldr_obj_end(bldr); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3121 | json = fb_json_bldr_close(bldr, JSON_NODE_ARRAY, NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3122 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3123 | prms = fb_http_params_new(); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3124 | fb_http_params_set_str(prms, "to", json); |
|
38399
d81c2350fc21
facebook: Fix creating threads, inviting, kicking members (misc api changes)
dx <dx@dxzone.com.ar>
parents:
38398
diff
changeset
|
3125 | fb_http_params_set_strf(prms, "id", "t_%" FB_ID_FORMAT, tid); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3126 | fb_api_http_req(api, FB_API_URL_PARTS, "addMembers", "POST", |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3127 | prms, fb_api_cb_http_bool); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3128 | g_free(json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3129 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3130 | |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3131 | void |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3132 | fb_api_thread_remove(FbApi *api, FbId tid, FbId uid) |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3133 | { |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3134 | FbHttpParams *prms; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3135 | gchar *json; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3136 | JsonBuilder *bldr; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3137 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3138 | g_return_if_fail(FB_IS_API(api)); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3139 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3140 | prms = fb_http_params_new(); |
|
38399
d81c2350fc21
facebook: Fix creating threads, inviting, kicking members (misc api changes)
dx <dx@dxzone.com.ar>
parents:
38398
diff
changeset
|
3141 | fb_http_params_set_strf(prms, "id", "t_%" FB_ID_FORMAT, tid); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3142 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3143 | if (uid == 0) { |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
3144 | uid = api->uid; |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3145 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3146 | |
|
41728
e9b96ef5ea38
De-privatize Facebook classes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41290
diff
changeset
|
3147 | if (uid != api->uid) { |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3148 | bldr = fb_json_bldr_new(JSON_NODE_ARRAY); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3149 | fb_json_bldr_add_strf(bldr, NULL, "%" FB_ID_FORMAT, uid); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3150 | json = fb_json_bldr_close(bldr, JSON_NODE_ARRAY, NULL); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3151 | fb_http_params_set_str(prms, "to", json); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3152 | g_free(json); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3153 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3154 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3155 | fb_api_http_req(api, FB_API_URL_PARTS, "removeMembers", "DELETE", |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3156 | prms, fb_api_cb_http_bool); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3157 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3158 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3159 | void |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3160 | fb_api_thread_topic(FbApi *api, FbId tid, const gchar *topic) |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3161 | { |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3162 | FbHttpParams *prms; |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3163 | |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3164 | prms = fb_http_params_new(); |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3165 | fb_http_params_set_str(prms, "name", topic); |
|
38398
a2fe2e8fe876
facebook: Fix setting channel topics (tid=t_id.1234 is no longer valid)
dx <dx@dxzone.com.ar>
parents:
38397
diff
changeset
|
3166 | fb_http_params_set_int(prms, "tid", tid); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3167 | fb_api_http_req(api, FB_API_URL_TOPIC, "setThreadName", |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3168 | "messaging.setthreadname", prms, fb_api_cb_http_bool); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3169 | } |
|
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3170 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3171 | static void |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3172 | fb_api_cb_threads(GObject *source, GAsyncResult *result, gpointer data) { |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3173 | SoupSession *session = SOUP_SESSION(source); |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3174 | SoupMessage *soupmsg = data; |
|
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3175 | FbApi *api = g_object_get_data(G_OBJECT(soupmsg), "facebook-api"); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3176 | FbApiThread *dthrd; |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3177 | FbApiThread thrd; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3178 | GError *err = NULL; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3179 | GList *elms; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3180 | GList *l; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3181 | GSList *thrds = NULL; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3182 | JsonArray *arr; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3183 | JsonNode *root; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3184 | |
|
41839
143c68ca625d
Port facebook to libsoup3
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41728
diff
changeset
|
3185 | if (!fb_api_http_chk(api, session, result, soupmsg, &root)) { |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3186 | g_object_unref(soupmsg); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3187 | return; |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3188 | } |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3189 | |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
3190 | arr = fb_json_node_get_arr(root, "$.viewer.message_threads.nodes", |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
3191 | &err); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3192 | FB_API_ERROR_EMIT(api, err, |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
3193 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3194 | g_object_unref(soupmsg); |
|
37314
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
3195 | return; |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
3196 | ); |
|
1fedb5e19577
facebook: refactored the parsing of JSON values
James Geboski <jgeboski@gmail.com>
parents:
37313
diff
changeset
|
3197 | |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3198 | elms = json_array_get_elements(arr); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3199 | |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3200 | for (l = elms; l != NULL; l = l->next) { |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3201 | fb_api_thread_reset(&thrd, FALSE); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3202 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3203 | if (fb_api_thread_parse(api, &thrd, l->data, &err)) { |
|
41288
600e7b4219de
Replace shallow *_dup calls with g_memdup2 or g_new0
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41287
diff
changeset
|
3204 | dthrd = g_memdup2(&thrd, sizeof(thrd)); |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3205 | thrds = g_slist_prepend(thrds, dthrd); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3206 | } else { |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3207 | fb_api_thread_reset(&thrd, TRUE); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3208 | } |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3209 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3210 | if (G_UNLIKELY(err != NULL)) { |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3211 | break; |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3212 | } |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3213 | } |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3214 | |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3215 | if (G_LIKELY(err == NULL)) { |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3216 | thrds = g_slist_reverse(thrds); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3217 | g_signal_emit_by_name(api, "threads", thrds); |
|
37316
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3218 | } else { |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3219 | fb_api_error_emit(api, err); |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3220 | } |
|
9e3520d6ec49
facebook: refactored and improved JSON error handling
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
3221 | |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3222 | g_slist_free_full(thrds, (GDestroyNotify) fb_api_thread_free); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3223 | g_list_free(elms); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3224 | json_array_unref(arr); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3225 | json_node_free(root); |
|
41880
4371fa2ce648
Fix SoupMessage leaks when using new libsoup3 API
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41839
diff
changeset
|
3226 | g_object_unref(soupmsg); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3227 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3228 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3229 | void |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3230 | fb_api_threads(FbApi *api) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3231 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3232 | JsonBuilder *bldr; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3233 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3234 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
37299
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3235 | fb_json_bldr_add_str(bldr, "2", "true"); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3236 | fb_json_bldr_add_str(bldr, "12", "false"); |
|
b14336308988
facebook: migrated FQL usage to GraphQL
James Geboski <jgeboski@gmail.com>
parents:
37298
diff
changeset
|
3237 | fb_json_bldr_add_str(bldr, "13", "false"); |
|
37332
c4f2fd45ffba
facebook: refactored internal API naming
James Geboski <jgeboski@gmail.com>
parents:
37331
diff
changeset
|
3238 | fb_api_http_query(api, FB_API_QUERY_THREADS, bldr, fb_api_cb_threads); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3239 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3240 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3241 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3242 | fb_api_typing(FbApi *api, FbId uid, gboolean state) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3243 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3244 | gchar *json; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3245 | JsonBuilder *bldr; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3246 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3247 | bldr = fb_json_bldr_new(JSON_NODE_OBJECT); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3248 | fb_json_bldr_add_int(bldr, "state", state != 0); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3249 | fb_json_bldr_add_strf(bldr, "to", "%" FB_ID_FORMAT, uid); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3250 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3251 | json = fb_json_bldr_close(bldr, JSON_NODE_OBJECT, NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3252 | fb_api_publish(api, "/typing", "%s", json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3253 | g_free(json); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3254 | } |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3255 | |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3256 | FbApiEvent * |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3257 | fb_api_event_dup(const FbApiEvent *event) |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3258 | { |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3259 | FbApiEvent *ret; |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3260 | |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3261 | if (event == NULL) { |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
3262 | return NULL; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3263 | } |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3264 | |
|
40756
3a58ef28ee44
Implement mitigation for GHSL-2021-045
Gary Kramlich <grim@reaperworld.com>
parents:
40519
diff
changeset
|
3265 | ret = g_memdup2(event, sizeof *event); |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3266 | ret->text = g_strdup(event->text); |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3267 | |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3268 | return ret; |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3269 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3270 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3271 | void |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3272 | fb_api_event_reset(FbApiEvent *event, gboolean deep) |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3273 | { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3274 | g_return_if_fail(event != NULL); |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3275 | |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3276 | if (deep) { |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3277 | g_free(event->text); |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3278 | } |
|
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3279 | |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3280 | memset(event, 0, sizeof *event); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3281 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3282 | |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3283 | void |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3284 | fb_api_event_free(FbApiEvent *event) |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3285 | { |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3286 | if (G_LIKELY(event != NULL)) { |
|
37380
06ad6f6aa43a
facebook: implemented group chat topic change events
James Geboski <jgeboski@gmail.com>
parents:
37379
diff
changeset
|
3287 | g_free(event->text); |
|
37337
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3288 | g_free(event); |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3289 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3290 | } |
|
aecff282de76
facebook: handle group chat events
James Geboski <jgeboski@gmail.com>
parents:
37336
diff
changeset
|
3291 | |
|
41290
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3292 | G_DEFINE_BOXED_TYPE(FbApiEvent, fb_api_event, fb_api_event_dup, |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3293 | fb_api_event_free) |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3294 | |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3295 | FbApiMessage * |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3296 | fb_api_message_dup(const FbApiMessage *msg) |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3297 | { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3298 | FbApiMessage *ret; |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3299 | |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3300 | if (msg == NULL) { |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
3301 | return NULL; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3302 | } |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3303 | |
|
40756
3a58ef28ee44
Implement mitigation for GHSL-2021-045
Gary Kramlich <grim@reaperworld.com>
parents:
40519
diff
changeset
|
3304 | ret = g_memdup2(msg, sizeof *msg); |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3305 | ret->text = g_strdup(msg->text); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3306 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3307 | return ret; |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3308 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3309 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3310 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3311 | fb_api_message_reset(FbApiMessage *msg, gboolean deep) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3312 | { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3313 | g_return_if_fail(msg != NULL); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3314 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3315 | if (deep) { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3316 | g_free(msg->text); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3317 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3318 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3319 | memset(msg, 0, sizeof *msg); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3320 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3321 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3322 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3323 | fb_api_message_free(FbApiMessage *msg) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3324 | { |
|
37330
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3325 | if (G_LIKELY(msg != NULL)) { |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3326 | g_free(msg->text); |
|
37330
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3327 | g_free(msg); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3328 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3329 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3330 | |
|
41290
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3331 | G_DEFINE_BOXED_TYPE(FbApiMessage, fb_api_message, fb_api_message_dup, |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3332 | fb_api_message_free) |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3333 | |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3334 | FbApiPresence * |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3335 | fb_api_presence_dup(const FbApiPresence *presence) |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3336 | { |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3337 | return g_memdup2(presence, sizeof *presence); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3338 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3339 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3340 | void |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3341 | fb_api_presence_reset(FbApiPresence *presence) |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3342 | { |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3343 | g_return_if_fail(presence != NULL); |
|
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3344 | memset(presence, 0, sizeof *presence); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3345 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3346 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3347 | void |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3348 | fb_api_presence_free(FbApiPresence *presence) |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3349 | { |
|
41084
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3350 | if (G_LIKELY(presence != NULL)) { |
|
72d6941bfa2e
Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40819
diff
changeset
|
3351 | g_free(presence); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3352 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3353 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3354 | |
|
41290
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3355 | G_DEFINE_BOXED_TYPE(FbApiPresence, fb_api_presence, fb_api_presence_dup, |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3356 | fb_api_presence_free) |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3357 | |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3358 | FbApiThread * |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3359 | fb_api_thread_dup(const FbApiThread *thrd) |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3360 | { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3361 | FbApiThread *ret; |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3362 | |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3363 | if (thrd == NULL) { |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
3364 | return NULL; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3365 | } |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3366 | |
|
40756
3a58ef28ee44
Implement mitigation for GHSL-2021-045
Gary Kramlich <grim@reaperworld.com>
parents:
40519
diff
changeset
|
3367 | ret = g_memdup2(thrd, sizeof *thrd); |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3368 | ret->topic = g_strdup(thrd->topic); |
|
41969
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
3369 | ret->users = g_slist_copy_deep(thrd->users, |
|
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
3370 | (GCopyFunc)(GCallback)fb_api_user_dup, |
|
86518b429f50
Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41921
diff
changeset
|
3371 | NULL); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3372 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3373 | return ret; |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3374 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3375 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3376 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3377 | fb_api_thread_reset(FbApiThread *thrd, gboolean deep) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3378 | { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3379 | g_return_if_fail(thrd != NULL); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3380 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3381 | if (deep) { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3382 | g_slist_free_full(thrd->users, (GDestroyNotify) fb_api_user_free); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3383 | g_free(thrd->topic); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3384 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3385 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3386 | memset(thrd, 0, sizeof *thrd); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3387 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3388 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3389 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3390 | fb_api_thread_free(FbApiThread *thrd) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3391 | { |
|
37330
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3392 | if (G_LIKELY(thrd != NULL)) { |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3393 | g_slist_free_full(thrd->users, (GDestroyNotify) fb_api_user_free); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3394 | g_free(thrd->topic); |
|
37330
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3395 | g_free(thrd); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3396 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3397 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3398 | |
|
41290
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3399 | G_DEFINE_BOXED_TYPE(FbApiThread, fb_api_thread, fb_api_thread_dup, |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3400 | fb_api_thread_free) |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3401 | |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3402 | FbApiTyping * |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3403 | fb_api_typing_dup(const FbApiTyping *typg) |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3404 | { |
|
40756
3a58ef28ee44
Implement mitigation for GHSL-2021-045
Gary Kramlich <grim@reaperworld.com>
parents:
40519
diff
changeset
|
3405 | return g_memdup2(typg, sizeof *typg); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3406 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3407 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3408 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3409 | fb_api_typing_reset(FbApiTyping *typg) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3410 | { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3411 | g_return_if_fail(typg != NULL); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3412 | memset(typg, 0, sizeof *typg); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3413 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3414 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3415 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3416 | fb_api_typing_free(FbApiTyping *typg) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3417 | { |
|
37330
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3418 | if (G_LIKELY(typg != NULL)) { |
|
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3419 | g_free(typg); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3420 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3421 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3422 | |
|
41290
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3423 | G_DEFINE_BOXED_TYPE(FbApiTyping, fb_api_typing, fb_api_typing_dup, |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3424 | fb_api_typing_free) |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3425 | |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3426 | FbApiUser * |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3427 | fb_api_user_dup(const FbApiUser *user) |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3428 | { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3429 | FbApiUser *ret; |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3430 | |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3431 | if (user == NULL) { |
|
41287
dd84ced2309c
Remove weird use of dup functions to allocate new structs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41216
diff
changeset
|
3432 | return NULL; |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3433 | } |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3434 | |
|
40756
3a58ef28ee44
Implement mitigation for GHSL-2021-045
Gary Kramlich <grim@reaperworld.com>
parents:
40519
diff
changeset
|
3435 | ret = g_memdup2(user, sizeof *user); |
|
41289
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3436 | ret->name = g_strdup(user->name); |
|
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3437 | ret->icon = g_strdup(user->icon); |
|
bcd5530b1462
Remove deep parameter from dup functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41288
diff
changeset
|
3438 | ret->csum = g_strdup(user->csum); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3439 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3440 | return ret; |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3441 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3442 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3443 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3444 | fb_api_user_reset(FbApiUser *user, gboolean deep) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3445 | { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3446 | g_return_if_fail(user != NULL); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3447 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3448 | if (deep) { |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3449 | g_free(user->name); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3450 | g_free(user->icon); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3451 | g_free(user->csum); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3452 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3453 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3454 | memset(user, 0, sizeof *user); |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3455 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3456 | |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3457 | void |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3458 | fb_api_user_free(FbApiUser *user) |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3459 | { |
|
37330
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3460 | if (G_LIKELY(user != NULL)) { |
|
37365
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3461 | g_free(user->name); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3462 | g_free(user->icon); |
|
b70cc4d02d68
facebook: refactored data structure usage
James Geboski <jgeboski@gmail.com>
parents:
37364
diff
changeset
|
3463 | g_free(user->csum); |
|
37330
f38cc51ad0ee
facebook: condensed the external structure memory managers
James Geboski <jgeboski@gmail.com>
parents:
37329
diff
changeset
|
3464 | g_free(user); |
|
37269
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3465 | } |
|
129e87951cd6
facebook: fixed JSON parsing for older json-glib versions
James Geboski <jgeboski@gmail.com>
parents:
37268
diff
changeset
|
3466 | } |
|
41290
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3467 | |
|
6b5fe1c14970
Add boxes around FbApi types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41289
diff
changeset
|
3468 | G_DEFINE_BOXED_TYPE(FbApiUser, fb_api_user, fb_api_user_dup, fb_api_user_free) |