Sat, 09 Aug 2025 00:19:03 +0800
Another Minor Milestone Reached, Conversation Creation & Recv works now
| 0 | 1 | /* |
| 2 | * Purple Satori Plugin - Satori Protocol Plugin for Purple3 | |
| 3 | * Copyright (C) 2025 Gong Zhile | |
| 4 | * | |
| 5 | * This library is free software; you can redistribute it and/or | |
| 6 | * modify it under the terms of the GNU Lesser General Public | |
| 7 | * License as published by the Free Software Foundation; either | |
| 8 | * version 2 of the License, or (at your option) any later version. | |
| 9 | * | |
| 10 | * This library is distributed in the hope that it will be useful, | |
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | * Lesser General Public License for more details. | |
| 14 | * | |
| 15 | * You should have received a copy of the GNU Lesser General Public | |
| 16 | * License along with this library; if not, see <https://www.gnu.org/licenses/>. | |
| 17 | */ | |
| 18 | ||
| 19 | #include <glib.h> | |
| 20 | #include <gio/gio.h> | |
| 21 | #include <glib-object.h> | |
| 22 | #include <json-glib/json-glib.h> | |
| 23 | #include <libsoup/soup-message.h> | |
| 24 | #include <libsoup/soup-session.h> | |
| 25 | ||
|
1
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
26 | #include "purplesatoriconnection.h" |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
27 | #include "purplesatoriplugin.h" |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
28 | #include "satorimessage.h" |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
29 | #include "satoritypes.h" |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
30 | #include "satoriapi.h" |
| 0 | 31 | |
|
1
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
32 | /****************************************************************************** |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
33 | * Purple Integration Helpers |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
34 | *****************************************************************************/ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
35 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
36 | PurpleConversationType |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
37 | satoir_channel_type_to_conversation_type(SatoriChannelType t) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
38 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
39 | switch (t) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
40 | case SATORI_CHANNEL_DIRECT: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
41 | return PURPLE_CONVERSATION_TYPE_DM; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
42 | case SATORI_CHANNEL_TEXT: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
43 | return PURPLE_CONVERSATION_TYPE_CHANNEL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
44 | case SATORI_CHANNEL_VOICE: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
45 | case SATORI_CHANNEL_CATEGORY: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
46 | return 0; /* Unsupported */ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
47 | default: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
48 | return 0; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
49 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
50 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
51 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
52 | void |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
53 | purple_satori_add_person_from_user(PurpleSatoriConnection *con, SatoriUser *user) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
54 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
55 | PurpleAccount *acc = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
56 | purple_connection_get_account(PURPLE_CONNECTION(con)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
57 | PurpleContactManager *manager = purple_contact_manager_get_default(); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
58 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
59 | PurpleContact *contact = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
60 | PurpleContactInfo *info = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
61 | PurplePresence *presence = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
62 | PurplePerson *person = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
63 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
64 | gboolean new_contact = FALSE, new_person = FALSE; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
65 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
66 | contact = purple_contact_manager_find_with_id(manager, acc, user->id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
67 | if (!PURPLE_IS_CONTACT(contact)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
68 | contact = purple_contact_new(acc, user->id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
69 | new_contact = TRUE; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
70 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
71 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
72 | /* Initialize PurpleContactInfo */ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
73 | info = PURPLE_CONTACT_INFO(contact); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
74 | purple_contact_info_set_display_name(info, user->nick ? |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
75 | user->nick : user->name); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
76 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
77 | /* Initialize PurplePerson */ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
78 | person = purple_contact_info_get_person(info); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
79 | if (!PURPLE_IS_PERSON(person)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
80 | person = g_object_new(PURPLE_TYPE_PERSON, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
81 | "id", user->id, NULL); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
82 | new_person = TRUE; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
83 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
84 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
85 | if (new_person) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
86 | purple_person_add_contact_info(person, info); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
87 | purple_contact_info_set_person(info, person); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
88 | g_clear_object(&person); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
89 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
90 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
91 | /* Initialize PurplePresence */ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
92 | presence = purple_contact_info_get_presence(info); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
93 | purple_presence_set_primitive(presence, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
94 | PURPLE_PRESENCE_PRIMITIVE_AVAILABLE); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
95 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
96 | if (new_contact) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
97 | purple_contact_manager_add(manager, contact); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
98 | g_clear_object(&contact); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
99 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
100 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
101 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
102 | PurpleConversation * |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
103 | purple_satori_add_conversation_from_chan(PurpleSatoriConnection *con, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
104 | SatoriChannel *chan) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
105 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
106 | PurpleAccount *acc = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
107 | purple_connection_get_account(PURPLE_CONNECTION(con)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
108 | PurpleConversationManager *manager = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
109 | purple_conversation_manager_get_default(); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
110 | PurpleConversation *conversation = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
111 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
112 | conversation = purple_conversation_manager_find_with_id(manager, acc, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
113 | chan->id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
114 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
115 | if (!PURPLE_IS_CONVERSATION(conversation)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
116 | PurpleConversationType type = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
117 | satoir_channel_type_to_conversation_type(chan->type); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
118 | if (!type) return NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
119 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
120 | conversation = g_object_new( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
121 | PURPLE_TYPE_CONVERSATION, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
122 | "account", acc, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
123 | "id", chan->id, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
124 | "title", chan->name ? chan->name : "Unnamed Channel", |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
125 | "type", type, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
126 | "online", TRUE, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
127 | NULL); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
128 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
129 | purple_conversation_manager_add(manager, conversation); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
130 | g_object_unref(conversation); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
131 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
132 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
133 | purple_conversation_set_online(conversation, TRUE); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
134 | return conversation; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
135 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
136 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
137 | PurpleConversationMember * |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
138 | purple_satori_add_conversation_member_from_user(PurpleSatoriConnection *con, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
139 | PurpleConversation *conversation, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
140 | SatoriUser *user) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
141 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
142 | PurpleAccount *acc = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
143 | purple_connection_get_account(PURPLE_CONNECTION(con)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
144 | PurpleContactManager *manager = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
145 | purple_contact_manager_get_default(); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
146 | PurpleContact *contact = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
147 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
148 | gboolean found = TRUE; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
149 | contact = purple_contact_manager_find_with_id(manager, acc, user->id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
150 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
151 | if (!PURPLE_IS_CONTACT(contact)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
152 | contact = purple_contact_new(acc, user->id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
153 | found = FALSE; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
154 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
155 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
156 | purple_contact_info_set_display_name( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
157 | PURPLE_CONTACT_INFO(contact), |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
158 | user->nick ? user->nick : user->name); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
159 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
160 | PurplePresence *presence = purple_contact_info_get_presence( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
161 | PURPLE_CONTACT_INFO(contact)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
162 | purple_presence_set_primitive(presence, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
163 | PURPLE_PRESENCE_PRIMITIVE_AVAILABLE); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
164 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
165 | if (!found) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
166 | purple_contact_manager_add(manager, contact); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
167 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
168 | PurpleConversationMembers *existing_members = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
169 | purple_conversation_get_members(conversation); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
170 | PurpleConversationMembers *new_members = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
171 | PurpleConversationMember *member = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
172 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
173 | member = purple_conversation_members_find_member( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
174 | existing_members, PURPLE_CONTACT_INFO(contact)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
175 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
176 | if (!PURPLE_IS_CONVERSATION_MEMBER(member)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
177 | new_members = purple_conversation_members_new(); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
178 | member = purple_conversation_members_add_member( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
179 | new_members, PURPLE_CONTACT_INFO(contact), FALSE, NULL); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
180 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
181 | purple_conversation_members_extend(existing_members, new_members); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
182 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
183 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
184 | g_clear_object(&contact); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
185 | return member; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
186 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
187 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
188 | /****************************************************************************** |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
189 | * Buddy/Friend List Synchronization |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
190 | *****************************************************************************/ |
| 0 | 191 | |
| 192 | static void | |
| 193 | satori_on_buddy_contacts_resp(SoupSession *session, | |
| 194 | GAsyncResult *res, | |
| 195 | PurpleSatoriConnection *con) | |
| 196 | { | |
| 197 | GError *error = NULL; | |
| 198 | GBytes *resp = soup_session_send_and_read_finish(session, res, &error); | |
| 199 | ||
| 200 | if (error) { | |
| 201 | purple_debug_error("satori", | |
| 202 | "refresh_buddy_contacts failed: %s", | |
| 203 | error->message); | |
| 204 | if (resp) | |
| 205 | g_bytes_unref(resp); | |
| 206 | g_error_free(error); | |
| 207 | return; | |
| 208 | } | |
| 209 | ||
| 210 | gsize sz; | |
| 211 | const gchar *ptr = g_bytes_get_data(resp, &sz), *next = NULL; | |
| 212 | ||
| 213 | JsonParser *parser = json_parser_new(); | |
| 214 | if (!json_parser_load_from_data(parser, ptr, sz, NULL)) { | |
| 215 | purple_debug_warning("satori", "bad json received from ws"); | |
| 216 | goto finish; | |
| 217 | } | |
| 218 | ||
| 219 | JsonObject *root = json_node_get_object(json_parser_get_root(parser)); | |
| 220 | JsonArray *data = json_object_get_array_member(root, "data"); | |
| 221 | next = json_object_get_string_member_with_default( | |
| 222 | root, "next", NULL); | |
| 223 | ||
| 224 | if (!data) goto finish; | |
| 225 | ||
| 226 | for (guint i = 0; i < json_array_get_length(data); i++) { | |
| 227 | JsonObject *user_obj = json_array_get_object_element(data, i); | |
| 228 | ||
| 229 | SatoriUser user = { 0 }; | |
| 230 | satori_user_from_json(user_obj, &user); | |
| 231 | ||
|
1
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
232 | purple_satori_add_person_from_user(con, &user); |
| 0 | 233 | } |
| 234 | ||
| 235 | finish: | |
| 236 | if (next) | |
| 237 | satori_refresh_buddy_contacts(con, next); | |
| 238 | ||
| 239 | g_bytes_unref(resp); | |
| 240 | g_object_unref(parser); | |
| 241 | } | |
| 242 | ||
| 243 | void | |
| 244 | satori_refresh_buddy_contacts(PurpleSatoriConnection *con, const gchar *next) | |
| 245 | { | |
| 246 | GBytes *data = NULL; | |
| 247 | ||
| 248 | { | |
| 249 | JB_BEGIN_OBJ(b); | |
| 250 | if (next) | |
| 251 | JBA(b, "next", next); | |
| 252 | JB_END_OBJ(data, b); | |
| 253 | } | |
| 254 | ||
| 255 | SoupMessage *msg = satori_message_new( | |
| 256 | "POST", SATORI_ENDPOINT("/v1/friend.list")); | |
| 257 | soup_message_set_request_body_from_bytes(msg, "application/json", data); | |
| 258 | ||
| 259 | purple_satori_connection_send_and_read_async( | |
| 260 | con, msg, 0, NULL, | |
| 261 | (GAsyncReadyCallback) satori_on_buddy_contacts_resp, | |
| 262 | PURPLE_SATORI_CONNECTION(con)); | |
| 263 | ||
| 264 | g_object_unref(msg); | |
| 265 | g_bytes_unref(data); | |
| 266 | } | |
|
1
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
267 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
268 | /****************************************************************************** |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
269 | * Group/Room List (Recursive) Synchronization |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
270 | *****************************************************************************/ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
271 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
272 | static void satori_refresh_guild_channels(PurpleSatoriConnection *, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
273 | const gchar *, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
274 | const gchar *); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
275 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
276 | static void |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
277 | satori_on_guild_channels_resp(SoupSession *session, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
278 | GAsyncResult *res, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
279 | PurpleSatoriConnection *con) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
280 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
281 | GError *error = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
282 | GBytes *resp = soup_session_send_and_read_finish(session, res, &error); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
283 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
284 | if (error) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
285 | purple_debug_error("satori", |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
286 | "refresh_conversations failed: %s", |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
287 | error->message); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
288 | if (resp) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
289 | g_bytes_unref(resp); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
290 | g_error_free(error); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
291 | return; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
292 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
293 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
294 | gsize sz; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
295 | const gchar *ptr = g_bytes_get_data(resp, &sz); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
296 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
297 | JsonParser *parser = json_parser_new(); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
298 | if (!json_parser_load_from_data(parser, ptr, sz, NULL)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
299 | purple_debug_warning("satori", "bad json received from ws"); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
300 | goto finish; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
301 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
302 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
303 | JsonObject *root = json_node_get_object(json_parser_get_root(parser)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
304 | JsonArray *data = json_object_get_array_member(root, "data"); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
305 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
306 | if (!data) goto finish; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
307 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
308 | for (guint i = 0; i < json_array_get_length(data); i++) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
309 | JsonObject *chan_obj = json_array_get_object_element(data, i); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
310 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
311 | SatoriChannel chan = { 0 }; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
312 | satori_channel_from_json(chan_obj, &chan); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
313 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
314 | purple_satori_add_conversation_from_chan(con, &chan); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
315 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
316 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
317 | finish: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
318 | /* if (next) */ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
319 | /* satori_refresh_guild_channels(con, next); */ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
320 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
321 | g_bytes_unref(resp); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
322 | g_object_unref(parser); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
323 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
324 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
325 | static void |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
326 | satori_refresh_guild_channels(PurpleSatoriConnection *con, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
327 | const gchar *guild_id, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
328 | const gchar *next) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
329 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
330 | GBytes *data = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
331 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
332 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
333 | JB_BEGIN_OBJ(b); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
334 | JBA(b, "guild_id", guild_id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
335 | if (next) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
336 | JBA(b, "next", next); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
337 | JB_END_OBJ(data, b); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
338 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
339 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
340 | SoupMessage *msg = satori_message_new( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
341 | "POST", SATORI_ENDPOINT("/v1/channel.list")); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
342 | soup_message_set_request_body_from_bytes(msg, "application/json", data); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
343 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
344 | purple_satori_connection_send_and_read_async( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
345 | con, msg, 0, NULL, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
346 | (GAsyncReadyCallback) satori_on_guild_channels_resp, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
347 | PURPLE_SATORI_CONNECTION(con)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
348 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
349 | g_object_unref(msg); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
350 | g_bytes_unref(data); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
351 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
352 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
353 | static void |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
354 | satori_on_guild_list_resp(SoupSession *session, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
355 | GAsyncResult *res, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
356 | PurpleSatoriConnection *con) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
357 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
358 | GError *error = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
359 | GBytes *resp = soup_session_send_and_read_finish(session, res, &error); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
360 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
361 | if (error) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
362 | purple_debug_error("satori", |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
363 | "refresh_conversations failed: %s", |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
364 | error->message); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
365 | if (resp) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
366 | g_bytes_unref(resp); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
367 | g_error_free(error); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
368 | return; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
369 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
370 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
371 | gsize sz; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
372 | const gchar *ptr = g_bytes_get_data(resp, &sz), *next = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
373 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
374 | JsonParser *parser = json_parser_new(); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
375 | if (!json_parser_load_from_data(parser, ptr, sz, NULL)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
376 | purple_debug_warning("satori", "bad json received from ws"); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
377 | goto finish; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
378 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
379 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
380 | JsonObject *root = json_node_get_object(json_parser_get_root(parser)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
381 | JsonArray *data = json_object_get_array_member(root, "data"); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
382 | next = json_object_get_string_member_with_default( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
383 | root, "next", NULL); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
384 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
385 | if (!data) goto finish; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
386 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
387 | for (guint i = 0; i < json_array_get_length(data); i++) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
388 | JsonObject *guild_obj = json_array_get_object_element(data, i); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
389 | satori_refresh_guild_channels( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
390 | con, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
391 | json_object_get_string_member(guild_obj, "id"), |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
392 | NULL); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
393 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
394 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
395 | finish: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
396 | if (next) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
397 | satori_refresh_conversations(con, next); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
398 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
399 | g_bytes_unref(resp); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
400 | g_object_unref(parser); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
401 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
402 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
403 | void |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
404 | satori_refresh_conversations(PurpleSatoriConnection *con, const gchar *next) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
405 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
406 | GBytes *data = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
407 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
408 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
409 | JB_BEGIN_OBJ(b); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
410 | if (next) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
411 | JBA(b, "next", next); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
412 | JB_END_OBJ(data, b); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
413 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
414 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
415 | SoupMessage *msg = satori_message_new( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
416 | "POST", SATORI_ENDPOINT("/v1/guild.list")); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
417 | soup_message_set_request_body_from_bytes(msg, "application/json", data); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
418 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
419 | purple_satori_connection_send_and_read_async( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
420 | con, msg, 0, NULL, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
421 | (GAsyncReadyCallback) satori_on_guild_list_resp, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
422 | PURPLE_SATORI_CONNECTION(con)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
423 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
424 | g_object_unref(msg); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
425 | g_bytes_unref(data); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
426 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
427 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
428 | typedef struct { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
429 | PurpleSatoriConnection *con; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
430 | SatoriUser user; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
431 | GTask *task; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
432 | } SatoriOnDmChannelData; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
433 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
434 | static void |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
435 | satori_on_dm_channel(SoupSession *session, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
436 | GAsyncResult *res, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
437 | SatoriOnDmChannelData *dptr) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
438 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
439 | GError *error = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
440 | GBytes *resp = soup_session_send_and_read_finish(session, res, &error); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
441 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
442 | if (error) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
443 | purple_debug_error("satori", |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
444 | "create_dm_channel failed: %s", |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
445 | error->message); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
446 | if (resp) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
447 | g_bytes_unref(resp); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
448 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
449 | g_task_return_error(dptr->task, error); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
450 | goto cleanup; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
451 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
452 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
453 | gsize sz; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
454 | const gchar *ptr = g_bytes_get_data(resp, &sz); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
455 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
456 | JsonParser *parser = json_parser_new(); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
457 | if (!json_parser_load_from_data(parser, ptr, sz, NULL)) { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
458 | purple_debug_warning("satori", "bad json received from api"); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
459 | g_task_return_new_error_literal(dptr->task, PURPLE_SATORI_DOMAIN, 0, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
460 | "bad json received from api"); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
461 | goto cleanup; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
462 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
463 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
464 | JsonObject *root = json_node_get_object(json_parser_get_root(parser)); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
465 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
466 | SatoriChannel chan; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
467 | satori_channel_from_json(root, &chan); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
468 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
469 | PurpleConversation *conversation = \ |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
470 | purple_satori_add_conversation_from_chan(dptr->con, &chan); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
471 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
472 | if (!chan.name) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
473 | purple_conversation_set_title(conversation, dptr->user.name); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
474 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
475 | purple_satori_add_conversation_member_from_user(dptr->con, conversation, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
476 | &dptr->user); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
477 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
478 | g_task_return_pointer(dptr->task, conversation, g_object_unref); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
479 | g_object_unref(parser); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
480 | cleanup: |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
481 | g_clear_object(&dptr->task); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
482 | g_free((gchar *) dptr->user.name); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
483 | g_free((gchar *) dptr->user.id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
484 | g_free(dptr); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
485 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
486 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
487 | void |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
488 | satori_create_dm_channel(PurpleSatoriConnection *con, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
489 | SatoriUser *user, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
490 | GTask *task) |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
491 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
492 | GBytes *data = NULL; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
493 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
494 | { |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
495 | JB_BEGIN_OBJ(b); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
496 | JBA(b, "user_id", user->id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
497 | JB_END_OBJ(data, b); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
498 | } |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
499 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
500 | SoupMessage *msg = satori_message_new( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
501 | "POST", SATORI_ENDPOINT("/v1/user.channel.create")); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
502 | soup_message_set_request_body_from_bytes(msg, "application/json", data); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
503 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
504 | SatoriOnDmChannelData *dptr = g_new0(SatoriOnDmChannelData, 1); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
505 | dptr->user.name = dptr->user.nick = g_strdup(user->name); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
506 | dptr->user.id = g_strdup(user->id); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
507 | dptr->task = task; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
508 | dptr->con = con; |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
509 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
510 | purple_satori_connection_send_and_read_async( |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
511 | con, msg, 0, NULL, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
512 | (GAsyncReadyCallback) satori_on_dm_channel, |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
513 | dptr); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
514 | |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
515 | g_object_unref(msg); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
516 | g_bytes_unref(data); |
|
98bcf06036b8
Another Minor Milestone Reached, Conversation Creation & Recv works now
William Goodspeed <goodspeed@mailo.cat>
parents:
0
diff
changeset
|
517 | } |