diff options
author | Ross Burton <ross@linux.intel.com> | 2010-05-07 16:03:48 +0100 |
---|---|---|
committer | Ross Burton <ross@linux.intel.com> | 2010-05-07 16:03:48 +0100 |
commit | ce878dc75986707ccfdda4c861a0f5880978a856 (patch) | |
tree | 91dce5a59f2a0e8e7c0ff77b643f6dc7927b7286 /rest-extras | |
parent | e320e8d17db68d5777a815c8d6ec1689c62f580a (diff) |
Remove FacebookProxy
Diffstat (limited to 'rest-extras')
-rw-r--r-- | rest-extras/Makefile.am | 9 | ||||
-rw-r--r-- | rest-extras/facebook-proxy-call.c | 88 | ||||
-rw-r--r-- | rest-extras/facebook-proxy-call.h | 67 | ||||
-rw-r--r-- | rest-extras/facebook-proxy-private.h | 33 | ||||
-rw-r--r-- | rest-extras/facebook-proxy.c | 354 | ||||
-rw-r--r-- | rest-extras/facebook-proxy.h | 93 |
6 files changed, 2 insertions, 642 deletions
diff --git a/rest-extras/Makefile.am b/rest-extras/Makefile.am index c00fba6..2c470f2 100644 --- a/rest-extras/Makefile.am +++ b/rest-extras/Makefile.am @@ -3,15 +3,10 @@ CLEANFILES = lib_sources = \ flickr-proxy.c \ flickr-proxy-call.c \ - flickr-proxy-private.h \ - facebook-proxy.c \ - facebook-proxy-call.c \ - facebook-proxy-private.h + flickr-proxy-private.h lib_headers = \ flickr-proxy.h \ - flickr-proxy-call.h \ - facebook-proxy.h \ - facebook-proxy-call.h + flickr-proxy-call.h lib_LTLIBRARIES = librest-extras-@API_VERSION@.la diff --git a/rest-extras/facebook-proxy-call.c b/rest-extras/facebook-proxy-call.c deleted file mode 100644 index 353f119..0000000 --- a/rest-extras/facebook-proxy-call.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * librest - RESTful web services access - * Copyright (c) 2008, 2009, Intel Corporation. - * - * Authors: Rob Bradford <rob@linux.intel.com> - * Ross Burton <ross@linux.intel.com> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU Lesser General Public License, - * version 2.1, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - * more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#include <string.h> -#include <libsoup/soup.h> -#include <rest/rest-proxy-call.h> -#include "facebook-proxy-call.h" -#include "facebook-proxy-private.h" -#include "rest/rest-proxy-call-private.h" -#include "rest/sha1.h" - -G_DEFINE_TYPE (FacebookProxyCall, facebook_proxy_call, REST_TYPE_PROXY_CALL) - -static gboolean -_prepare (RestProxyCall *call, GError **error) -{ - FacebookProxy *proxy = NULL; - FacebookProxyPrivate *priv; - RestProxyCallPrivate *call_priv; - char *s; - - g_object_get (call, "proxy", &proxy, NULL); - priv = PROXY_GET_PRIVATE (proxy); - call_priv = call->priv; - - /* First reset the URL because Facebook puts the function in the parameters */ - g_object_get (proxy, "url-format", &call_priv->url, NULL); - - rest_proxy_call_add_params (call, - "method", call_priv->function, - "api_key", priv->api_key, - "v", "1.0", - NULL); - - if (priv->session_key) { - GTimeVal time; - g_get_current_time (&time); - s = g_strdup_printf ("%ld.%ld", time.tv_sec, time.tv_usec); - rest_proxy_call_add_param (call, "call_id", s); - g_free (s); - - rest_proxy_call_add_param (call, "session_key", priv->session_key); - } - - s = facebook_proxy_sign (proxy, call_priv->params); - rest_proxy_call_add_param (call, "sig", s); - g_free (s); - - g_object_unref (proxy); - - return TRUE; -} - -static void -facebook_proxy_call_class_init (FacebookProxyCallClass *klass) -{ - RestProxyCallClass *call_class = REST_PROXY_CALL_CLASS (klass); - - call_class->prepare = _prepare; -} - -static void -facebook_proxy_call_init (FacebookProxyCall *self) -{ -} - -#if BUILD_TESTS -#warning TODO facebook signature test cases -#endif diff --git a/rest-extras/facebook-proxy-call.h b/rest-extras/facebook-proxy-call.h deleted file mode 100644 index 9f97ad7..0000000 --- a/rest-extras/facebook-proxy-call.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * librest - RESTful web services access - * Copyright (c) 2008, 2009, Intel Corporation. - * - * Authors: Rob Bradford <rob@linux.intel.com> - * Ross Burton <ross@linux.intel.com> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU Lesser General Public License, - * version 2.1, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - * more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#ifndef _FACEBOOK_PROXY_CALL -#define _FACEBOOK_PROXY_CALL - -#include <rest/rest-proxy-call.h> - -G_BEGIN_DECLS - -#define FACEBOOK_TYPE_PROXY_CALL facebook_proxy_call_get_type() - -#define FACEBOOK_PROXY_CALL(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), FACEBOOK_TYPE_PROXY_CALL, FacebookProxyCall)) - -#define FACEBOOK_PROXY_CALL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), FACEBOOK_TYPE_PROXY_CALL, FacebookProxyCallClass)) - -#define FACEBOOK_IS_PROXY_CALL(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FACEBOOK_TYPE_PROXY_CALL)) - -#define FACEBOOK_IS_PROXY_CALL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), FACEBOOK_TYPE_PROXY_CALL)) - -#define FACEBOOK_PROXY_CALL_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), FACEBOOK_TYPE_PROXY_CALL, FacebookProxyCallClass)) - -/** - * FacebookProxyCall: - * - * #FacebookProxyCall has no publicly available members. - */ -typedef struct { - RestProxyCall parent; -} FacebookProxyCall; - -typedef struct { - RestProxyCallClass parent_class; - /*< private >*/ - /* padding for future expansion */ - gpointer _padding_dummy[8]; -} FacebookProxyCallClass; - -GType facebook_proxy_call_get_type (void); - -G_END_DECLS - -#endif /* _FACEBOOK_PROXY_CALL */ diff --git a/rest-extras/facebook-proxy-private.h b/rest-extras/facebook-proxy-private.h deleted file mode 100644 index 0f652a6..0000000 --- a/rest-extras/facebook-proxy-private.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * librest - RESTful web services access - * Copyright (c) 2008, 2009, Intel Corporation. - * - * Authors: Rob Bradford <rob@linux.intel.com> - * Ross Burton <ross@linux.intel.com> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU Lesser General Public License, - * version 2.1, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - * more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#include "facebook-proxy.h" - -#define PROXY_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), FACEBOOK_TYPE_PROXY, FacebookProxyPrivate)) - -struct _FacebookProxyPrivate { - char *api_key; - char *app_secret; - char *session_key; -}; - diff --git a/rest-extras/facebook-proxy.c b/rest-extras/facebook-proxy.c deleted file mode 100644 index 2ca5490..0000000 --- a/rest-extras/facebook-proxy.c +++ /dev/null @@ -1,354 +0,0 @@ -/* - * librest - RESTful web services access - * Copyright (c) 2008, 2009, Intel Corporation. - * - * Authors: Rob Bradford <rob@linux.intel.com> - * Ross Burton <ross@linux.intel.com> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU Lesser General Public License, - * version 2.1, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - * more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#include <config.h> -#include <string.h> -#include <rest/rest-proxy.h> -#include <libsoup/soup.h> -#include "facebook-proxy.h" -#include "facebook-proxy-private.h" -#include "facebook-proxy-call.h" - -G_DEFINE_TYPE (FacebookProxy, facebook_proxy, REST_TYPE_PROXY) - -enum { - PROP_0, - PROP_API_KEY, - PROP_APP_SECRET, - PROP_SESSION_KEY, -}; - -static RestProxyCall * -_new_call (RestProxy *proxy) -{ - RestProxyCall *call; - - call = g_object_new (FACEBOOK_TYPE_PROXY_CALL, - "proxy", proxy, - NULL); - - return call; -} - -static void -facebook_proxy_get_property (GObject *object, guint property_id, - GValue *value, GParamSpec *pspec) -{ - FacebookProxyPrivate *priv = PROXY_GET_PRIVATE (object); - - switch (property_id) { - case PROP_API_KEY: - g_value_set_string (value, priv->api_key); - break; - case PROP_APP_SECRET: - g_value_set_string (value, priv->app_secret); - break; - case PROP_SESSION_KEY: - g_value_set_string (value, priv->session_key); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - } -} - -static void -facebook_proxy_set_property (GObject *object, guint property_id, - const GValue *value, GParamSpec *pspec) -{ - FacebookProxyPrivate *priv = PROXY_GET_PRIVATE (object); - - switch (property_id) { - case PROP_API_KEY: - if (priv->api_key) - g_free (priv->api_key); - priv->api_key = g_value_dup_string (value); - break; - case PROP_APP_SECRET: - if (priv->app_secret) - g_free (priv->app_secret); - priv->app_secret = g_value_dup_string (value); - break; - case PROP_SESSION_KEY: - if (priv->session_key); - g_free (priv->session_key); - priv->session_key = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - } -} - -static void -facebook_proxy_finalize (GObject *object) -{ - FacebookProxyPrivate *priv = PROXY_GET_PRIVATE (object); - - g_free (priv->api_key); - g_free (priv->app_secret); - g_free (priv->session_key); - - G_OBJECT_CLASS (facebook_proxy_parent_class)->finalize (object); -} - -#ifndef G_PARAM_STATIC_STRINGS -#define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB) -#endif - -static void -facebook_proxy_class_init (FacebookProxyClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - RestProxyClass *proxy_class = REST_PROXY_CLASS (klass); - GParamSpec *pspec; - - g_type_class_add_private (klass, sizeof (FacebookProxyPrivate)); - - object_class->get_property = facebook_proxy_get_property; - object_class->set_property = facebook_proxy_set_property; - object_class->finalize = facebook_proxy_finalize; - - proxy_class->new_call = _new_call; - - pspec = g_param_spec_string ("api-key", "api-key", - "The API key", NULL, - G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY|G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, - PROP_API_KEY, - pspec); - - pspec = g_param_spec_string ("app-secret", "app-secret", - "The application secret", NULL, - G_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, - PROP_APP_SECRET, - pspec); - - pspec = g_param_spec_string ("session-key", "session-key", - "The session key", NULL, - G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, - PROP_SESSION_KEY, - pspec); -} - -static void -facebook_proxy_init (FacebookProxy *self) -{ - self->priv = PROXY_GET_PRIVATE (self); -} - -RestProxy * -facebook_proxy_new (const char *api_key, - const char *app_secret) -{ - return facebook_proxy_new_with_session (api_key, - app_secret, - NULL); -} - -RestProxy * -facebook_proxy_new_with_session (const char *api_key, - const char *app_secret, - const char *session_key) -{ - return g_object_new (FACEBOOK_TYPE_PROXY, - "api-key", api_key, - "app-secret", app_secret, - "session-key", session_key, - "url-format", "https://api.facebook.com/restserver.php", - "binding-required", FALSE, - NULL); -} - -/** - * facebook_proxy_get_api_key: - * @proxy: an #FacebookProxy - * - * Get the API key. - * - * Returns: the API key. This string is owned by #FacebookProxy and should not be - * freed. - */ -const char * -facebook_proxy_get_api_key (FacebookProxy *proxy) -{ - FacebookProxyPrivate *priv = PROXY_GET_PRIVATE (proxy); - return priv->api_key; -} - -/** - * facebook_proxy_get_app_secret: - * @proxy: an #FacebookProxy - * - * Get the application secret for authentication. - * - * Returns: the application secret. This string is owned by #FacebookProxy and should not be - * freed. - */ -const char * -facebook_proxy_get_app_secret (FacebookProxy *proxy) -{ - FacebookProxyPrivate *priv = PROXY_GET_PRIVATE (proxy); - return priv->app_secret; -} - -void -facebook_proxy_set_app_secret (FacebookProxy *proxy, const char *secret) -{ - FacebookProxyPrivate *priv; - - g_return_if_fail (FACEBOOK_IS_PROXY (proxy)); - priv = PROXY_GET_PRIVATE (proxy); - - if (priv->app_secret) - g_free (priv->app_secret); - - priv->app_secret = g_strdup (secret); -} - -/** - * facebook_proxy_get_session_key: - * @proxy: an #FacebookProxy - * - * Get the current session key - * - * Returns: the session key, or %NULL if there is no session yet. This string is owned - * by #FacebookProxy and should not be freed. - */ -const char * -facebook_proxy_get_session_key (FacebookProxy *proxy) -{ - FacebookProxyPrivate *priv = PROXY_GET_PRIVATE (proxy); - return priv->session_key; -} - -/** - * facebook_proxy_set_session_key: - * @proxy: an #FacebookProxy - * @session_key: the session key - * - * Set the token. - */ -void -facebook_proxy_set_session_key (FacebookProxy *proxy, const char *session_key) -{ - FacebookProxyPrivate *priv; - - g_return_if_fail (FACEBOOK_IS_PROXY (proxy)); - priv = PROXY_GET_PRIVATE (proxy); - - if (priv->session_key) - g_free (priv->session_key); - - priv->session_key = g_strdup (session_key); -} - -char * -facebook_proxy_sign (FacebookProxy *proxy, GHashTable *params) -{ - FacebookProxyPrivate *priv; - GString *s; - GList *keys; - char *md5; - - g_return_val_if_fail (FACEBOOK_IS_PROXY (proxy), NULL); - g_return_val_if_fail (params, NULL); - - priv = PROXY_GET_PRIVATE (proxy); - - s = g_string_new (NULL); - - keys = g_hash_table_get_keys (params); - keys = g_list_sort (keys, (GCompareFunc)strcmp); - - while (keys) { - const char *key; - const char *value; - - key = keys->data; - value = g_hash_table_lookup (params, key); - - g_string_append_printf (s, "%s=%s", key, value); - - keys = keys->next; - } - - g_string_append (s, priv->app_secret); - - md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5, s->str, s->len); - - g_string_free (s, TRUE); - - return md5; -} - -char * -facebook_proxy_build_login_url (FacebookProxy *proxy, const char *token) -{ - SoupURI *uri; - GHashTable *params; - char *s; - - g_return_val_if_fail (FACEBOOK_IS_PROXY (proxy), NULL); - g_return_val_if_fail (token, NULL); - - uri = soup_uri_new ("http://facebook.com/login.php/"); - params = g_hash_table_new (g_str_hash, g_str_equal); - - g_hash_table_insert (params, "api_key", proxy->priv->api_key); - g_hash_table_insert (params, "v", "1.0"); - g_hash_table_insert (params, "auth_token", (gpointer)token); - - soup_uri_set_query_from_form (uri, params); - - s = soup_uri_to_string (uri, FALSE); - - g_hash_table_unref (params); - soup_uri_free (uri); - return s; -} - -char * -facebook_proxy_build_permission_url (FacebookProxy *proxy, const char *perms) -{ - SoupURI *uri; - GHashTable *params; - char *s; - - g_return_val_if_fail (FACEBOOK_IS_PROXY (proxy), NULL); - g_return_val_if_fail (perms, NULL); - - uri = soup_uri_new ("http://facebook.com/authorize.php"); - params = g_hash_table_new (g_str_hash, g_str_equal); - - g_hash_table_insert (params, "api_key", proxy->priv->api_key); - g_hash_table_insert (params, "v", "1.0"); - g_hash_table_insert (params, "ext_perm", (gpointer)perms); - - soup_uri_set_query_from_form (uri, params); - - s = soup_uri_to_string (uri, FALSE); - - g_hash_table_unref (params); - soup_uri_free (uri); - return s; -} diff --git a/rest-extras/facebook-proxy.h b/rest-extras/facebook-proxy.h deleted file mode 100644 index cdee905..0000000 --- a/rest-extras/facebook-proxy.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * librest - RESTful web services access - * Copyright (c) 2008, 2009, Intel Corporation. - * - * Authors: Rob Bradford <rob@linux.intel.com> - * Ross Burton <ross@linux.intel.com> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU Lesser General Public License, - * version 2.1, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - * more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#ifndef _FACEBOOK_PROXY -#define _FACEBOOK_PROXY - -#include <rest/rest-proxy.h> - -G_BEGIN_DECLS - -#define FACEBOOK_TYPE_PROXY facebook_proxy_get_type() - -#define FACEBOOK_PROXY(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), FACEBOOK_TYPE_PROXY, FacebookProxy)) - -#define FACEBOOK_PROXY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), FACEBOOK_TYPE_PROXY, FacebookProxyClass)) - -#define FACEBOOK_IS_PROXY(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FACEBOOK_TYPE_PROXY)) - -#define FACEBOOK_IS_PROXY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), FACEBOOK_TYPE_PROXY)) - -#define FACEBOOK_PROXY_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), FACEBOOK_TYPE_PROXY, FacebookProxyClass)) - -typedef struct _FacebookProxyPrivate FacebookProxyPrivate; - -/** - * FacebookProxy: - * - * #FacebookProxy has no publicly available members. - */ -typedef struct { - RestProxy parent; - FacebookProxyPrivate *priv; -} FacebookProxy; - -typedef struct { - RestProxyClass parent_class; - /*< private >*/ - /* padding for future expansion */ - gpointer _padding_dummy[8]; -} FacebookProxyClass; - -GType facebook_proxy_get_type (void); - -RestProxy* facebook_proxy_new (const char *api_key, - const char *app_secret); - -RestProxy* facebook_proxy_new_with_session (const char *api_key, - const char *app_secret, - const char *session_key); - -const char * facebook_proxy_get_api_key (FacebookProxy *proxy); - -void facebook_proxy_set_app_secret (FacebookProxy *proxy, const char *secret); - -const char * facebook_proxy_get_app_secret (FacebookProxy *proxy); - -const char * facebook_proxy_get_session_key (FacebookProxy *proxy); - -void facebook_proxy_set_session_key (FacebookProxy *proxy, const char *session_key); - -char * facebook_proxy_sign (FacebookProxy *proxy, GHashTable *params); - -char * facebook_proxy_build_login_url (FacebookProxy *proxy, const char *frob); - -char * facebook_proxy_build_permission_url (FacebookProxy *proxy, const char *perms); - -G_END_DECLS - -#endif /* _FACEBOOK_PROXY */ |