summaryrefslogtreecommitdiff
path: root/rest/oauth2-proxy.h
diff options
context:
space:
mode:
authorJonathon Jongsma <jonathon@quotidian.org>2010-05-07 17:15:20 -0500
committerRoss Burton <ross@linux.intel.com>2010-05-26 15:15:38 +0100
commit44c991200bd5e8bc8be11e9fb8af9937abc1ae7c (patch)
treee856f4cd9a93962a1b5550d5251b15bbc7cc844f /rest/oauth2-proxy.h
parenta85b16a89d97199beabe283d5f0bdd9d1956490e (diff)
downloadlibrest-44c991200bd5e8bc8be11e9fb8af9937abc1ae7c.tar.gz
Add a oauth2 proxy
This new class provides a proxy class for oauth2-based web services, such as the new facebook graph API. The basic idea is as follows: - Construct a OAuth2Proxy object - Build a login url with _build_login_url(_full)() - Display said url in a browser widget (e.g. webkit) and listen for redirects to the specified 'redirect_uri' - Extract the access token from the uri that you are redirected to - Set the access token for the proxy with _set_access_token() http://bugs.meego.com/show_bug.cgi?id=2265
Diffstat (limited to 'rest/oauth2-proxy.h')
-rw-r--r--rest/oauth2-proxy.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/rest/oauth2-proxy.h b/rest/oauth2-proxy.h
new file mode 100644
index 0000000..0473c62
--- /dev/null
+++ b/rest/oauth2-proxy.h
@@ -0,0 +1,95 @@
+/*
+ * librest - RESTful web services access
+ * Copyright (c) 2008, 2009, 2010 Intel Corporation.
+ *
+ * Authors: Rob Bradford <rob@linux.intel.com>
+ * Ross Burton <ross@linux.intel.com>
+ * Jonathon Jongsma <jonathon.jongsma@collabora.co.uk>
+ *
+ * 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 _OAUTH2_PROXY
+#define _OAUTH2_PROXY
+
+#include <rest/rest-proxy.h>
+
+G_BEGIN_DECLS
+
+#define OAUTH2_TYPE_PROXY oauth2_proxy_get_type()
+
+#define OAUTH2_PROXY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), OAUTH2_TYPE_PROXY, OAuth2Proxy))
+
+#define OAUTH2_PROXY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), OAUTH2_TYPE_PROXY, OAuth2ProxyClass))
+
+#define OAUTH2_IS_PROXY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OAUTH2_TYPE_PROXY))
+
+#define OAUTH2_IS_PROXY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), OAUTH2_TYPE_PROXY))
+
+#define OAUTH2_PROXY_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), OAUTH2_TYPE_PROXY, OAuth2ProxyClass))
+
+typedef struct _OAuth2ProxyPrivate OAuth2ProxyPrivate;
+
+/**
+ * OAuth2Proxy:
+ *
+ * #OAuth2Proxy has no publicly available members.
+ */
+typedef struct {
+ RestProxy parent;
+ OAuth2ProxyPrivate *priv;
+} OAuth2Proxy;
+
+typedef struct {
+ RestProxyClass parent_class;
+ /*< private >*/
+ /* padding for future expansion */
+ gpointer _padding_dummy[8];
+} OAuth2ProxyClass;
+
+GType oauth2_proxy_get_type (void);
+
+RestProxy* oauth2_proxy_new (const char *client_id,
+ const char *auth_endpoint,
+ const gchar *url_format,
+ gboolean binding_required);
+
+RestProxy* oauth2_proxy_new_with_token (const char *client_id,
+ const char *access_token,
+ const char *auth_endpoint,
+ const gchar *url_format,
+ gboolean binding_required);
+
+char * oauth2_proxy_build_login_url_full (OAuth2Proxy *proxy,
+ const char* redirect_uri,
+ GHashTable* extra_params);
+
+char * oauth2_proxy_build_login_url (OAuth2Proxy *proxy,
+ const char* redirect_uri);
+
+const char * oauth2_proxy_get_access_token (OAuth2Proxy *proxy);
+
+void oauth2_proxy_set_access_token (OAuth2Proxy *proxy, const char *access_token);
+
+char * oauth2_proxy_extract_access_token (const char *url);
+
+G_END_DECLS
+
+#endif /* _OAUTH2_PROXY */