diff options
author | Mathias Hasselmann <hasselmm@gnome.org> | 2009-10-26 10:52:30 +0100 |
---|---|---|
committer | Mathias Hasselmann <hasselmm@gnome.org> | 2009-10-26 10:52:30 +0100 |
commit | c4ed6030ba1c240e5f090ab4eae1651e48a3792a (patch) | |
tree | f5a7622b05846da1e78cac40b49b5ba96d40a764 | |
parent | bcea784a38f6bb23b51c83066eff1c5e222279ee (diff) |
WIPphonebook
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | tests/test-phonebook.c | 88 |
4 files changed, 95 insertions, 1 deletions
@@ -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; +} |