summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Hasselmann <hasselmm@gnome.org>2009-10-26 10:52:30 +0100
committerMathias Hasselmann <hasselmm@gnome.org>2009-10-26 10:52:30 +0100
commitc4ed6030ba1c240e5f090ab4eae1651e48a3792a (patch)
treef5a7622b05846da1e78cac40b49b5ba96d40a764
parentbcea784a38f6bb23b51c83066eff1c5e222279ee (diff)
-rw-r--r--.gitignore2
-rw-r--r--Makefile.am5
-rw-r--r--configure.ac1
-rw-r--r--tests/test-phonebook.c88
4 files changed, 95 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index f434f72..e09644e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,6 @@
/missing
/src/telepathy-gruschler
/stamp-h1
+/tests/phonebook.js
/tests/test-facebook
+/tests/test-phonebook
diff --git a/Makefile.am b/Makefile.am
index 3f94376..d1994fb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,7 +3,7 @@ ACLOCAL_AMFLAGS = -I m4
telepathy_libdir=$(libdir)/telepathy
telepathy_lib_PROGRAMS = src/telepathy-gruschler
-noinst_PROGRAMS = tests/test-facebook
+noinst_PROGRAMS = tests/test-facebook tests/test-phonebook
src_telepathy_gruschler_CFLAGS = $(AM_CFLAGS) $(REST_CFLAGS) $(TELEPATHY_CFLAGS)
src_telepathy_gruschler_LDADD = $(AM_LDFLAGS) $(REST_LIBS) $(TELEPATHY_LIBS)
@@ -18,3 +18,6 @@ src_telepathy_gruschler_SOURCES = src/connection-manager.c \
tests_test_facebook_CFLAGS = $(AM_CFLAGS) $(REST_CFLAGS)
tests_test_facebook_LDADD = $(AM_LDFLAGS) $(REST_LIBS)
+
+tests_test_phonebook_CFLAGS = $(AM_CFLAGS) $(JSON_CFLAGS)
+tests_test_phonebook_LDADD = $(AM_LDFLAGS) $(JSON_LIBS)
diff --git a/configure.ac b/configure.ac
index 4f00c57..10dc6fe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -13,6 +13,7 @@ AM_PATH_GLIB_2_0([2.20.3])
PKG_CHECK_MODULES([TELEPATHY], [rtcom-telepathy-glib >= 0.1.38
telepathy-glib >= 0.7.35])
PKG_CHECK_MODULES([REST], [rest-extras-0.6 >= 0.6.1])
+PKG_CHECK_MODULES([JSON], [json-glib-1.0 >= 0.8.0])
FACEBOOK_APPKEY([GRUSCHLER])
diff --git a/tests/test-phonebook.c b/tests/test-phonebook.c
new file mode 100644
index 0000000..1844db7
--- /dev/null
+++ b/tests/test-phonebook.c
@@ -0,0 +1,88 @@
+#include <json-glib/json-glib.h>
+#include <string.h>
+
+int
+main (int argc,
+ char **argv)
+{
+ GError *error = NULL;
+ char *data = NULL;
+ const char *start;
+ gsize length;
+ JsonParser *parser;
+ JsonNode *root, *node;
+ JsonObject *object;
+ GList *uid_list;
+
+ g_type_init ();
+
+ if (argc < 2)
+ {
+ g_printerr ("Usage: %s FACEBOOK-PHONEBOOK\n"
+ "See <https://www.facebook.com/friends/ajax/superfriends_phonebook.php>.\n",
+ argv[0]);
+ return 1;
+ }
+
+ if (!g_file_get_contents (argv[1], &data, &length, &error))
+ {
+ g_printerr ("%s\n", error->message);
+ g_error_free (error);
+ return 1;
+ }
+
+ parser = json_parser_new ();
+ start = strchr (data, '{');
+ length -= (start - data);
+
+ if (!json_parser_load_from_data (parser, start, length, &error))
+ {
+ g_printerr ("%s\n", error->message);
+ g_object_unref (parser);
+ g_error_free (error);
+ g_free (data);
+ return 1;
+ }
+
+ root = json_parser_get_root (parser);
+
+ object = json_node_get_object (root);
+ node = json_object_get_member (object, "payload");
+
+ g_print ("object: %p\n", object);
+ g_print ("node: %p\n", node);
+
+ object = json_node_get_object (node);
+ node = json_object_get_member (object, "phone");
+
+ g_print ("object: %p\n", object);
+ g_print ("node: %p\n", node);
+
+ object = json_node_get_object (node);
+ uid_list = json_object_get_members (object);
+
+ while (uid_list)
+ {
+ const char *uid = uid_list->data;
+ JsonObject *numbers;
+
+ g_print ("%s:", uid);
+
+ node = json_object_get_member (object, uid);
+ numbers = json_node_get_object (node);
+
+ if (NULL != (node = json_object_get_member (numbers, "phone")))
+ g_print (" phone=%s", json_node_get_string (node));
+ if (NULL != (node = json_object_get_member (numbers, "cell")))
+ g_print (" cell=%s", json_node_get_string (node));
+
+ g_print ("\n");
+
+ uid_list = g_list_delete_link (uid_list, uid_list);
+ }
+
+ g_object_unref (parser);
+ g_free (data);
+
+ return 0;
+}