/soc/2015/nakulgulati/main: 39345930a427: hangouts: api - getsel...

[email protected]
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 39345930a4279e59c75d4e5d83c957aa81eb1b46
Author:	 Nakul Gulati
Date:	 2015-07-24 15:33 +0800
Branch:	 hangouts
URL: https://hg.pidgin.im/soc/2015/nakulgulati/main/rev/39345930a427

Description:

hangouts: api - getselfinfo, syncallevents, setactiveclient

diffstat:

 libpurple/protocols/hangouts/api.c |  70 +++++++++++++++++++++++++++++++++++--
 libpurple/protocols/hangouts/api.h |   7 +++
 2 files changed, 72 insertions(+), 5 deletions(-)

diffs (115 lines):

diff --git a/libpurple/protocols/hangouts/api.c b/libpurple/protocols/hangouts/api.c
--- a/libpurple/protocols/hangouts/api.c
+++ b/libpurple/protocols/hangouts/api.c
@@ -35,22 +35,27 @@ typedef struct {
 	gchar *header_id;
 	gchar *client_id;
 	gchar *email;
-	GTimeVal *sync_timestamp;
+	GTimeVal *last_sync_timestamp;
 
 } _hangouts_api_data;
 
-void hangouts_api_request(HangoutsApi *hangoutsApi, gchar *url_endpoint, gchar *content_type, gchar *request_body) {
+void hangouts_api_request(HangoutsApi *hangoutsApi, gchar *url_endpoint, gboolean use_protojson, gchar *request_body) {
 
 	HangoutsApiData *data = hangoutsApi->api_data;
 	gchar *url = g_strconcat(HANGOUTS_API_BASE_URL, url_endpoint,"?alt=json");
 	PurpleHttpRequest *request = purple_http_request_new(url);
 	PurpleHttpConnection *ret;
+	gchar *content_type;
 
-	purple_http_request_header_add(request, "content-type", content_type);
+	if(use_protojson){
+		content_type = "application/json+protobuf";
+		purple_http_request_header_add(request, "content-type", content_type);
+	}
+
 	purple_http_request_header_add(request, "Authorization", hangouts_auth_get_authorization_header(data->access_token));
 	purple_http_request_set_method(request, "POST");
 	purple_http_request_set_contents(request, request_body);
-	//purple_http_request()
+	//TODO: complete and implement callback
 }
 
 gchar *
@@ -72,6 +77,61 @@ hangouts_api_get_request_header(Hangouts
 	return header;
 }
 
-void hangouts_api_getselfinfo() {
+void
+hangouts_api_getselfinfo(HangoutsApi *hangoutsApi)
+{
+	gchar *header = hangouts_api_get_request_header(hangoutsApi);
+	gchar *url_endpoint = "contacts/selfinfo";
+	gchar *request_body = g_strdup_printf("[%s,[], []]",header);
 
+	hangouts_api_request(hangoutsApi, url_endpoint, TRUE, request_body);
 }
+
+void
+hangouts_api_syncallevents(HangoutsApi *hangoutsApi)
+{
+	gchar *header = hangouts_api_get_request_header(hangoutsApi);
+	GTimeVal *time_stamp = hangoutsApi->api_data->last_sync_timestamp;
+	gchar *url_endpoint = "conversations/syncallnewevents";
+	gchar *request_body = g_strdup_printf("["
+			"%s, "
+			"%s,"
+			"[], "
+			"None, "
+			"[], "
+			"False, "
+			"[], "
+			"1048576"
+			"]",
+			header,g_time_val_to_iso8601(time_stamp));
+
+
+	hangouts_api_request(hangoutsApi, url_endpoint, TRUE, request_body);
+}
+
+void
+hangouts_api_setactiveclient(HangoutsApi *hangoutsApi, gboolean is_active, gchar *timeout_sec)
+{
+	gchar *header = hangouts_api_get_request_header(hangoutsApi);
+	HangoutsApiData *data = hangoutsApi->api_data;
+	gchar *url_endpoint = "clients/setactiveclient";
+	gchar *is_active_flag = "False";
+
+	if(is_active){
+		is_active_flag = "False";
+	}
+
+	gchar *request_body = g_strdup_printf("["
+			"%s, "
+			"%s, "
+			"%s\/%s, "
+			"%s]",
+			header,
+			is_active_flag,
+			data->email,
+			data->client_id,
+			timeout_sec);
+
+	hangouts_api_request(hangoutsApi, url_endpoint, TRUE, request_body);
+}
+
diff --git a/libpurple/protocols/hangouts/api.h b/libpurple/protocols/hangouts/api.h
--- a/libpurple/protocols/hangouts/api.h
+++ b/libpurple/protocols/hangouts/api.h
@@ -53,6 +53,13 @@ struct _HangoutsApi{
 GType
 hangouts_api_get_type(void);
 
+void hangouts_api_getselfinfo(HangoutsApi *hangoutsApi);
+void hangouts_api_syncallevents(HangoutsApi *hangoutsApi);
+void hangouts_api_sendchatmessage(HangoutsApi *hangoutsApi, gchar *conversation_id, gchar *segments, gchar *image_id);
+void hangouts_api_setactiveclient(HangoutsApi *hangoutsApi, gboolean is_active, gchar *timeout_sec);
+
+
+
 
 
 #endif /* _API_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.