Hello community,

here is the log from the commit of package purple-rocketchat for 
openSUSE:Factory checked in at 2019-02-27 15:06:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/purple-rocketchat (Old)
 and      /work/SRC/openSUSE:Factory/.purple-rocketchat.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "purple-rocketchat"

Wed Feb 27 15:06:21 2019 rev:3 rq:679244 version:0.0+hg20181203

Changes:
--------
--- /work/SRC/openSUSE:Factory/purple-rocketchat/purple-rocketchat.changes      
2018-08-20 16:19:17.960812201 +0200
+++ 
/work/SRC/openSUSE:Factory/.purple-rocketchat.new.28833/purple-rocketchat.changes
   2019-02-27 15:06:23.954442437 +0100
@@ -1,0 +2,11 @@
+Thu Dec  6 19:26:54 UTC 2018 - [email protected]
+
+- Update to version 0.0+hg20181203 (changes since 0.0+hg20180817):
+  * Attempt to add support for "Personal Access Token"s.
+  * Add support for server path.
+  * Prevent server path from being NULL, fix default path.
+  * Fix for messages from unknown channels appearing as one-to-one
+    IM's.
+  * Further tweaks to the unknown channels.
+
+-------------------------------------------------------------------

Old:
----
  purple-rocketchat-0.0+hg20180817.tar.xz

New:
----
  purple-rocketchat-0.0+hg20181203.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ purple-rocketchat.spec ++++++
--- /var/tmp/diff_new_pack.g7YFCS/_old  2019-02-27 15:06:25.566441946 +0100
+++ /var/tmp/diff_new_pack.g7YFCS/_new  2019-02-27 15:06:25.570441945 +0100
@@ -12,13 +12,13 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 %define _name   rocketchat
 Name:           purple-rocketchat
-Version:        0.0+hg20180817
+Version:        0.0+hg20181203
 Release:        0
 Summary:        RocketChat protocol plugin for libpurple
 License:        GPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.g7YFCS/_old  2019-02-27 15:06:25.950441829 +0100
+++ /var/tmp/diff_new_pack.g7YFCS/_new  2019-02-27 15:06:25.962441826 +0100
@@ -4,7 +4,7 @@
     <param name="url">https://bitbucket.org/EionRobb/purple-rocketchat</param>
     <param name="filename">purple-rocketchat</param>
     <param name="versionformat">0.0+hg{date|localdate|shortdate}</param>
-    <param name="revision">5ca8ade56bd7df2656dec556b96a8bf959b2b714</param>
+    <param name="revision">49c17757de34ddbb564b475150ad070d7b0ba1cc</param>
   </service>
   <service mode="disabled" name="recompress">
     <param name="file">*.tar</param>

++++++ purple-rocketchat-0.0+hg20180817.tar.xz -> 
purple-rocketchat-0.0+hg20181203.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purple-rocketchat-0.0+hg20180817/README.md 
new/purple-rocketchat-0.0+hg20181203/README.md
--- old/purple-rocketchat-0.0+hg20180817/README.md      2018-08-17 
22:36:05.000000000 +0200
+++ new/purple-rocketchat-0.0+hg20181203/README.md      2018-12-02 
22:24:27.000000000 +0100
@@ -46,4 +46,7 @@
 * Click the "Get List" button:
 + ![rocket chat roomlist 
2.png](https://bitbucket.org/repo/gEprjk/images/2591558922-rocket%20chat%20roomlist%202.png)
 * Add the chat to your buddy list
-+ ![rocket chat add 
room.png](https://bitbucket.org/repo/gEprjk/images/853635018-rocket%20chat%20add%20room.png)
\ No newline at end of file
++ ![rocket chat add 
room.png](https://bitbucket.org/repo/gEprjk/images/853635018-rocket%20chat%20add%20room.png)
+
+## Like this plugin? ##
+Say "Thanks" by [sending 
$1](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PZMBF2QVF69GA)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purple-rocketchat-0.0+hg20180817/librocketchat.c 
new/purple-rocketchat-0.0+hg20181203/librocketchat.c
--- old/purple-rocketchat-0.0+hg20180817/librocketchat.c        2018-08-17 
22:36:05.000000000 +0200
+++ new/purple-rocketchat-0.0+hg20181203/librocketchat.c        2018-12-02 
22:24:27.000000000 +0100
@@ -250,12 +250,14 @@
        gchar *session_token;
        gchar *channel;
        gchar *self_user;
+       gchar *self_user_id;
        
        gint64 last_message_timestamp;
        gint64 last_load_last_message_timestamp;
        
        gchar *username;
        gchar *server;
+       gchar *path;
        
        PurpleSslConnection *websocket;
        gboolean websocket_header_received;
@@ -915,7 +917,7 @@
                return;
        }
        
-       if (ya->session_token != NULL && ya->self_user != NULL) {
+       if (ya->session_token && *ya->session_token && ya->self_user != NULL) {
                // Resubscribe if we're reestablishing a session
                rc_account_connected(ya, NULL, NULL, NULL);
        }
@@ -929,6 +931,39 @@
 }
 
 static void
+rc_got_available_channels(RocketChatAccount *ya, JsonNode *node, gpointer 
user_data, JsonObject *error)
+{
+       
//a["{\"msg\":\"result\",\"id\":\"21\",\"result\":{\"results\":[{\"_id\":\"GENERAL\",\"ts\":{\"$date\":1452986191014},\"name\":\"general\",\"topic\":\"This
 is a place for discussing open stuff in general. 
\",\"usersCount\":133},{\"_id\":\"eDKdsqHvNS8daAuht\",\"name\":\"social\",\"ts\":{\"$date\":1481323183876},\"topic\":\"Mastodon
 is a go! 
https://mastodon.nzoss.nz\",\"usersCount\":88},{\"_id\":\"MrmrBzkct44AHR2mm\",\"name\":\"random\",\"ts\":{\"$date\":1494728486364},\"usersCount\":83},{\"_id\":\"RBon2Y8FvbM6ekSK4\",\"name\":\"cacophony\",\"ts\":{\"$date\":1504150149829},\"usersCount\":23},{\"_id\":\"EqssvQgYZ9HEFsJ7g\",\"name\":\"technical\",\"ts\":{\"$date\":1455571771183},\"usersCount\":15},{\"_id\":\"GzxgcmSRcCoSg3tmJ\",\"name\":\"meetupchch\",\"ts\":{\"$date\":1459925099523},\"usersCount\":10},{\"_id\":\"eeiXN389SQY9Zfxsr\",\"name\":\"education\",\"ts\":{\"$date\":1481674049811},\"usersCount\":10},{\"_id\":\"DprfYgDrFE3smzgLh\",\"name\":\"constitution\",\"ts\":{\"$date\":1530834056707},\"topic\":\"NZOSS
 Constitution 
Reboot\",\"usersCount\":9},{\"_id\":\"4o3kKcoh6JXDvKm2a\",\"name\":\"openhardware\",\"ts\":{\"$date\":1480623613032},\"usersCount\":8},{\"_id\":\"rzBavTjFG4QyGhacE\",\"name\":\"python\",\"ts\":{\"$date\":1494728119751},\"archived\":true,\"usersCount\":8},{\"_id\":\"ALaF23Thjoff3JHSF\",\"name\":\"opengovt\",\"ts\":{\"$date\":1494728230237},\"usersCount\":6},{\"_id\":\"3AXn9yFRELQiuFezB\",\"name\":\"opengis\",\"ts\":{\"$date\":1494728257761},\"usersCount\":5},{\"_id\":\"C4CKsmoxK9dKKqDb3\",\"name\":\"wossat\",\"ts\":{\"$date\":1519946805422},\"usersCount\":5},{\"_id\":\"wdLQs8W84zug82beC\",\"name\":\"javascript\",\"ts\":{\"$date\":1494728110540},\"archived\":true,\"usersCount\":4},{\"_id\":\"s84SH5mL5844qbdrh\",\"name\":\"opendata\",\"ts\":{\"$date\":1494728221034},\"usersCount\":4},{\"_id\":\"PJiokbJ7mymoiu6we\",\"name\":\"openbusiness\",\"ts\":{\"$date\":1494728465740},\"usersCount\":4},{\"_id\":\"EhrKSwyuR4ZjD2xx3\",\"name\":\"jibberjabber\",\"ts\":{\"$date\":1505082070434},\"usersCount\":4},{\"_id\":\"Fu3uA8cMFvaBi67ji\",\"name\":\"infosec\",\"ts\":{\"$date\":1519595381043},\"usersCount\":4},{\"_id\":\"FbbsdW8kdKkF2gTYz\",\"name\":\"r\",\"ts\":{\"$date\":1494728249585},\"usersCount\":3},{\"_id\":\"HWrmJN4CD2sPH42NM\",\"name\":\"meetupakl\",\"ts\":{\"$date\":1494728288813},\"usersCount\":3},{\"_id\":\"ENvJ2XWgorCMrNvxs\",\"name\":\"openphilosophy\",\"ts\":{\"$date\":1494728475274},\"usersCount\":3},{\"_id\":\"Ko5jBjfdFDpY6m4TY\",\"name\":\"support\",\"ts\":{\"$date\":1501634583459},\"usersCount\":3},{\"_id\":\"WuPdbAKoLrxL26efT\",\"name\":\"fab.city\",\"ts\":{\"$date\":1517261907226},\"usersCount\":3}],\"total\":30}}"]
+       if (node != NULL) {
+               JsonObject *result = json_node_get_object(node);
+               JsonArray *results = json_object_get_array_member(result, 
"results");
+               gint i, len = json_array_get_length(results);
+               
+               for (i = 0; i < len; i++) {
+                       JsonObject *room_info = 
json_array_get_object_element(results, i);
+                       
+                       const gchar *room_id = 
json_object_get_string_member(room_info, "_id");
+                       const gchar *topic = 
json_object_get_string_member(room_info, "topic");
+                       const gchar *room_name = 
json_object_get_string_member(room_info, "name");
+                       PurpleChatConversation *chatconv = 
purple_conversations_find_chat_with_account(room_name, ya->account);
+                       
+                       if (chatconv == NULL) {
+                               chatconv = 
purple_conversations_find_chat_with_account(room_id, ya->account);
+                       }
+                       
+                       if (chatconv != NULL && topic != NULL) {
+                               gchar *html_topic = rc_markdown_to_html(topic);
+                               purple_chat_conversation_set_topic(chatconv, 
NULL, html_topic);
+                               g_free(html_topic);
+                       }
+                               
+                       g_hash_table_replace(ya->group_chats, 
g_strdup(room_id), g_strdup(room_name));
+                       g_hash_table_replace(ya->group_chats_rev, 
g_strdup(room_name), g_strdup(room_id));
+               }
+       }
+}
+
+static void
 rc_got_open_rooms(RocketChatAccount *ya, JsonNode *node, gpointer user_data, 
JsonObject *error)
 {
        
//a["{\"msg\":\"result\",\"id\":\"9\",\"result\":{\"update\":[{\"_id\":\"GENERAL\",\"name\":\"general\",\"t\":\"c\",\"topic\":\"Community
 support in [#support](https://demo.rocket.chat/channel/support).  Developers 
in 
[#dev](https://demo.rocket.chat/channel/dev)\",\"muted\":[\"daly\",\"kkloggg\",\"staci.holmes.segarra\"],\"jitsiTimeout\":{\"$date\":1476781304981},\"default\":true},{\"_id\":\"YdpayxcMhWFGKRZb3hZKg86uJavE6jYLya\",\"t\":\"d\"},{\"_id\":\"hZKg86uJavE6jYLyavxiySsLD8gLjgnmnN\",\"t\":\"d\"},{\"_id\":\"2urrp3DyDkLxoMAd3hZKg86uJavE6jYLya\",\"t\":\"d\"},{\"_id\":\"QFhAaDzea7cFK6ChB\",\"name\":\"test-private\",\"t\":\"p\",\"u\":{\"_id\":null,\"username\":null},\"ro\":false},{\"_id\":\"b98BYkRbiD5swDfyY\",\"name\":\"dev\",\"t\":\"c\",\"u\":{\"_id\":\"yhHvK7uhhXh9DqKWH\",\"username\":\"diego.sampaio\"},\"topic\":\"Community
 and core devs hangout.  Learn code in 
[#learn](https://demo.rocket.chat/channel/learn).  Get support in 
[#support](https://demo.rocket.chat/channel/support)\",\"muted\":[\"geektest123\"],\"jitsiTimeout\":{\"$date\":1465876457842}},{\"_id\":\"JoxbibGnXizRb4ef4hZKg86uJavE6jYLya\",\"t\":\"d\"}],\"remove\":[{\"_id\":\"8cXLWPathApTRXHZZ\",\"_deletedAt\":{\"$date\":1477179315230}}]}}"]
@@ -944,9 +979,10 @@
                        if (room_type && *room_type != 'd') {
                                const gchar *topic = 
json_object_get_string_member(room_info, "topic");
                                const gchar *room_name = 
json_object_get_string_member(room_info, "name");
+                               const gchar *room_id = 
json_object_get_string_member(room_info, "_id");
                                PurpleChatConversation *chatconv = 
purple_conversations_find_chat_with_account(room_name, ya->account);
+                               
                                if (chatconv == NULL) {
-                                       const gchar *room_id = 
json_object_get_string_member(room_info, "_id");
                                        chatconv = 
purple_conversations_find_chat_with_account(room_id, ya->account);
                                }
                                
@@ -955,6 +991,9 @@
                                        
purple_chat_conversation_set_topic(chatconv, NULL, html_topic);
                                        g_free(html_topic);
                                }
+                               
+                               g_hash_table_replace(ya->group_chats, 
g_strdup(room_id), g_strdup(room_name));
+                               g_hash_table_replace(ya->group_chats_rev, 
g_strdup(room_name), g_strdup(room_id));
                        }
                }
        }
@@ -1041,7 +1080,7 @@
        
        rc_socket_write_json(ya, data);
        
-       //Fetch all known rooms
+       //Fetch all known rooms - deprecated since 0.72
        
//["{\"msg\":\"method\",\"method\":\"rooms/get\",\"params\":[{\"$date\":0}],\"id\":\"6\"}"]
        data = json_object_new();
        params = json_array_new();
@@ -1057,6 +1096,28 @@
        
        rc_socket_write_json(ya, data);
        
+       //Fetch all known rooms
+       
//["{\"msg\":\"method\",\"method\":\"browseChannels\",\"params\":[{\"text\":\"\",\"type\":\"channels\",\"sortBy\":\"usersCount\",\"sortDirection\":\"desc\",\"limit\":23,\"page\":0}],\"id\":\"21\"}"]
+       data = json_object_new();
+       params = json_array_new();
+       
+       date = json_object_new();
+       json_object_set_string_member(date, "text", "");
+       json_object_set_string_member(date, "type", "channels");
+       json_object_set_string_member(date, "sortBy", "usersCount");
+       json_object_set_string_member(date, "sortDirection", "desc");
+       json_object_set_int_member(date, "limit", 500);
+       json_object_set_int_member(date, "page", 0);
+       json_array_add_object_element(params, date);
+       
+       json_object_set_string_member(data, "msg", "method");
+       json_object_set_string_member(data, "method", "browseChannels");
+       json_object_set_array_member(data, "params", params);
+       json_object_set_string_member(data, "id", 
rc_get_next_id_str_callback(ya, rc_got_available_channels, NULL));
+       
+       rc_socket_write_json(ya, data);
+       
+       
        purple_connection_set_state(ya->pc, PURPLE_CONNECTION_CONNECTED);
 }
 
@@ -1115,11 +1176,12 @@
        const gchar *rid = json_object_get_string_member(message_obj, "rid");
        const gchar *t = json_object_get_string_member(message_obj, "t");
        const gchar *username = json_object_get_string_member(u, "username");
+       const gchar *user_id = json_object_get_string_member(u, "_id");
        const gchar *roomType = json_object_get_string_member(roomarg, 
"roomType");
        const gchar *room_name = g_hash_table_lookup(ya->group_chats, rid);
        gint64 sdate = json_object_get_int_member(ts, "$date");
        gint64 timestamp = sdate / 1000;
-       PurpleMessageFlags msg_flags = (purple_strequal(username, 
ya->self_user) ? PURPLE_MESSAGE_SEND : PURPLE_MESSAGE_RECV);
+       PurpleMessageFlags msg_flags = (purple_strequal(username, 
ya->self_user) || purple_strequal(user_id, ya->self_user_id) ? 
PURPLE_MESSAGE_SEND : PURPLE_MESSAGE_RECV);
        
        if (purple_strequal(t, "uj")) {
                PurpleChatConversation *chatconv = 
purple_conversations_find_chat_with_account(room_name, ya->account);
@@ -1246,7 +1308,7 @@
                                        const gchar *title_link = 
json_object_get_string_member(attachment, "title_link");
                                        
                                        if (title != NULL && title_link != 
NULL) {
-                                               gchar *temp_message = 
g_strdup_printf("%s <a href=\"https://%s%s\";>%s</a>", (message ? message : ""), 
ya->server, title_link, title);
+                                               gchar *temp_message = 
g_strdup_printf("%s <a href=\"https://%s%s%s\";>%s</a>", (message ? message : 
""), ya->server, ya->path, title_link, title);
                                                g_free(message);
                                                message = temp_message;
                                        }
@@ -1548,7 +1610,7 @@
                JsonObject *password = json_object_new();
                gchar *digest;
                
-               if (ya->session_token) {
+               if (ya->session_token && *ya->session_token) {
                        // Continue an existing session
                        json_object_set_string_member(param, "resume", 
ya->session_token);
                } else {
@@ -1643,7 +1705,7 @@
                g_hash_table_replace(ya->usernames_to_ids, g_strdup(username), 
g_strdup(user_id));
                g_hash_table_replace(ya->ids_to_usernames, g_strdup(user_id), 
g_strdup(username));
 
-               if (!ya->self_user) {
+               if (!ya->self_user || purple_strequal(user_id, 
ya->self_user_id)) {
                        // The first user added to the collection is us
                        ya->self_user = g_strdup(username);
 
@@ -1903,21 +1965,45 @@
        
        if (userparts[0] == NULL || userparts[1] == NULL) {
                purple_connection_error(pc, 
PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED, "No username/server supplied");
+               
+               g_strfreev(userparts);
                return;
        }
        
        purple_connection_set_display_name(pc, userparts[0]);
        ya->username = g_strdup(userparts[0]);
        ya->server = g_strdup(userparts[1]);
+       ya->path = g_strdup(purple_account_get_string(account, "server_path", 
""));
        g_strfreev(userparts);
        
+       
+       ya->session_token = g_strdup(purple_account_get_string(account, 
"personal_access_token", NULL));
+       if (ya->session_token && *ya->session_token) {
+               const gchar *user_id = purple_account_get_string(account, 
"personal_access_token_user_id", NULL);
+               
+               if (!user_id || !*user_id) {
+                       purple_connection_error(pc, 
PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED, "Both the 'Personal Access 
Token' and 'User ID' fields should be filled out but the 'User ID' is 
missing.");
+                       return;
+               }
+               
+               ya->self_user_id = g_strdup(user_id);
+               
+               //Is this valid? - No, usernames on the serverside can be 
different to usernames on the client side
+               //g_hash_table_replace(ya->usernames_to_ids, 
g_strdup(ya->username), g_strdup(user_id));
+               //g_hash_table_replace(ya->ids_to_usernames, g_strdup(user_id), 
g_strdup(ya->username));
+
+       } else {
+               g_free(ya->session_token);
+               ya->session_token = NULL;
+       }
+       
        purple_connection_set_state(pc, PURPLE_CONNECTION_CONNECTING);
 
        //Build the initial hash tables from the current buddy list
        rc_build_groups_from_blist(ya);
        
        //TODO do something with this callback to make sure it's actually a 
rocket.chat server
-       url = g_strconcat("https://";, ya->server, "/api/info", NULL);
+       url = g_strconcat("https://";, ya->server, ya->path, "/api/info", NULL);
        rc_fetch_url(ya, url, NULL, NULL, NULL);
        g_free(url);
        
@@ -1977,10 +2063,12 @@
        g_hash_table_destroy(ya->cookie_table); ya->cookie_table = NULL;
        g_free(ya->username); ya->username = NULL;
        g_free(ya->server); ya->server = NULL;
+       g_free(ya->path); ya->path = NULL;
        g_free(ya->frame); ya->frame = NULL;
        g_free(ya->session_token); ya->session_token = NULL;
        g_free(ya->channel); ya->channel = NULL;
        g_free(ya->self_user); ya->self_user = NULL;
+       g_free(ya->self_user_id); ya->self_user_id = NULL;
        g_free(ya);
 }
 
@@ -2300,7 +2388,7 @@
        
        purple_ssl_input_add(ya->websocket, rc_socket_got_data, ya);
        
-       g_string_append_printf(url, "/sockjs/%d/pidgin%d/websocket", 
g_random_int_range(100, 999), g_random_int_range(1, 100));
+       g_string_append_printf(url, "%s/sockjs/%d/pidgin%d/websocket", 
ya->path, g_random_int_range(100, 999), g_random_int_range(1, 100));
        cookies = rc_cookies_to_string(ya);
        
        websocket_header = g_strdup_printf("GET %s HTTP/1.1\r\n"
@@ -3286,7 +3374,7 @@
        
        
        //avatar at https://{server}/avatar/{username}.jpg?_dc=0
-       avatar_url = g_strdup_printf("https://%s/avatar/%s.jpg?_dc=0";, 
ya->server, purple_url_encode(buddy_name));
+       avatar_url = g_strdup_printf("https://%s%s/avatar/%s.jpg?_dc=0";, 
ya->server, ya->path, purple_url_encode(buddy_name));
        rc_fetch_url(ya, avatar_url, NULL, rc_got_avatar, buddy);
        g_free(avatar_url);
        
@@ -3341,6 +3429,14 @@
        option = purple_account_option_bool_new(N_("Auto-add buddies to the 
buddy list"), "auto-add-buddy", FALSE);
        account_options = g_list_append(account_options, option);
        
+       option = purple_account_option_string_new(N_("Personal Access Token"), 
"personal_access_token", "");
+       account_options = g_list_append(account_options, option);
+       
+       option = purple_account_option_string_new(N_("Personal Access Token - 
User ID"), "personal_access_token_user_id", "");
+       account_options = g_list_append(account_options, option);
+       
+       option = purple_account_option_string_new(N_("Server Path"), 
"server_path", "");
+       account_options = g_list_append(account_options, option);
        return account_options;
 }
 


Reply via email to