/pidgin/main: 8059ab4da709: Merge GSoC 2015 Facebook branch
Jorge Villase?or <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 8059ab4da709d116ee4d96d91441b383729e69d0 Author: Jorge Villase?or <[email protected]> Date: 2015-10-18 11:28 -0700 Branch: default URL: https://hg.pidgin.im/pidgin/main/rev/8059ab4da709 Description: Merge GSoC 2015 Facebook branch This branch brings the new implementation of Facebook prpl to our 3.0 release. diffstat: .hgignore | 1 + COPYRIGHT | 1 + configure.ac | 11 +- doc/reference/Makefile.am | 2 +- doc/reference/protocols/Makefile.am | 2 + doc/reference/protocols/facebook/Makefile.am | 126 + doc/reference/protocols/facebook/facebook-docs.xml | 32 + doc/reference/protocols/version.xml.in | 1 + libpurple/glibcompat.h | 47 + libpurple/http.c | 7 + libpurple/http.h | 10 + libpurple/protocols/Makefile.am | 2 +- libpurple/protocols/Makefile.mingw | 2 +- libpurple/protocols/facebook/Makefile.am | 66 + libpurple/protocols/facebook/Makefile.mingw | 101 + libpurple/protocols/facebook/api.c | 3074 ++++++++++++++++++++ libpurple/protocols/facebook/api.h | 849 +++++ libpurple/protocols/facebook/data.c | 588 +++ libpurple/protocols/facebook/data.h | 398 ++ libpurple/protocols/facebook/facebook.c | 1563 ++++++++++ libpurple/protocols/facebook/facebook.h | 83 + libpurple/protocols/facebook/http.c | 360 ++ libpurple/protocols/facebook/http.h | 292 + libpurple/protocols/facebook/id.h | 131 + libpurple/protocols/facebook/json.c | 660 ++++ libpurple/protocols/facebook/json.h | 517 +++ libpurple/protocols/facebook/marshaller.list | 6 + libpurple/protocols/facebook/mqtt.c | 1013 ++++++ libpurple/protocols/facebook/mqtt.h | 626 ++++ libpurple/protocols/facebook/thrift.c | 706 ++++ libpurple/protocols/facebook/thrift.h | 600 +++ libpurple/protocols/facebook/util.c | 599 +++ libpurple/protocols/facebook/util.h | 344 ++ libpurple/protocols/jabber/Makefile.am | 4 - libpurple/protocols/jabber/Makefile.mingw | 2 - libpurple/protocols/jabber/facebook.c | 213 - libpurple/protocols/jabber/facebook.h | 54 - libpurple/protocols/jabber/facebook_roster.c | 135 - libpurple/protocols/jabber/facebook_roster.h | 35 - libpurple/protocols/jabber/jabber.c | 16 +- libpurple/protocols/jabber/jabber.h | 5 - libpurple/protocols/jabber/roster.c | 8 - pidgin/plugins/xmppconsole.c | 2 +- po/POTFILES.in | 2 - po/af.po | 3 - po/am.po | 3 - po/ar.po | 3 - po/as.po | 3 - po/ast.po | 3 - po/az.po | 3 - po/[email protected] | 3 - po/bg.po | 3 - po/bn.po | 3 - po/bn_IN.po | 3 - po/br.po | 4 - po/brx.po | 4 - po/bs.po | 3 - po/ca.po | 3 - po/[email protected] | 3 - po/cs.po | 3 - po/da.po | 3 - po/dz.po | 3 - po/el.po | 3 - po/en_AU.po | 3 - po/en_CA.po | 3 - po/en_GB.po | 3 - po/eo.po | 3 - po/es.po | 9 - po/es_AR.po | 4 - po/et.po | 3 - po/eu.po | 3 - po/fa.po | 3 - po/fi.po | 3 - po/fr.po | 3 - po/ga.po | 3 - po/gl.po | 3 - po/gu.po | 3 - po/he.po | 3 - po/hi.po | 3 - po/hr.po | 3 - po/hu.po | 3 - po/hy.po | 4 - po/id.po | 3 - po/it.po | 3 - po/ja.po | 3 - po/ka.po | 3 - po/kk.po | 3 - po/km.po | 3 - po/kn.po | 3 - po/ko.po | 3 - po/ks.po | 4 - po/ku.po | 3 - po/ku_IQ.po | 3 - po/lt.po | 3 - po/lv.po | 3 - po/mai.po | 3 - po/mhr.po | 3 - po/mk.po | 3 - po/ml.po | 3 - po/mn.po | 3 - po/mr.po | 3 - po/ms_MY.po | 4 - po/my_MM.po | 3 - po/nb.po | 3 - po/ne.po | 3 - po/nl.po | 3 - po/nn.po | 3 - po/oc.po | 3 - po/or.po | 3 - po/pa.po | 3 - po/pl.po | 12 - po/ps.po | 3 - po/pt.po | 3 - po/pt_BR.po | 3 - po/ro.po | 3 - po/ru.po | 3 - po/sd.po | 4 - po/si.po | 3 - po/sk.po | 3 - po/sl.po | 3 - po/sq.po | 3 - po/sr.po | 3 - po/[email protected] | 3 - po/sv.po | 3 - po/sw.po | 3 - po/ta.po | 3 - po/te.po | 3 - po/th.po | 3 - po/tr.po | 3 - po/tt.po | 3 - po/uk.po | 3 - po/ur.po | 3 - po/uz.po | 4 - po/vi.po | 3 - po/xh.po | 3 - po/zh_CN.po | 3 - po/zh_HK.po | 3 - po/zh_TW.po | 3 - 138 files changed, 12818 insertions(+), 783 deletions(-) diffs (truncated from 15073 to 300 lines): diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -83,6 +83,7 @@ libpurple/plugins/perl/common/Makefile.o libpurple/plugins/perl/common/const-c.inc libpurple/plugins/perl/common/const-xs.inc libpurple/plugins/perl/common/lib +libpurple/protocols/facebook/marshal.[ch] libpurple/purple-client-bindings.[ch] libpurple/purple-client-example libpurple/purple.h$ diff --git a/COPYRIGHT b/COPYRIGHT --- a/COPYRIGHT +++ b/COPYRIGHT @@ -201,6 +201,7 @@ François Gagné Andrew Gaul Evgueni V. Gavrilov Ignacy Gawedzki +James Geboski Georgi Georgiev Brian Geppert Emanuele Giaquinta diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -1414,7 +1414,7 @@ if test "x$STATIC_PRPLS" != "x" -a "x$DY fi if test "x$STATIC_PRPLS" = "xall" ; then - STATIC_PRPLS="bonjour gg irc jabber msn mxit novell oscar sametime silc simple yahoo zephyr" + STATIC_PRPLS="bonjour facebook gg irc jabber msn mxit novell oscar sametime silc simple yahoo zephyr" fi if test "x$have_meanwhile" != "xyes" ; then STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/sametime//'` @@ -1448,6 +1448,7 @@ for i in $STATIC_PRPLS ; do case $i in bonjour) static_bonjour=yes ;; + facebook) static_facebook=yes ;; gg) static_gg=yes ;; irc) static_irc=yes ;; jabber) static_jabber=yes ;; @@ -1466,6 +1467,7 @@ for i in $STATIC_PRPLS ; do esac done AM_CONDITIONAL(STATIC_BONJOUR, test "x$static_bonjour" = "xyes") +AM_CONDITIONAL(STATIC_FACEBOOK, test "x$static_facebook" = "xyes") AM_CONDITIONAL(STATIC_GG, test "x$static_gg" = "xyes") AM_CONDITIONAL(STATIC_IRC, test "x$static_irc" = "xyes") AM_CONDITIONAL(STATIC_JABBER, test "x$static_jabber" = "xyes") @@ -1486,7 +1488,7 @@ AC_DEFINE_UNQUOTED(STATIC_PROTO_UNLOAD, AC_ARG_WITH(dynamic_prpls, [AS_HELP_STRING([--with-dynamic-prpls], [specify which protocols to build dynamically])], [DYNAMIC_PRPLS=`echo $withval | $sedpath 's/,/ /g'`]) if test "x$DYNAMIC_PRPLS" = "xall" ; then - DYNAMIC_PRPLS="bonjour gg irc jabber msn mxit novell oscar sametime silc simple yahoo zephyr" + DYNAMIC_PRPLS="bonjour facebook gg irc jabber msn mxit novell oscar sametime silc simple yahoo zephyr" fi if test "x$have_meanwhile" != "xyes"; then DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/sametime//'` @@ -1504,6 +1506,7 @@ AC_SUBST(DYNAMIC_PRPLS) for i in $DYNAMIC_PRPLS ; do case $i in bonjour) dynamic_bonjour=yes ;; + facebook) dynamic_facebook=yes ;; gg) dynamic_gg=yes ;; irc) dynamic_irc=yes ;; jabber) dynamic_jabber=yes ;; @@ -2393,6 +2396,9 @@ AC_CONFIG_FILES([Makefile doc/reference/finch/version.xml doc/reference/libpurple/Makefile doc/reference/libpurple/version.xml + doc/reference/protocols/Makefile + doc/reference/protocols/facebook/Makefile + doc/reference/protocols/version.xml doc/reference/pidgin/Makefile doc/reference/pidgin/version.xml m4macros/Makefile @@ -2426,6 +2432,7 @@ AC_CONFIG_FILES([Makefile libpurple/Makefile libpurple/protocols/Makefile libpurple/protocols/bonjour/Makefile + libpurple/protocols/facebook/Makefile libpurple/protocols/gg/Makefile libpurple/protocols/irc/Makefile libpurple/protocols/jabber/Makefile diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am --- a/doc/reference/Makefile.am +++ b/doc/reference/Makefile.am @@ -6,4 +6,4 @@ if ENABLE_GNT GNT_DIR=finch endif -SUBDIRS = libpurple $(GNT_DIR) $(GTK_DIR) +SUBDIRS = libpurple protocols $(GNT_DIR) $(GTK_DIR) diff --git a/doc/reference/protocols/Makefile.am b/doc/reference/protocols/Makefile.am new file mode 100644 --- /dev/null +++ b/doc/reference/protocols/Makefile.am @@ -0,0 +1,2 @@ +EXTRA_DIST = version.xml.in +SUBDIRS = facebook diff --git a/doc/reference/protocols/facebook/Makefile.am b/doc/reference/protocols/facebook/Makefile.am new file mode 100644 --- /dev/null +++ b/doc/reference/protocols/facebook/Makefile.am @@ -0,0 +1,126 @@ +## Process this file with automake to produce Makefile.in + +# We require automake 1.6 at least. +AUTOMAKE_OPTIONS = 1.6 + +# This is a blank Makefile.am for using gtk-doc. +# Copy this to your project's API docs directory and modify the variables to +# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples +# of using the various options. + +# The name of the module, e.g. 'glib'. +DOC_MODULE=facebook + +# Uncomment for versioned docs and specify the version of the module, e.g. '2'. +#DOC_MODULE_VERSION=2 + +# The top-level XML file (SGML in the past). You can change this if you want to. +DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml + +# The directory containing the source code. Relative to $(srcdir). +# gtk-doc will search all .c & .h files beneath here for inline comments +# documenting the functions and macros. +# e.g. DOC_SOURCE_DIR=../../../gtk +DOC_SOURCE_DIR=$(top_srcdir)/libpurple/protocols/$(DOC_MODULE) + +# Extra options to pass to gtkdoc-scangobj. Not normally needed. +SCANGOBJ_OPTIONS= + +# Extra options to supply to gtkdoc-scan. +# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" +SCAN_OPTIONS=\ + --deprecated-guards="PURPLE_DISABLE_DEPRECATED" \ + --rebuild-types \ + --rebuild-sections + +# Extra options to supply to gtkdoc-mkdb. +# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml +MKDB_OPTIONS=--xml-mode --output-format=xml + +# Extra options to supply to gtkdoc-mktmpl +# e.g. MKTMPL_OPTIONS=--only-section-tmpl +MKTMPL_OPTIONS= + +# Extra options to supply to gtkdoc-mkhtml +MKHTML_OPTIONS= + +# Extra options to supply to gtkdoc-fixref. Not normally needed. +# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html +FIXXREF_OPTIONS= + +# Used for dependencies. The docs will be rebuilt if any of these change. +# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h +# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c +HFILE_GLOB=$(top_srcdir)/libpurple/protocols/$(DOC_MODULE)/*.h +CFILE_GLOB=$(top_srcdir)/libpurple/protocols/$(DOC_MODULE)/*.c + +# Extra header to include when scanning, which are not under DOC_SOURCE_DIR +# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h +# TODO: those files are not properly scanned when building out-of-tree +EXTRA_HFILES = + +# Header files or dirs to ignore when scanning. Use base file/dir names +# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code +IGNORE_HFILES=marshal.h + +# Images to copy into HTML directory. +# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png +HTML_IMAGES= + +# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). +# e.g. content_files=running.sgml building.sgml changes-2.0.sgml +content_files = ../version.xml + +# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded +# These files must be listed here *and* in content_files +# e.g. expand_content_files=running.sgml +expand_content_files= + +# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. +# Only needed if you are using gtkdoc-scangobj to dynamically query widget +# signals and properties. +# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) +# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) +GTKDOC_CFLAGS = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/libpurple/protocols/$(DOC_MODULE) \ + $(GLIB_CFLAGS) \ + $(GPLUGIN_CFLAGS) \ + $(DEBUG_CFLAGS) \ + $(JSON_CFLAGS) \ + $(ZLIB_CFLAGS) \ + $(INTROSPECTION_CFLAGS) + +GTKDOC_LIBS = \ + $(top_builddir)/libpurple/protocols/$(DOC_MODULE)/lib$(DOC_MODULE).la \ + $(STATIC_LINK_LIBS) \ + $(GLIB_LIBS) \ + $(GPLUGIN_LIBS) \ + $(INTLLIBS) \ + $(JSON_LIBS) \ + $(ZLIB_LIBS) \ + $(INTROSPECTION_LIBS) + +# This includes the standard gtk-doc make rules, copied by gtkdocize. +include $(top_srcdir)/gtk-doc.make + +# Other files to distribute +# e.g. EXTRA_DIST += version.xml.in +EXTRA_DIST += version.xml.in + +# Files not to distribute +# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types +# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt +DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt + +dist-hook: html-build.stamp + +# Comment this out if you want 'make check' to test you doc status +# and run some sanity checks +if ENABLE_GTK_DOC +TESTS_ENVIRONMENT = \ + DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ + SRCDIR=$(abs_srcdir) +#TODO: fix and enable +#TESTS = $(GTKDOC_CHECK) +endif diff --git a/doc/reference/protocols/facebook/facebook-docs.xml b/doc/reference/protocols/facebook/facebook-docs.xml new file mode 100644 --- /dev/null +++ b/doc/reference/protocols/facebook/facebook-docs.xml @@ -0,0 +1,32 @@ +<?xml version="1.0"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [ + +<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'"> +<!ENTITY version SYSTEM "../version.xml"> +]> +<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude"> + <bookinfo> + <title>Facebook Protocol Reference Manual</title> + <abstract> + <title>Facebook Plugin &version;</title> + <para> + The Facebook Messenger protocol plugin for libpurple. + </para> + </abstract> + </bookinfo> + + <reference label="II"> + <title>API Reference</title> + + <xi:include href="xml/api.xml" /> + <xi:include href="xml/data.xml" /> + <xi:include href="xml/facebook.xml" /> + <xi:include href="xml/http.xml" /> + <xi:include href="xml/id.xml" /> + <xi:include href="xml/json.xml" /> + <xi:include href="xml/mqtt.xml" /> + <xi:include href="xml/thrift.xml" /> + <xi:include href="xml/util.xml" /> + </reference> +</book> diff --git a/doc/reference/protocols/version.xml.in b/doc/reference/protocols/version.xml.in new file mode 100644 --- /dev/null +++ b/doc/reference/protocols/version.xml.in @@ -0,0 +1,1 @@ +@PURPLE_VERSION@ diff --git a/libpurple/glibcompat.h b/libpurple/glibcompat.h --- a/libpurple/glibcompat.h +++ b/libpurple/glibcompat.h @@ -76,6 +76,23 @@ static inline gboolean g_close(gint fd, g_signal_handlers_disconnect_matched((instance), G_SIGNAL_MATCH_DATA, \ 0, 0, NULL, NULL, (data)) +static inline GByteArray * g_byte_array_new_take(guint8 *data, gsize len) +{ + GByteArray *array; + + array = g_byte_array_new(); + g_byte_array_append(array, data, len); + g_free(data); + + return array; +} + +static inline void g_queue_free_full(GQueue *queue, GDestroyNotify free_func) +{ + g_queue_foreach(queue, (GFunc)free_func, NULL); + g_queue_free(queue); +} + static inline GThread * g_thread_try_new(const gchar *name, GThreadFunc func, _______________________________________________ Commits mailing list [email protected] https://pidgin.im/cgi-bin/mailman/listinfo/commits