/soc/2015/nakulgulati/main: fb423d04c23b: hangouts: channel long...

[email protected]
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: fb423d04c23ba2389b24cb04d2a305fda0843217
Author:	 Nakul Gulati
Date:	 2015-08-13 09:00 +0800
Branch:	 hangouts
URL: https://hg.pidgin.im/soc/2015/nakulgulati/main/rev/fb423d04c23b

Description:

hangouts: channel long poll request

diffstat:

 libpurple/protocols/hangouts/channel.c |  55 ++++++++++++++++++++++++++++++++-
 libpurple/protocols/hangouts/channel.h |   3 +
 2 files changed, 56 insertions(+), 2 deletions(-)

diffs (95 lines):

diff --git a/libpurple/protocols/hangouts/channel.c b/libpurple/protocols/hangouts/channel.c
--- a/libpurple/protocols/hangouts/channel.c
+++ b/libpurple/protocols/hangouts/channel.c
@@ -83,6 +83,48 @@ hangouts_channel_set_access_token (Hango
 }
 
 static void
+hangouts_channel_long_poll_cb (PurpleHttpConnection *http_conn,
+			       PurpleHttpResponse *response, gpointer user_data)
+{
+  gchar *raw;
+
+  raw = purple_http_response_get_data (response, NULL);
+  purple_debug_misc ("hangouts-channel", "response: %s", raw);
+}
+
+void
+hangouts_channel_long_poll (HangoutsChannel *channel)
+{
+  HangoutsChannelPrivate *priv;
+  PurpleHttpRequest *request;
+  gchar *end_point;
+  gchar *params;
+
+  priv = channel->priv;
+  end_point = "channel/bind";
+
+  params = g_strdup_printf ("?ctype=hangouts"
+			    "&RID=rpc"
+			    "&VER=8"
+			    "&TYPE=xmlhttp"
+			    "&CI=0"
+			    "&gsessionid=%s"
+			    "&SID=%s",
+			    priv->gession_id, priv->sid);
+  request = purple_http_request_new (
+      g_strconcat (HANGOUTS_CHANNEL_URL, end_point, params, NULL));
+
+  purple_http_request_set_method (request, "POST");
+  purple_http_request_set_max_len (request, -1);
+  purple_http_request_set_cookie_jar (request, priv->cj);
+  purple_http_request_header_add (
+      request, "Authorization",
+      g_strdup_printf ("Bearer %s", priv->access_token));
+  purple_http_request (priv->gc, request, hangouts_channel_long_poll_cb,
+		       channel);
+}
+
+static void
 hangouts_channel_get_gsid_cb (PurpleHttpConnection *http_conn,
 			      PurpleHttpResponse *response, gpointer user_data)
 {
@@ -92,18 +134,27 @@ hangouts_channel_get_gsid_cb (PurpleHttp
    * ]
    */
   gchar *res_raw;
+  gchar *gsid;
+  gchar *sid;
   JsonNode *node;
   HangoutsChannel *channel;
+  HangoutsChannelPrivate *priv;
 
   channel = user_data;
+  priv = channel->priv;
   res_raw = purple_http_response_get_data (response, NULL);
+  purple_debug_misc ("hangouts-channel", "raw: %s", res_raw);
   res_raw = strstr (res_raw, "\n");
   res_raw++;
   node = hangouts_json_node_new (res_raw, -1, FALSE);
-  channel->priv->sid = hangouts_json_node_get_str (node, "$[0][1][1]", NULL);
-  channel->priv->gession_id = hangouts_json_node_get_str (node, "$[1][1][0].gsid", NULL);
+  sid = hangouts_json_node_get_str (node, "$[0][1][1]", NULL);
+  gsid = hangouts_json_node_get_str (node, "$[1][1][0].gsid", NULL);
+
+  priv->sid = g_strdup (sid);
+  priv->gession_id = g_strdup (gsid);
 
   json_node_free (node);
+  hangouts_channel_long_poll (channel);
 }
 
 void
diff --git a/libpurple/protocols/hangouts/channel.h b/libpurple/protocols/hangouts/channel.h
--- a/libpurple/protocols/hangouts/channel.h
+++ b/libpurple/protocols/hangouts/channel.h
@@ -39,6 +39,9 @@ HangoutsChannel *
 hangouts_channel_new (PurpleConnection *gc);
 
 void
+hangouts_channel_long_poll (HangoutsChannel *channel);
+
+void
 hangouts_channel_get_gsid (HangoutsChannel *channel);
 
 #endif /* _HANGOUTS_CHANNEL_H_ */

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.