/soc/2015/jgeboski/facebook: c4f2fd45ffba: facebook: refactored ...

James Geboski jgeboski at gmail.com
Mon Aug 10 01:13:42 EDT 2015


Changeset: c4f2fd45ffbaccf2d94e49be111c5b20b35d8fc2
Author:	 James Geboski <jgeboski at gmail.com>
Date:	 2015-08-09 21:52 -0400
Branch:	 facebook
URL: https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/c4f2fd45ffba

Description:

facebook: refactored internal API naming

This removes class names from HTTP requests, they are not needed.

diffstat:

 libpurple/protocols/facebook/api.c      |  418 ++++++++++++++-----------------
 libpurple/protocols/facebook/api.h      |   34 +-
 libpurple/protocols/facebook/facebook.c |   68 ++--
 3 files changed, 230 insertions(+), 290 deletions(-)

diffs (truncated from 884 to 300 lines):

diff --git a/libpurple/protocols/facebook/api.c b/libpurple/protocols/facebook/api.c
--- a/libpurple/protocols/facebook/api.c
+++ b/libpurple/protocols/facebook/api.c
@@ -240,7 +240,7 @@ fb_api_class_init(FbApiClass *klass)
 	             fb_marshal_VOID__OBJECT,
 	             G_TYPE_NONE,
 	             1, G_TYPE_ERROR);
-	g_signal_new("message",
+	g_signal_new("messages",
 	             G_TYPE_FROM_CLASS(klass),
 	             G_SIGNAL_ACTION,
 	             0,
@@ -248,7 +248,15 @@ fb_api_class_init(FbApiClass *klass)
 	             fb_marshal_VOID__POINTER,
 	             G_TYPE_NONE,
 	             1, G_TYPE_POINTER);
-	g_signal_new("presence",
+	g_signal_new("presences",
+	             G_TYPE_FROM_CLASS(klass),
+	             G_SIGNAL_ACTION,
+	             0,
+	             NULL, NULL,
+	             fb_marshal_VOID__POINTER,
+	             G_TYPE_NONE,
+	             1, G_TYPE_POINTER);
+	g_signal_new("thread",
 	             G_TYPE_FROM_CLASS(klass),
 	             G_SIGNAL_ACTION,
 	             0,
@@ -264,15 +272,7 @@ fb_api_class_init(FbApiClass *klass)
 	             fb_marshal_VOID__INT64,
 	             G_TYPE_NONE,
 	             1, FB_TYPE_ID);
-	g_signal_new("thread-info",
-	             G_TYPE_FROM_CLASS(klass),
-	             G_SIGNAL_ACTION,
-	             0,
-	             NULL, NULL,
-	             fb_marshal_VOID__POINTER,
-	             G_TYPE_NONE,
-	             1, G_TYPE_POINTER);
-	g_signal_new("thread-list",
+	g_signal_new("threads",
 	             G_TYPE_FROM_CLASS(klass),
 	             G_SIGNAL_ACTION,
 	             0,
@@ -464,8 +464,9 @@ fb_api_http_chk(FbApi *api, PurpleHttpCo
 }
 
 static PurpleHttpConnection *
-fb_api_http_req(FbApi *api, const FbApiHttpInfo *info,
-                FbHttpParams *params, const gchar *url)
+fb_api_http_req(FbApi *api, const gchar *url, const gchar *name,
+                const gchar *method, FbHttpParams *params,
+		PurpleHttpCallback callback)
 {
 	FbApiPrivate *priv = api->priv;
 	gchar *data;
@@ -479,10 +480,9 @@ fb_api_http_req(FbApi *api, const FbApiH
 
 	fb_http_params_set_str(params, "api_key", FB_API_KEY);
 	fb_http_params_set_str(params, "device_id", priv->did);
-	fb_http_params_set_str(params, "fb_api_caller_class", info->klass);
-	fb_http_params_set_str(params, "fb_api_req_friendly_name", info->name);
+	fb_http_params_set_str(params, "fb_api_req_friendly_name", name);
 	fb_http_params_set_str(params, "format", "json");
-	fb_http_params_set_str(params, "method", info->method);
+	fb_http_params_set_str(params, "method", method);
 
 	val = fb_util_locale_str();
 	fb_http_params_set_str(params, "locale", val);
@@ -521,7 +521,7 @@ fb_api_http_req(FbApi *api, const FbApiH
 
 	data = fb_http_params_close(params, NULL);
 	purple_http_request_set_contents(req, data, -1);
-	ret = purple_http_request(priv->gc, req, info->callback, api);
+	ret = purple_http_request(priv->gc, req, callback, api);
 	purple_http_request_unref(req);
 
 	fb_util_debug(FB_UTIL_DEBUG_INFO, "HTTP Request (%p):", ret);
@@ -533,18 +533,40 @@ fb_api_http_req(FbApi *api, const FbApiH
 }
 
 static void
-fb_api_http_graph(FbApi *api, const FbApiHttpInfo *info, JsonBuilder *builder,
-                  const gchar *qid)
+fb_api_http_query(FbApi *api, gint64 query, JsonBuilder *builder,
+                  PurpleHttpCallback callback)
 {
+	const gchar *name;
 	FbHttpParams *prms;
 	gchar *json;
 
+	switch (query) {
+	case FB_API_QUERY_CONTACTS:
+		name = "FetchContactsFullQuery";
+		break;
+	case FB_API_QUERY_CONTACTS_AFTER:
+		name = "FetchContactsFullWithAfterQuery";
+		break;
+	case FB_API_QUERY_THREAD:
+		name = "ThreadQuery";
+		break;
+	case FB_API_QUERY_THREADS:
+		name = "ThreadListQuery";
+		break;
+	case FB_API_QUERY_XMA:
+		name = "XMAQuery";
+		break;
+	default:
+		g_return_if_reached();
+		return;
+	}
+
 	prms = fb_http_params_new();
 	json = fb_json_bldr_close(builder, JSON_NODE_OBJECT, NULL);
 
-	fb_http_params_set_str(prms, "query_id", qid);
+	fb_http_params_set_strf(prms, "query_id", "%" G_GINT64_FORMAT, query);
 	fb_http_params_set_str(prms, "query_params", json);
-	fb_api_http_req(api, info, prms, FB_API_URL_GQL);
+	fb_api_http_req(api, FB_API_URL_GQL, name, "get", prms, callback);
 
 	g_free(json);
 }
@@ -701,11 +723,12 @@ fb_api_connect_queue(FbApi *api)
 		fb_json_bldr_add_str(bldr, "buzz_on_deltas_enabled", "false");
 
 		fb_json_bldr_obj_begin(bldr, "graphql_query_hashes");
-		fb_json_bldr_add_str(bldr, "xma_query_id", FB_API_QRYID_XMA);
+		fb_json_bldr_add_str(bldr, "xma_query_id",
+		                     G_STRINGIFY(FB_API_QUERY_XMA));
 		fb_json_bldr_obj_end(bldr);
 
 		fb_json_bldr_obj_begin(bldr, "graphql_query_params");
-		fb_json_bldr_obj_begin(bldr, FB_API_QRYID_XMA);
+		fb_json_bldr_obj_begin(bldr, G_STRINGIFY(FB_API_QUERY_XMA));
 		fb_json_bldr_add_str(bldr, "xma_id", "<ID>");
 		fb_json_bldr_add_str(bldr, "small_preview_size", "9001");
 		fb_json_bldr_add_str(bldr, "large_preview_size", "9001");
@@ -775,13 +798,6 @@ fb_api_cb_mqtt_connect(FbMqtt *mqtt, gpo
 	gchar *json;
 	JsonBuilder *bldr;
 
-	static const FbApiHttpInfo info = {
-		fb_api_cb_seqid,
-		"com.facebook.orca.e.y",
-		"ThreadListQuery",
-		"get"
-	};
-
 	bldr = fb_json_bldr_new(JSON_NODE_OBJECT);
 	fb_json_bldr_add_bool(bldr, "foreground", TRUE);
 	fb_json_bldr_add_int(bldr, "keepalive_timeout", FB_MQTT_KA);
@@ -812,7 +828,8 @@ fb_api_cb_mqtt_connect(FbMqtt *mqtt, gpo
 		/* See fb_api_thread_list() for key mapping */
 		bldr = fb_json_bldr_new(JSON_NODE_OBJECT);
 		fb_json_bldr_add_str(bldr, "1", "0");
-		fb_api_http_graph(api, &info, bldr, FB_API_QRYID_THREAD_LIST);
+		fb_api_http_query(api, FB_API_QUERY_THREADS, bldr,
+		                  fb_api_cb_seqid);
 	} else {
 		fb_api_connect_queue(api);
 	}
@@ -1146,7 +1163,7 @@ fb_api_cb_publish_ms(FbApi *api, GByteAr
 
 	if (G_LIKELY(err == NULL)) {
 		msgs = g_slist_reverse(msgs);
-		g_signal_emit_by_name(api, "message", msgs);
+		g_signal_emit_by_name(api, "messages", msgs);
 	} else {
 		fb_api_error_emit(api, err);
 	}
@@ -1238,7 +1255,7 @@ fb_api_cb_publish_p(FbApi *api, GByteArr
 	g_object_unref(thft);
 
 	press = g_slist_reverse(press);
-	g_signal_emit_by_name(api, "presence", press);
+	g_signal_emit_by_name(api, "presences", press);
 	g_slist_free_full(press, (GDestroyNotify) fb_api_presence_free);
 }
 
@@ -1424,17 +1441,11 @@ fb_api_auth(FbApi *api, const gchar *use
 {
 	FbHttpParams *prms;
 
-	static const FbApiHttpInfo info = {
-		fb_api_cb_auth,
-		"com.facebook.auth.protocol.d",
-		"authenticate",
-		"auth.login"
-	};
-
 	prms = fb_http_params_new();
 	fb_http_params_set_str(prms, "email", user);
 	fb_http_params_set_str(prms, "password", pass);
-	fb_api_http_req(api, &info, prms, FB_API_URL_AUTH);
+	fb_api_http_req(api, FB_API_URL_AUTH, "authenticate", "auth.login",
+	                prms, fb_api_cb_auth);
 }
 
 static void
@@ -1522,13 +1533,6 @@ fb_api_contacts(FbApi *api)
 {
 	JsonBuilder *bldr;
 
-	static const FbApiHttpInfo info = {
-		fb_api_cb_contacts,
-		"com.facebook.contacts.service.c",
-		"FetchContactsFullQuery",
-		"get"
-	};
-
 	/* Object key mapping:
 	 *   0: profile_types
 	 *   1: limit
@@ -1545,7 +1549,8 @@ fb_api_contacts(FbApi *api)
 	fb_json_bldr_arr_end(bldr);
 
 	fb_json_bldr_add_str(bldr, "1", G_STRINGIFY(FB_API_CONTACTS_COUNT));
-	fb_api_http_graph(api, &info, bldr, FB_API_QRYID_CONTACTS);
+	fb_api_http_query(api, FB_API_QUERY_CONTACTS, bldr,
+	                  fb_api_cb_contacts);
 }
 
 static void
@@ -1553,13 +1558,6 @@ fb_api_contacts_after(FbApi *api, const 
 {
 	JsonBuilder *bldr;
 
-	static const FbApiHttpInfo info = {
-		fb_api_cb_contacts,
-		"com.facebook.contacts.service.c",
-		"FetchContactsFullWithAfterQuery",
-		"get"
-	};
-
 	/* Object key mapping:
 	 *   0: profile_types
 	 *   1: after
@@ -1582,7 +1580,8 @@ fb_api_contacts_after(FbApi *api, const 
 
 	fb_json_bldr_add_str(bldr, "1", writeid);
 	fb_json_bldr_add_str(bldr, "2", G_STRINGIFY(FB_API_CONTACTS_COUNT));
-	fb_api_http_graph(api, &info, bldr, FB_API_QRYID_CONTACTS_AFTER);
+	fb_api_http_query(api, FB_API_QUERY_CONTACTS_AFTER, bldr,
+	                  fb_api_cb_contacts);
 }
 
 void
@@ -1848,7 +1847,7 @@ fb_api_cb_unread_msgs(PurpleHttpConnecti
 
 	if (G_UNLIKELY(err == NULL)) {
 		msgs = g_slist_reverse(msgs);
-		g_signal_emit_by_name(api, "message", msgs);
+		g_signal_emit_by_name(api, "messages", msgs);
 	} else {
 		fb_api_error_emit(api, err);
 	}
@@ -1870,13 +1869,6 @@ fb_api_cb_unread(PurpleHttpConnection *c
 	JsonBuilder *bldr;
 	JsonNode *root;
 
-	static const FbApiHttpInfo info = {
-		fb_api_cb_unread_msgs,
-		"com.facebook.orca.e.m",
-		"ThreadQuery",
-		"get"
-	};
-
 	if (!fb_api_http_chk(api, con, res, &root)) {
 		return;
 	}
@@ -1911,7 +1903,8 @@ fb_api_cb_unread(PurpleHttpConnection *c
 		fb_json_bldr_add_str(bldr, "11", "true");
 		fb_json_bldr_add_int(bldr, "12", count);
 		fb_json_bldr_add_str(bldr, "13", "false");
-		fb_api_http_graph(api, &info, bldr, FB_API_QRYID_THREAD_INFO);
+		fb_api_http_query(api, FB_API_QUERY_THREAD, bldr,
+		                  fb_api_cb_unread_msgs);
 	}
 
 	if (G_UNLIKELY(err != NULL)) {
@@ -1928,13 +1921,6 @@ fb_api_unread(FbApi *api)
 	FbApiPrivate *priv;
 	JsonBuilder *bldr;
 
-	static const FbApiHttpInfo info = {
-		fb_api_cb_unread,
-		"com.facebook.orca.e.y",
-		"ThreadListQuery",
-		"get"
-	};
-
 	g_return_if_fail(FB_IS_API(api));
 	priv = api->priv;
 
@@ -1948,82 +1934,8 @@ fb_api_unread(FbApi *api)
 	fb_json_bldr_add_int(bldr, "1", priv->unread);
 	fb_json_bldr_add_str(bldr, "12", "true");



More information about the Commits mailing list