diff options
author | David Zeuthen <davidz@redhat.com> | 2011-05-17 14:39:26 -0400 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2011-05-17 14:39:26 -0400 |
commit | e0c8a5249b6edd36ead695ce382e631bec6345d8 (patch) | |
tree | 78e1b0e1a1a1be312b68cd9cd297a32d0cfee259 | |
parent | 9aa3d09cd354e50195a441896a1eda34827e93a3 (diff) |
Move backend code into own dir and strip the word Backend from identifiers
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | doc/Makefile.am | 16 | ||||
-rw-r--r-- | doc/goa-docs.xml | 22 | ||||
-rw-r--r-- | doc/goa-sections.txt | 256 | ||||
-rw-r--r-- | doc/goa.types | 23 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/daemon/Makefile.am | 2 | ||||
-rw-r--r-- | src/daemon/goadaemon.c | 30 | ||||
-rw-r--r-- | src/goa/Makefile.am | 71 | ||||
-rw-r--r-- | src/goa/goabackendimapauth.h | 88 | ||||
-rw-r--r-- | src/goa/goabackendimapauthoauth.h | 46 | ||||
-rw-r--r-- | src/goa/goabackendimapclient.h | 65 | ||||
-rw-r--r-- | src/goa/goabackendoauth2provider.h | 133 | ||||
-rw-r--r-- | src/goa/goabackendoauthprovider.h | 137 | ||||
-rw-r--r-- | src/goa/goabackendprovider.h | 164 | ||||
-rw-r--r-- | src/goabackend/goabackend.h (renamed from src/goa/goabackend.h) | 26 | ||||
-rw-r--r-- | src/goabackend/goabackendenums.h (renamed from src/goa/goabackendenums.h) | 2 | ||||
-rw-r--r-- | src/goabackend/goabackendenumtypes.c.template (renamed from src/goa/goabackendenumtypes.c.template) | 0 | ||||
-rw-r--r-- | src/goabackend/goabackendenumtypes.h.template (renamed from src/goa/goabackendenumtypes.h.template) | 0 | ||||
-rw-r--r-- | src/goabackend/goabackendtypes.h (renamed from src/goa/goabackendtypes.h) | 48 | ||||
-rw-r--r-- | src/goabackend/goafacebookprovider.c (renamed from src/goa/goabackendfacebookprovider.c) | 92 | ||||
-rw-r--r-- | src/goabackend/goafacebookprovider.h (renamed from src/goa/goabackendyahooprovider.h) | 18 | ||||
-rw-r--r-- | src/goabackend/goagoogleprovider.c (renamed from src/goa/goabackendgoogleprovider.c) | 115 | ||||
-rw-r--r-- | src/goabackend/goagoogleprovider.h (renamed from src/goa/goabackendgoogleprovider.h) | 18 | ||||
-rw-r--r-- | src/goabackend/goaimapauth.c (renamed from src/goa/goabackendimapauth.c) | 34 | ||||
-rw-r--r-- | src/goabackend/goaimapauth.h | 88 | ||||
-rw-r--r-- | src/goabackend/goaimapauthoauth.c (renamed from src/goa/goabackendimapauthoauth.c) | 140 | ||||
-rw-r--r-- | src/goabackend/goaimapauthoauth.h (renamed from src/goa/goabackendimapmail.h) | 25 | ||||
-rw-r--r-- | src/goabackend/goaimapclient.c (renamed from src/goa/goabackendimapclient.c) | 140 | ||||
-rw-r--r-- | src/goabackend/goaimapclient.h | 63 | ||||
-rw-r--r-- | src/goabackend/goaimapmail.c (renamed from src/goa/goabackendimapmail.c) | 142 | ||||
-rw-r--r-- | src/goabackend/goaimapmail.h (renamed from src/goa/goabackendtwitterprovider.h) | 21 | ||||
-rw-r--r-- | src/goabackend/goaoauth2provider.c (renamed from src/goa/goabackendoauth2provider.c) | 392 | ||||
-rw-r--r-- | src/goabackend/goaoauth2provider.h | 130 | ||||
-rw-r--r-- | src/goabackend/goaoauthprovider.c (renamed from src/goa/goabackendoauthprovider.c) | 372 | ||||
-rw-r--r-- | src/goabackend/goaoauthprovider.h | 134 | ||||
-rw-r--r-- | src/goabackend/goaprovider.c (renamed from src/goa/goabackendprovider.c) | 262 | ||||
-rw-r--r-- | src/goabackend/goaprovider.h | 159 | ||||
-rw-r--r-- | src/goabackend/goatwitterprovider.c (renamed from src/goa/goabackendtwitterprovider.c) | 96 | ||||
-rw-r--r-- | src/goabackend/goatwitterprovider.h (renamed from src/goa/goabackendfacebookprovider.h) | 18 | ||||
-rw-r--r-- | src/goabackend/goayahooprovider.c (renamed from src/goa/goabackendyahooprovider.c) | 106 | ||||
-rw-r--r-- | src/goabackend/goayahooprovider.h | 42 | ||||
-rw-r--r-- | src/panel/Makefile.am | 2 | ||||
-rw-r--r-- | src/panel/goapanel.c | 44 |
44 files changed, 1851 insertions, 1934 deletions
diff --git a/configure.ac b/configure.ac index e79ae2c..48f14dd 100644 --- a/configure.ac +++ b/configure.ac @@ -82,6 +82,7 @@ Makefile data/Makefile src/Makefile src/goa/Makefile +src/goabackend/Makefile src/daemon/Makefile src/panel/Makefile src/examples/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index 693d5ac..c867b7e 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -13,10 +13,10 @@ DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml SCAN_OPTIONS= # The directory containing the source code. Relative to $(srcdir) -DOC_SOURCE_DIR=$(top_srcdir)/src/goa +DOC_SOURCE_DIR=$(top_srcdir)/src -HFILE_GLOB=$(top_srcdir)/src/goa/*.h -CFILE_GLOB=$(top_srcdir)/src/goa/*.c +HFILE_GLOB=$(top_srcdir)/src/goa/*.h $(top_srcdir)/src/goabackend/*.h +CFILE_GLOB=$(top_srcdir)/src/goa/*.c $(top_srcdir)/src/goabackend/*.c # Headers to ignore IGNORE_HFILES= \ @@ -33,11 +33,11 @@ INCLUDES = \ $(GIO_CFLAGS) \ $(NULL) -GTKDOC_LIBS = \ - $(GLIB_LIBS) \ - $(GIO_LIBS) \ - $(top_builddir)/src/goa/libgoa.la \ - $(top_builddir)/src/goa/libgoa-backend.la \ +GTKDOC_LIBS = \ + $(GLIB_LIBS) \ + $(GIO_LIBS) \ + $(top_builddir)/src/goa/libgoa.la \ + $(top_builddir)/src/goabackend/libgoa-backend.la \ $(NULL) # Extra options to supply to gtkdoc-mkdb diff --git a/doc/goa-docs.xml b/doc/goa-docs.xml index 05910b8..05eee4b 100644 --- a/doc/goa-docs.xml +++ b/doc/goa-docs.xml @@ -131,17 +131,17 @@ <part id="ref-backend-library"> <title>Backend Library API Reference</title> - <xi:include href="xml/goabackendprovider.xml"/> - <xi:include href="xml/goabackendoauthprovider.xml"/> - <xi:include href="xml/goabackendoauth2provider.xml"/> - <xi:include href="xml/goabackendgoogleprovider.xml"/> - <xi:include href="xml/goabackendfacebookprovider.xml"/> - <xi:include href="xml/goabackendyahooprovider.xml"/> - <xi:include href="xml/goabackendtwitterprovider.xml"/> - <xi:include href="xml/goabackendimapauth.xml"/> - <xi:include href="xml/goabackendimapauthoauth.xml"/> - <xi:include href="xml/goabackendimapclient.xml"/> - <xi:include href="xml/goabackendimapmail.xml"/> + <xi:include href="xml/goaprovider.xml"/> + <xi:include href="xml/goaoauthprovider.xml"/> + <xi:include href="xml/goaoauth2provider.xml"/> + <xi:include href="xml/goagoogleprovider.xml"/> + <xi:include href="xml/goafacebookprovider.xml"/> + <xi:include href="xml/goayahooprovider.xml"/> + <xi:include href="xml/goatwitterprovider.xml"/> + <xi:include href="xml/goaimapauth.xml"/> + <xi:include href="xml/goaimapauthoauth.xml"/> + <xi:include href="xml/goaimapclient.xml"/> + <xi:include href="xml/goaimapmail.xml"/> </part> <part id="tools-fileformats"> diff --git a/doc/goa-sections.txt b/doc/goa-sections.txt index f99c7ab..a3f4b83 100644 --- a/doc/goa-sections.txt +++ b/doc/goa-sections.txt @@ -484,122 +484,122 @@ goa_error_get_type </SECTION> <SECTION> -<FILE>goabackendprovider</FILE> -GoaBackendProvider -GoaBackendProviderClass -goa_backend_provider_get_provider_type -goa_backend_provider_get_name -goa_backend_provider_build_object -goa_backend_provider_add_account -goa_backend_provider_refresh_account -goa_backend_provider_store_credentials_sync -goa_backend_provider_lookup_credentials_sync -goa_backend_provider_ensure_credentials -goa_backend_provider_ensure_credentials_finish -goa_backend_provider_ensure_credentials_sync -GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME -goa_backend_provider_get_all -goa_backend_provider_get_for_provider_type +<FILE>goaprovider</FILE> +GoaProvider +GoaProviderClass +goa_provider_get_provider_type +goa_provider_get_name +goa_provider_build_object +goa_provider_add_account +goa_provider_refresh_account +goa_provider_store_credentials_sync +goa_provider_lookup_credentials_sync +goa_provider_ensure_credentials +goa_provider_ensure_credentials_finish +goa_provider_ensure_credentials_sync +GOA_PROVIDER_EXTENSION_POINT_NAME +goa_provider_get_all +goa_provider_get_for_provider_type <SUBSECTION Standard> -GOA_BACKEND_PROVIDER -GOA_BACKEND_PROVIDER_CLASS -GOA_BACKEND_PROVIDER_GET_CLASS -GOA_IS_BACKEND_PROVIDER -GOA_IS_BACKEND_PROVIDER_CLASS -GOA_TYPE_BACKEND_PROVIDER -GoaBackendProviderPrivate -goa_backend_provider_get_type +GOA_PROVIDER +GOA_PROVIDER_CLASS +GOA_PROVIDER_GET_CLASS +GOA_IS_PROVIDER +GOA_IS_PROVIDER_CLASS +GOA_TYPE_PROVIDER +GoaProviderPrivate +goa_provider_get_type </SECTION> <SECTION> -<FILE>goabackendoauth2provider</FILE> -GoaBackendOAuth2Provider -GoaBackendOAuth2ProviderClass -goa_backend_oauth2_provider_get_authorization_uri -goa_backend_oauth2_provider_get_token_uri -goa_backend_oauth2_provider_get_redirect_uri -goa_backend_oauth2_provider_get_scope -goa_backend_oauth2_provider_get_client_id -goa_backend_oauth2_provider_get_client_secret -goa_backend_oauth2_provider_build_authorization_uri -goa_backend_oauth2_provider_get_use_external_browser -goa_backend_oauth2_provider_get_identity_sync -goa_backend_oauth2_provider_get_access_token_sync +<FILE>goaoauth2provider</FILE> +GoaOAuth2Provider +GoaOAuth2ProviderClass +goa_oauth2_provider_get_authorization_uri +goa_oauth2_provider_get_token_uri +goa_oauth2_provider_get_redirect_uri +goa_oauth2_provider_get_scope +goa_oauth2_provider_get_client_id +goa_oauth2_provider_get_client_secret +goa_oauth2_provider_build_authorization_uri +goa_oauth2_provider_get_use_external_browser +goa_oauth2_provider_get_identity_sync +goa_oauth2_provider_get_access_token_sync <SUBSECTION Standard> -GOA_BACKEND_OAUTH2_PROVIDER -GOA_BACKEND_OAUTH2_PROVIDER_CLASS -GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS -GOA_IS_BACKEND_OAUTH2_PROVIDER -GOA_IS_BACKEND_OAUTH2_PROVIDER_CLASS -GOA_TYPE_BACKEND_OAUTH2_PROVIDER -GoaBackendOAuth2ProviderPrivate -goa_backend_oauth2_provider_get_type +GOA_OAUTH2_PROVIDER +GOA_OAUTH2_PROVIDER_CLASS +GOA_OAUTH2_PROVIDER_GET_CLASS +GOA_IS_OAUTH2_PROVIDER +GOA_IS_OAUTH2_PROVIDER_CLASS +GOA_TYPE_OAUTH2_PROVIDER +GoaOAuth2ProviderPrivate +goa_oauth2_provider_get_type </SECTION> <SECTION> -<FILE>goabackendoauthprovider</FILE> -GoaBackendOAuthProvider -GoaBackendOAuthProviderClass -goa_backend_oauth_provider_get_request_uri -goa_backend_oauth_provider_get_request_uri_params -goa_backend_oauth_provider_get_authorization_uri -goa_backend_oauth_provider_get_token_uri -goa_backend_oauth_provider_get_callback_uri -goa_backend_oauth_provider_get_consumer_key -goa_backend_oauth_provider_get_consumer_secret -goa_backend_oauth_provider_build_authorization_uri -goa_backend_oauth_provider_get_use_external_browser -goa_backend_oauth_provider_get_identity_sync -goa_backend_oauth_provider_get_access_token_sync +<FILE>goaoauthprovider</FILE> +GoaOAuthProvider +GoaOAuthProviderClass +goa_oauth_provider_get_request_uri +goa_oauth_provider_get_request_uri_params +goa_oauth_provider_get_authorization_uri +goa_oauth_provider_get_token_uri +goa_oauth_provider_get_callback_uri +goa_oauth_provider_get_consumer_key +goa_oauth_provider_get_consumer_secret +goa_oauth_provider_build_authorization_uri +goa_oauth_provider_get_use_external_browser +goa_oauth_provider_get_identity_sync +goa_oauth_provider_get_access_token_sync <SUBSECTION Standard> -GOA_BACKEND_OAUTH_PROVIDER -GOA_BACKEND_OAUTH_PROVIDER_CLASS -GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS -GOA_IS_BACKEND_OAUTH_PROVIDER -GOA_IS_BACKEND_OAUTH_PROVIDER_CLASS -GOA_TYPE_BACKEND_OAUTH_PROVIDER -GoaBackendOAuthProviderPrivate -goa_backend_oauth_provider_get_type +GOA_OAUTH_PROVIDER +GOA_OAUTH_PROVIDER_CLASS +GOA_OAUTH_PROVIDER_GET_CLASS +GOA_IS_OAUTH_PROVIDER +GOA_IS_OAUTH_PROVIDER_CLASS +GOA_TYPE_OAUTH_PROVIDER +GoaOAuthProviderPrivate +goa_oauth_provider_get_type </SECTION> <SECTION> -<FILE>goabackendgoogleprovider</FILE> -GoaBackendGoogleProvider +<FILE>goagoogleprovider</FILE> +GoaGoogleProvider <SUBSECTION Standard> -GOA_BACKEND_GOOGLE_PROVIDER -GOA_IS_BACKEND_GOOGLE_PROVIDER -GOA_TYPE_BACKEND_GOOGLE_PROVIDER -goa_backend_google_provider_get_type +GOA_GOOGLE_PROVIDER +GOA_IS_GOOGLE_PROVIDER +GOA_TYPE_GOOGLE_PROVIDER +goa_google_provider_get_type </SECTION> <SECTION> -<FILE>goabackendfacebookprovider</FILE> -GoaBackendFacebookProvider +<FILE>goafacebookprovider</FILE> +GoaFacebookProvider <SUBSECTION Standard> -GOA_BACKEND_FACEBOOK_PROVIDER -GOA_IS_BACKEND_FACEBOOK_PROVIDER -GOA_TYPE_BACKEND_FACEBOOK_PROVIDER -goa_backend_facebook_provider_get_type +GOA_FACEBOOK_PROVIDER +GOA_IS_FACEBOOK_PROVIDER +GOA_TYPE_FACEBOOK_PROVIDER +goa_facebook_provider_get_type </SECTION> <SECTION> -<FILE>goabackendyahooprovider</FILE> -GoaBackendYahooProvider +<FILE>goayahooprovider</FILE> +GoaYahooProvider <SUBSECTION Standard> -GOA_BACKEND_YAHOO_PROVIDER -GOA_IS_BACKEND_YAHOO_PROVIDER -GOA_TYPE_BACKEND_YAHOO_PROVIDER -goa_backend_yahoo_provider_get_type +GOA_YAHOO_PROVIDER +GOA_IS_YAHOO_PROVIDER +GOA_TYPE_YAHOO_PROVIDER +goa_yahoo_provider_get_type </SECTION> <SECTION> -<FILE>goabackendtwitterprovider</FILE> -GoaBackendTwitterProvider +<FILE>goatwitterprovider</FILE> +GoaTwitterProvider <SUBSECTION Standard> -GOA_BACKEND_TWITTER_PROVIDER -GOA_IS_BACKEND_TWITTER_PROVIDER -GOA_TYPE_BACKEND_TWITTER_PROVIDER -goa_backend_twitter_provider_get_type +GOA_TWITTER_PROVIDER +GOA_IS_TWITTER_PROVIDER +GOA_TYPE_TWITTER_PROVIDER +goa_twitter_provider_get_type </SECTION> <SECTION> @@ -699,54 +699,54 @@ goa_mail_monitor_skeleton_get_type </SECTION> <SECTION> -<FILE>goabackendimapclient</FILE> -GoaBackendImapClient -goa_backend_imap_client_new -goa_backend_imap_client_connect_sync -goa_backend_imap_client_run_command_sync -goa_backend_imap_client_idle_sync -goa_backend_imap_client_disconnect_sync +<FILE>goaimapclient</FILE> +GoaImapClient +goa_imap_client_new +goa_imap_client_connect_sync +goa_imap_client_run_command_sync +goa_imap_client_idle_sync +goa_imap_client_disconnect_sync <SUBSECTION Standard> -GOA_BACKEND_IMAP_CLIENT -GOA_IS_BACKEND_IMAP_CLIENT -GOA_TYPE_BACKEND_IMAP_CLIENT -goa_backend_imap_client_get_type +GOA_IMAP_CLIENT +GOA_IS_IMAP_CLIENT +GOA_TYPE_IMAP_CLIENT +goa_imap_client_get_type </SECTION> <SECTION> -<FILE>goabackendimapmail</FILE> -GoaBackendImapMail -goa_backend_imap_mail_new +<FILE>goaimapmail</FILE> +GoaImapMail +goa_imap_mail_new <SUBSECTION Standard> -GOA_BACKEND_IMAP_MAIL -GOA_IS_BACKEND_IMAP_MAIL -GOA_TYPE_BACKEND_IMAP_MAIL -goa_backend_imap_mail_get_type +GOA_IMAP_MAIL +GOA_IS_IMAP_MAIL +GOA_TYPE_IMAP_MAIL +goa_imap_mail_get_type </SECTION> <SECTION> -<FILE>goabackendimapauth</FILE> -GoaBackendImapAuth -GoaBackendImapAuthClass -goa_backend_imap_auth_run_sync +<FILE>goaimapauth</FILE> +GoaImapAuth +GoaImapAuthClass +goa_imap_auth_run_sync <SUBSECTION Standard> -GoaBackendImapAuthPrivate -GOA_BACKEND_IMAP_AUTH -GOA_IS_BACKEND_IMAP_AUTH -GOA_TYPE_BACKEND_IMAP_AUTH -GOA_BACKEND_IMAP_AUTH_CLASS -GOA_IS_BACKEND_IMAP_AUTH_CLASS -GOA_BACKEND_IMAP_AUTH_GET_CLASS -goa_backend_imap_auth_get_type +GoaImapAuthPrivate +GOA_IMAP_AUTH +GOA_IS_IMAP_AUTH +GOA_TYPE_IMAP_AUTH +GOA_IMAP_AUTH_CLASS +GOA_IS_IMAP_AUTH_CLASS +GOA_IMAP_AUTH_GET_CLASS +goa_imap_auth_get_type </SECTION> <SECTION> -<FILE>goabackendimapauthoauth</FILE> -GoaBackendImapAuthOAuth -goa_backend_imap_auth_oauth_new +<FILE>goaimapauthoauth</FILE> +GoaImapAuthOAuth +goa_imap_auth_oauth_new <SUBSECTION Standard> -GOA_BACKEND_IMAP_AUTH_OAUTH -GOA_IS_BACKEND_IMAP_AUTH_OAUTH -GOA_TYPE_BACKEND_IMAP_AUTH_OAUTH -goa_backend_imap_auth_oauth_get_type +GOA_IMAP_AUTH_OAUTH +GOA_IS_IMAP_AUTH_OAUTH +GOA_TYPE_IMAP_AUTH_OAUTH +goa_imap_auth_oauth_get_type </SECTION> diff --git a/doc/goa.types b/doc/goa.types index f87f4b0..5a73646 100644 --- a/doc/goa.types +++ b/doc/goa.types @@ -1,11 +1,4 @@ goa_client_get_type -goa_backend_provider_get_type -goa_backend_oauth_provider_get_type -goa_backend_oauth2_provider_get_type -goa_backend_google_provider_get_type -goa_backend_facebook_provider_get_type -goa_backend_yahoo_provider_get_type -goa_backend_twitter_provider_get_type goa_account_get_type goa_account_proxy_get_type goa_account_skeleton_get_type @@ -36,7 +29,15 @@ goa_mail_skeleton_get_type goa_mail_monitor_get_type goa_mail_monitor_proxy_get_type goa_mail_monitor_skeleton_get_type -goa_backend_imap_auth_get_type -goa_backend_imap_auth_oauth_get_type -goa_backend_imap_client_get_type -goa_backend_imap_mail_get_type + +goa_provider_get_type +goa_oauth_provider_get_type +goa_oauth2_provider_get_type +goa_google_provider_get_type +goa_facebook_provider_get_type +goa_yahoo_provider_get_type +goa_twitter_provider_get_type +goa_imap_auth_get_type +goa_imap_auth_oauth_get_type +goa_imap_client_get_type +goa_imap_mail_get_type diff --git a/src/Makefile.am b/src/Makefile.am index 6027402..1bbe999 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ NULL = -SUBDIRS = goa daemon panel examples +SUBDIRS = goa goabackend daemon panel examples diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am index 73476f2..32bf722 100644 --- a/src/daemon/Makefile.am +++ b/src/daemon/Makefile.am @@ -35,7 +35,7 @@ goa_daemon_CFLAGS = \ goa_daemon_LDADD = \ $(GLIB_LIBS) \ $(top_builddir)/src/goa/libgoa.la \ - $(top_builddir)/src/goa/libgoa-backend.la \ + $(top_builddir)/src/goabackend/libgoa-backend.la \ $(GTK_LIBS) \ $(LIBNOTIFY_LIBS) \ $(REST_LIBS) \ diff --git a/src/daemon/goadaemon.c b/src/daemon/goadaemon.c index ce57311..721bccd 100644 --- a/src/daemon/goadaemon.c +++ b/src/daemon/goadaemon.c @@ -36,7 +36,7 @@ #include <libsoup/soup.h> #include "goadaemon.h" -#include "goa/goabackend.h" +#include "goabackend/goabackend.h" struct _GoaDaemon { @@ -368,7 +368,7 @@ update_account_object (GoaDaemon *daemon, gboolean just_added) { GoaAccount *account; - GoaBackendProvider *provider; + GoaProvider *provider; gboolean ret; gchar *name; gchar *type; @@ -402,7 +402,7 @@ update_account_object (GoaDaemon *daemon, goa_account_set_provider_type (account, type); goa_account_set_name (account, name); - provider = goa_backend_provider_get_for_provider_type (type); + provider = goa_provider_get_for_provider_type (type); if (provider == NULL) { /* TODO: syslog */ @@ -411,7 +411,7 @@ update_account_object (GoaDaemon *daemon, } error = NULL; - if (!goa_backend_provider_build_object (provider, object, key_file, group, &error)) + if (!goa_provider_build_object (provider, object, key_file, group, &error)) { /* TODO: syslog */ g_warning ("Error parsing account: %s (%s, %d)", @@ -1174,16 +1174,16 @@ is_authorization_error (GError *error) } static void -ensure_credentials_cb (GoaBackendProvider *provider, - GAsyncResult *res, - gpointer user_data) +ensure_credentials_cb (GoaProvider *provider, + GAsyncResult *res, + gpointer user_data) { EnsureCredentialsData *data = user_data; gint expires_in; GError *error; error= NULL; - if (!goa_backend_provider_ensure_credentials_finish (provider, &expires_in, res, &error)) + if (!goa_provider_ensure_credentials_finish (provider, &expires_in, res, &error)) { /* Set AttentionNeeded only if the error is an authorization error */ if (is_authorization_error (error)) @@ -1230,11 +1230,11 @@ on_account_handle_ensure_credentials (GoaAccount *account, gpointer user_data) { GoaDaemon *daemon = GOA_DAEMON (user_data); - GoaBackendProvider *provider; + GoaProvider *provider; GoaObject *object; object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (account))); - provider = goa_backend_provider_get_for_provider_type (goa_account_get_provider_type (account)); + provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account)); if (provider == NULL) { /* TODO: syslog */ @@ -1247,11 +1247,11 @@ on_account_handle_ensure_credentials (GoaAccount *account, goto out; } - goa_backend_provider_ensure_credentials (provider, - object, - NULL, /* GCancellable */ - (GAsyncReadyCallback) ensure_credentials_cb, - ensure_credentials_data_new (daemon, object, invocation)); + goa_provider_ensure_credentials (provider, + object, + NULL, /* GCancellable */ + (GAsyncReadyCallback) ensure_credentials_cb, + ensure_credentials_data_new (daemon, object, invocation)); out: return TRUE; /* invocation was handled */ diff --git a/src/goa/Makefile.am b/src/goa/Makefile.am index fab70e2..2458cae 100644 --- a/src/goa/Makefile.am +++ b/src/goa/Makefile.am @@ -42,19 +42,8 @@ goaenumtypes.c: goaenums.h goaenumtypes.c.template cd $(srcdir) && glib-mkenums --template goaenumtypes.c.template goaenums.h ) > \ goaenumtypes.c.tmp && mv goaenumtypes.c.tmp goaenumtypes.c -goabackendenumtypes.h: goabackendenums.h goabackendenumtypes.h.template - ( top_builddir=`cd $(top_builddir) && pwd`; \ - cd $(srcdir) && glib-mkenums --template goabackendenumtypes.h.template goabackendenums.h ) > \ - goabackendenumtypes.h.tmp && mv goabackendenumtypes.h.tmp goabackendenumtypes.h - -goabackendenumtypes.c: goabackendenums.h goabackendenumtypes.c.template - ( top_builddir=`cd $(top_builddir) && pwd`; \ - cd $(srcdir) && glib-mkenums --template goabackendenumtypes.c.template goabackendenums.h ) > \ - goabackendenumtypes.c.tmp && mv goabackendenumtypes.c.tmp goabackendenumtypes.c - enum_built_sources = \ goaenumtypes.h goaenumtypes.c \ - goabackendenumtypes.h goabackendenumtypes.c \ $(NULL) # ---------------------------------------------------------------------------------------------------- @@ -125,65 +114,5 @@ endif # HAVE_INTROSPECTION # ---------------------------------------------------------------------------------------------------- -lib_LTLIBRARIES += libgoa-backend.la - -libgoa_backend_ladir = $(includedir)/goa/goa - -libgoa_backend_la_HEADERS = \ - goabackend.h \ - goabackendtypes.h \ - goabackendprovider.h \ - goabackendoauthprovider.h \ - goabackendoauth2provider.h \ - goabackendgoogleprovider.h \ - goabackendfacebookprovider.h \ - goabackendyahooprovider.h \ - goabackendtwitterprovider.h \ - goabackendimapauth.h \ - goabackendimapauthoauth.h \ - goabackendimapclient.h \ - goabackendenums.h \ - goabackendenumtypes.h \ - $(NULL) - -libgoa_backend_la_SOURCES = \ - goabackend.h \ - goabackendtypes.h \ - goabackendprovider.h goabackendprovider.c \ - goabackendoauthprovider.h goabackendoauthprovider.c \ - goabackendoauth2provider.h goabackendoauth2provider.c \ - goabackendgoogleprovider.h goabackendgoogleprovider.c \ - goabackendfacebookprovider.h goabackendfacebookprovider.c \ - goabackendyahooprovider.h goabackendyahooprovider.c \ - goabackendtwitterprovider.h goabackendtwitterprovider.c \ - goabackendimapauth.h goabackendimapauth.c \ - goabackendimapauthoauth.h goabackendimapauthoauth.c \ - goabackendimapclient.h goabackendimapclient.c \ - goabackendimapmail.h goabackendimapmail.c \ - goabackendenumtypes.h goabackendenumtypes.c \ - $(NULL) - -libgoa_backend_la_CFLAGS = \ - -DGOA_BACKEND_COMPILATION \ - -DGOA_API_IS_SUBJECT_TO_CHANGE \ - $(WEBKIT_GTK_CFLAGS) \ - $(JSON_GLIB_CFLAGS) \ - $(GLIB_CFLAGS) \ - $(GTK_CFLAGS) \ - $(GNOME_KEYRING_CFLAGS) \ - $(REST_CFLAGS) \ - $(NULL) - -libgoa_backend_la_LIBADD = \ - $(WEBKIT_GTK_LIBS) \ - $(JSON_GLIB_LIBS) \ - $(GLIB_LIBS) \ - $(GTK_LIBS) \ - $(GNOME_KEYRING_LIBS) \ - $(REST_LIBS) \ - $(NULL) - -# ---------------------------------------------------------------------------------------------------- - clean-local : rm -f *~ goa-generated-doc-*.xml $(dbus_built_sources) $(enum_built_sources) diff --git a/src/goa/goabackendimapauth.h b/src/goa/goabackendimapauth.h deleted file mode 100644 index 37ac521..0000000 --- a/src/goa/goabackendimapauth.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -/* - * Copyright (C) 2011 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: David Zeuthen <davidz@redhat.com> - */ - -#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." -#endif - -#ifndef __GOA_BACKEND_IMAP_AUTH_H__ -#define __GOA_BACKEND_IMAP_AUTH_H__ - -#include <goa/goabackendtypes.h> - -G_BEGIN_DECLS - -#define GOA_TYPE_BACKEND_IMAP_AUTH (goa_backend_imap_auth_get_type ()) -#define GOA_BACKEND_IMAP_AUTH(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_IMAP_AUTH, GoaBackendImapAuth)) -#define GOA_BACKEND_IMAP_AUTH_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_BACKEND_IMAP_AUTH, GoaBackendImapAuthClass)) -#define GOA_BACKEND_IMAP_AUTH_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_BACKEND_IMAP_AUTH, GoaBackendImapAuthClass)) -#define GOA_IS_BACKEND_IMAP_AUTH(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_IMAP_AUTH)) -#define GOA_IS_BACKEND_IMAP_AUTH_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_BACKEND_IMAP_AUTH)) - -struct _GoaBackendImapAuthClass; -struct _GoaBackendImapAuthPrivate; -typedef struct _GoaBackendImapAuthClass GoaBackendImapAuthClass; -typedef struct _GoaBackendImapAuthPrivate GoaBackendImapAuthPrivate; - -/** - * GoaBackendImapAuth: - * - * The #GoaBackendImapAuth structure contains only private data and - * should only be accessed using the provided API. - */ -struct _GoaBackendImapAuth -{ - /*< private >*/ - GObject parent_instance; - GoaBackendImapAuthPrivate *priv; -}; - -/** - * GoaBackendImapAuthClass: - * @parent_class: The parent class - * @run_sync: Virtual function for the goa_backend_imap_auth_run_sync() method. - * - * Class structure for #GoaBackendImapAuth. - */ -struct _GoaBackendImapAuthClass -{ - GObjectClass parent_class; - gboolean (*run_sync) (GoaBackendImapAuth *auth, - GDataInputStream *input, - GDataOutputStream *output, - GCancellable *cancellable, - GError **error); - /*< private >*/ - /* Padding for future expansion */ - gpointer goa_reserved[8]; -}; - -GType goa_backend_imap_auth_get_type (void) G_GNUC_CONST; -gboolean goa_backend_imap_auth_run_sync (GoaBackendImapAuth *auth, - GDataInputStream *input, - GDataOutputStream *output, - GCancellable *cancellable, - GError **error); - -G_END_DECLS - -#endif /* __GOA_BACKEND_IMAP_AUTH_H__ */ diff --git a/src/goa/goabackendimapauthoauth.h b/src/goa/goabackendimapauthoauth.h deleted file mode 100644 index 3899117..0000000 --- a/src/goa/goabackendimapauthoauth.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -/* - * Copyright (C) 2011 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: David Zeuthen <davidz@redhat.com> - */ - -#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." -#endif - -#ifndef __GOA_BACKEND_IMAP_AUTH_OAUTH_H__ -#define __GOA_BACKEND_IMAP_AUTH_OAUTH_H__ - -#include <goa/goabackendtypes.h> - -G_BEGIN_DECLS - -#define GOA_TYPE_BACKEND_IMAP_AUTH_OAUTH (goa_backend_imap_auth_oauth_get_type ()) -#define GOA_BACKEND_IMAP_AUTH_OAUTH(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_IMAP_AUTH_OAUTH, GoaBackendImapAuthOAuth)) -#define GOA_IS_BACKEND_IMAP_AUTH_OAUTH(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_IMAP_AUTH_OAUTH)) - - -GType goa_backend_imap_auth_oauth_get_type (void) G_GNUC_CONST; -GoaBackendImapAuth *goa_backend_imap_auth_oauth_new (GoaBackendOAuthProvider *provider, - GoaObject *object, - const gchar *request_uri); - -G_END_DECLS - -#endif /* __GOA_BACKEND_IMAP_AUTH_OAUTH_H__ */ diff --git a/src/goa/goabackendimapclient.h b/src/goa/goabackendimapclient.h deleted file mode 100644 index 8582c41..0000000 --- a/src/goa/goabackendimapclient.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -/* - * Copyright (C) 2011 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: David Zeuthen <davidz@redhat.com> - */ - -#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." -#endif - -#ifndef __GOA_BACKEND_IMAP_CLIENT_H__ -#define __GOA_BACKEND_IMAP_CLIENT_H__ - -#include <goa/goabackendtypes.h> - -G_BEGIN_DECLS - -#define GOA_TYPE_BACKEND_IMAP_CLIENT (goa_backend_imap_client_get_type ()) -#define GOA_BACKEND_IMAP_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_IMAP_CLIENT, GoaBackendImapClient)) -#define GOA_IS_BACKEND_IMAP_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_IMAP_CLIENT)) - -GType goa_backend_imap_client_get_type (void) G_GNUC_CONST; -GoaBackendImapClient *goa_backend_imap_client_new (void); -gboolean goa_backend_imap_client_connect_sync (GoaBackendImapClient *client, - const gchar *host_and_port, - gboolean use_tls, - GoaBackendImapAuth *auth, - GCancellable *cancellable, - GError **error); -gchar *goa_backend_imap_client_run_command_sync (GoaBackendImapClient *client, - const gchar *command, - GCancellable *cancellable, - GError **error); - -gboolean goa_backend_imap_client_idle_sync (GoaBackendImapClient *client, - guint max_idle_seconds, - GCancellable *cancellable, - GError **error); - -gboolean goa_backend_imap_client_disconnect_sync (GoaBackendImapClient *client, - GCancellable *cancellable, - GError **error); - -// TODO: gint goa_backend_imap_client_get_socket_fd (GoaBackendImapClient *client); - - -G_END_DECLS - -#endif /* __GOA_BACKEND_IMAP_CLIENT_H__ */ diff --git a/src/goa/goabackendoauth2provider.h b/src/goa/goabackendoauth2provider.h deleted file mode 100644 index f1f0426..0000000 --- a/src/goa/goabackendoauth2provider.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -/* - * Copyright (C) 2011 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: David Zeuthen <davidz@redhat.com> - */ - -#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." -#endif - -#ifndef __GOA_BACKEND_OAUTH2_PROVIDER_H__ -#define __GOA_BACKEND_OAUTH2_PROVIDER_H__ - -#include <goa/goabackendtypes.h> - -G_BEGIN_DECLS - -#define GOA_TYPE_BACKEND_OAUTH2_PROVIDER (goa_backend_oauth2_provider_get_type ()) -#define GOA_BACKEND_OAUTH2_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_OAUTH2_PROVIDER, GoaBackendOAuth2Provider)) -#define GOA_BACKEND_OAUTH2_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_BACKEND_OAUTH2_PROVIDER, GoaBackendOAuth2ProviderClass)) -#define GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_BACKEND_OAUTH2_PROVIDER, GoaBackendOAuth2ProviderClass)) -#define GOA_IS_BACKEND_OAUTH2_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_OAUTH2_PROVIDER)) - -#define GOA_IS_BACKEND_OAUTH2_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_BACKEND_OAUTH2_PROVIDER)) - -typedef struct _GoaBackendOAuth2ProviderClass GoaBackendOAuth2ProviderClass; -typedef struct _GoaBackendOAuth2ProviderPrivate GoaBackendOAuth2ProviderPrivate; - -/** - * GoaBackendOAuth2Provider: - * - * The #GoaBackendOAuth2Provider structure contains only private data and should - * only be accessed using the provided API. - */ -struct _GoaBackendOAuth2Provider -{ - /*< private >*/ - GoaBackendProvider parent_instance; - GoaBackendOAuth2ProviderPrivate *priv; -}; - -/** - * GoaBackendOAuth2ProviderClass: - * @parent_class: The parent class. - * @get_authorization_uri: Virtual function for goa_backend_oauth2_provider_get_authorization_uri(). - * @get_token_uri: Virtual function for goa_backend_oauth2_provider_get_token_uri(). - * @get_redirect_uri: Virtual function for goa_backend_oauth2_provider_get_redirect_uri(). - * @get_scope: Virtual function for goa_backend_oauth2_provider_get_scope(). - * @get_client_id: Virtual function for goa_backend_oauth2_provider_get_client_id(). - * @get_client_secret: Virtual function for goa_backend_oauth2_provider_get_client_secret(). - * @get_identity_sync: Virtual function for goa_backend_oauth2_provider_get_identity_sync(). - * @build_authorization_uri: Virtual function for goa_backend_oauth2_provider_build_authorization_uri(). - * @get_use_external_browser: Virtual function for goa_backend_oauth2_provider_get_use_external_browser(). - * - * Class structure for #GoaBackendOAuth2Provider. - */ -struct _GoaBackendOAuth2ProviderClass -{ - GoaBackendProviderClass parent_class; - - /* pure virtual */ - const gchar *(*get_authorization_uri) (GoaBackendOAuth2Provider *provider); - const gchar *(*get_token_uri) (GoaBackendOAuth2Provider *provider); - const gchar *(*get_redirect_uri) (GoaBackendOAuth2Provider *provider); - const gchar *(*get_scope) (GoaBackendOAuth2Provider *provider); - const gchar *(*get_client_id) (GoaBackendOAuth2Provider *provider); - const gchar *(*get_client_secret) (GoaBackendOAuth2Provider *provider); - gchar *(*get_identity_sync) (GoaBackendOAuth2Provider *provider, - const gchar *access_token, - gchar **out_name, - GCancellable *cancellable, - GError **error); - - /* virtual but with default implementation */ - gchar *(*build_authorization_uri) (GoaBackendOAuth2Provider *provider, - const gchar *authorization_uri, - const gchar *escaped_redirect_uri, - const gchar *escaped_client_id, - const gchar *escaped_scope); - gboolean (*get_use_external_browser) (GoaBackendOAuth2Provider *provider); - - /*< private >*/ - /* Padding for future expansion */ - gpointer goa_reserved[32]; -}; - -GType goa_backend_oauth2_provider_get_type (void) G_GNUC_CONST; -const gchar *goa_backend_oauth2_provider_get_authorization_uri (GoaBackendOAuth2Provider *provider); -const gchar *goa_backend_oauth2_provider_get_token_uri (GoaBackendOAuth2Provider *provider); -const gchar *goa_backend_oauth2_provider_get_redirect_uri (GoaBackendOAuth2Provider *provider); -const gchar *goa_backend_oauth2_provider_get_scope (GoaBackendOAuth2Provider *provider); -const gchar *goa_backend_oauth2_provider_get_client_id (GoaBackendOAuth2Provider *provider); -const gchar *goa_backend_oauth2_provider_get_client_secret (GoaBackendOAuth2Provider *provider); -gchar *goa_backend_oauth2_provider_get_identity_sync (GoaBackendOAuth2Provider *provider, - const gchar *access_token, - gchar **out_name, - GCancellable *cancellable, - GError **error); -gchar *goa_backend_oauth2_provider_get_access_token_sync (GoaBackendOAuth2Provider *provider, - GoaObject *object, - gboolean force_refresh, - gint *out_access_token_expires_in, - GCancellable *cancellable, - GError **error); - -/* ---------------------------------------------------------------------------------------------------- */ - -gchar *goa_backend_oauth2_provider_build_authorization_uri (GoaBackendOAuth2Provider *provider, - const gchar *authorization_uri, - const gchar *escaped_redirect_uri, - const gchar *escaped_client_id, - const gchar *escaped_scope); -gboolean goa_backend_oauth2_provider_get_use_external_browser (GoaBackendOAuth2Provider *provider); - -G_END_DECLS - -#endif /* __GOA_BACKEND_OAUTH2_PROVIDER_H__ */ diff --git a/src/goa/goabackendoauthprovider.h b/src/goa/goabackendoauthprovider.h deleted file mode 100644 index 4b8e457..0000000 --- a/src/goa/goabackendoauthprovider.h +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -/* - * Copyright (C) 2011 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: David Zeuthen <davidz@redhat.com> - */ - -#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." -#endif - -#ifndef __GOA_BACKEND_OAUTH_PROVIDER_H__ -#define __GOA_BACKEND_OAUTH_PROVIDER_H__ - -#include <goa/goabackendtypes.h> -#include <goa/goabackendprovider.h> - -G_BEGIN_DECLS - -#define GOA_TYPE_BACKEND_OAUTH_PROVIDER (goa_backend_oauth_provider_get_type ()) -#define GOA_BACKEND_OAUTH_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_OAUTH_PROVIDER, GoaBackendOAuthProvider)) -#define GOA_BACKEND_OAUTH_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_BACKEND_OAUTH_PROVIDER, GoaBackendOAuthProviderClass)) -#define GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_BACKEND_OAUTH_PROVIDER, GoaBackendOAuthProviderClass)) -#define GOA_IS_BACKEND_OAUTH_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_OAUTH_PROVIDER)) - -#define GOA_IS_BACKEND_OAUTH_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_BACKEND_OAUTH_PROVIDER)) - -typedef struct _GoaBackendOAuthProviderClass GoaBackendOAuthProviderClass; -typedef struct _GoaBackendOAuthProviderPrivate GoaBackendOAuthProviderPrivate; - -/** - * GoaBackendOAuthProvider: - * - * The #GoaBackendOAuthProvider structure contains only private data and should - * only be accessed using the provided API. - */ -struct _GoaBackendOAuthProvider -{ - /*< private >*/ - GoaBackendProvider parent_instance; - GoaBackendOAuthProviderPrivate *priv; -}; - -/** - * GoaBackendOAuthProviderClass: - * @parent_class: The parent class. - * @get_consumer_key: Virtual function for goa_backend_oauth_provider_get_consumer_key(). - * @get_consumer_secret: Virtual function for goa_backend_oauth_provider_get_consumer_secret(). - * @get_request_uri: Virtual function for goa_backend_oauth_provider_get_request_uri(). - * @get_authorization_uri: Virtual function for goa_backend_oauth_provider_get_authorization_uri(). - * @get_token_uri: Virtual function for goa_backend_oauth_provider_get_token_uri(). - * @get_callback_uri: Virtual function for goa_backend_oauth_provider_get_callback_uri(). - * @get_identity_sync: Virtual function for goa_backend_oauth_provider_get_identity_sync(). - * @build_authorization_uri: Virtual function for goa_backend_oauth_provider_build_authorization_uri(). - * @get_use_external_browser: Virtual function for goa_backend_oauth_provider_get_use_external_browser(). - * @get_request_uri_params: Virtual function for goa_backend_oauth_provider_get_request_uri_params(). - * - * Class structure for #GoaBackendOAuthProvider. - */ -struct _GoaBackendOAuthProviderClass -{ - GoaBackendProviderClass parent_class; - - /* pure virtual */ - const gchar *(*get_consumer_key) (GoaBackendOAuthProvider *provider); - const gchar *(*get_consumer_secret) (GoaBackendOAuthProvider *provider); - const gchar *(*get_request_uri) (GoaBackendOAuthProvider *provider); - const gchar *(*get_authorization_uri) (GoaBackendOAuthProvider *provider); - const gchar *(*get_token_uri) (GoaBackendOAuthProvider *provider); - const gchar *(*get_callback_uri) (GoaBackendOAuthProvider *provider); - - gchar *(*get_identity_sync) (GoaBackendOAuthProvider *provider, - const gchar *access_token, - const gchar *access_token_secret, - gchar **out_name, - GCancellable *cancellable, - GError **error); - - /* virtual but with default implementation */ - gchar *(*build_authorization_uri) (GoaBackendOAuthProvider *provider, - const gchar *authorization_uri, - const gchar *escaped_oauth_token); - gboolean (*get_use_external_browser) (GoaBackendOAuthProvider *provider); - gchar **(*get_request_uri_params) (GoaBackendOAuthProvider *provider); - - /*< private >*/ - /* Padding for future expansion */ - gpointer goa_reserved[32]; -}; - -GType goa_backend_oauth_provider_get_type (void) G_GNUC_CONST; -const gchar *goa_backend_oauth_provider_get_consumer_key (GoaBackendOAuthProvider *provider); -const gchar *goa_backend_oauth_provider_get_consumer_secret (GoaBackendOAuthProvider *provider); -const gchar *goa_backend_oauth_provider_get_request_uri (GoaBackendOAuthProvider *provider); -gchar **goa_backend_oauth_provider_get_request_uri_params (GoaBackendOAuthProvider *provider); -const gchar *goa_backend_oauth_provider_get_authorization_uri (GoaBackendOAuthProvider *provider); -const gchar *goa_backend_oauth_provider_get_token_uri (GoaBackendOAuthProvider *provider); -const gchar *goa_backend_oauth_provider_get_callback_uri (GoaBackendOAuthProvider *provider); -gchar *goa_backend_oauth_provider_get_identity_sync (GoaBackendOAuthProvider *provider, - const gchar *access_token, - const gchar *access_token_secret, - gchar **out_name, - GCancellable *cancellable, - GError **error); -gchar *goa_backend_oauth_provider_get_access_token_sync (GoaBackendOAuthProvider *provider, - GoaObject *object, - gboolean force_refresh, - gchar **out_access_token_secret, - gint *out_access_token_expires_in, - GCancellable *cancellable, - GError **error); - -/* ---------------------------------------------------------------------------------------------------- */ - -gchar *goa_backend_oauth_provider_build_authorization_uri (GoaBackendOAuthProvider *provider, - const gchar *authorization_uri, - const gchar *escaped_oauth_token); -gboolean goa_backend_oauth_provider_get_use_external_browser (GoaBackendOAuthProvider *provider); - -G_END_DECLS - -#endif /* __GOA_BACKEND_OAUTH_PROVIDER_H__ */ diff --git a/src/goa/goabackendprovider.h b/src/goa/goabackendprovider.h deleted file mode 100644 index e1a4fa2..0000000 --- a/src/goa/goabackendprovider.h +++ /dev/null @@ -1,164 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -/* - * Copyright (C) 2011 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that 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 library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: David Zeuthen <davidz@redhat.com> - */ - -#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." -#endif - -#ifndef __GOA_BACKEND_PROVIDER_H__ -#define __GOA_BACKEND_PROVIDER_H__ - -#include <goa/goabackendtypes.h> - -G_BEGIN_DECLS - -#define GOA_TYPE_BACKEND_PROVIDER (goa_backend_provider_get_type ()) -#define GOA_BACKEND_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_PROVIDER, GoaBackendProvider)) -#define GOA_BACKEND_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_BACKEND_PROVIDER, GoaBackendProviderClass)) -#define GOA_BACKEND_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_BACKEND_PROVIDER, GoaBackendProviderClass)) -#define GOA_IS_BACKEND_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_PROVIDER)) -#define GOA_IS_BACKEND_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_BACKEND_PROVIDER)) - -typedef struct _GoaBackendProviderClass GoaBackendProviderClass; -typedef struct _GoaBackendProviderPrivate GoaBackendProviderPrivate; - -/** - * GoaBackendProvider: - * - * The #GoaBackendProvider structure contains only private data and should - * only be accessed using the provided API. - */ -struct _GoaBackendProvider -{ - /*< private >*/ - GObject parent_instance; - GoaBackendProviderPrivate *priv; -}; - -/** - * GoaBackendProviderClass: - * @parent_class: The parent class. - * @get_provider_type: Virtual function for goa_backend_provider_get_provider_type(). - * @get_name: Virtual function for goa_backend_provider_get_name(). - * @add_account: Virtual function for goa_backend_provider_add_account(). - * @refresh_account: Virtual function for goa_backend_provider_refresh_account(). - * @build_object: Virtual function for goa_backend_provider_build_object(). - * @ensure_credentials_sync: Virtual function for goa_backend_provider_ensure_credentials_sync(). - * - * Class structure for #GoaBackendProvider. - */ -struct _GoaBackendProviderClass -{ - GObjectClass parent_class; - - /* pure virtual */ - const gchar *(*get_provider_type) (GoaBackendProvider *provider); - const gchar *(*get_name) (GoaBackendProvider *provider); - GoaObject *(*add_account) (GoaBackendProvider *provider, - GoaClient *client, - GtkDialog *dialog, - GtkBox *vbox, - GError **error); - gboolean (*refresh_account) (GoaBackendProvider *provider, - GoaClient *client, - GoaObject *object, - GtkWindow *parent, - GError **error); - gboolean (*build_object) (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error); - - /* virtual but with default implementation */ - gboolean (*ensure_credentials_sync) (GoaBackendProvider *provider, - GoaObject *object, - gint *out_expires_in, - GCancellable *cancellable, - GError **error); - - /*< private >*/ - /* Padding for future expansion */ - gpointer goa_reserved[32]; -}; - -GType goa_backend_provider_get_type (void) G_GNUC_CONST; -const gchar *goa_backend_provider_get_provider_type (GoaBackendProvider *provider); -const gchar *goa_backend_provider_get_name (GoaBackendProvider *provider); -GoaObject *goa_backend_provider_add_account (GoaBackendProvider *provider, - GoaClient *client, - GtkDialog *dialog, - GtkBox *vbox, - GError **error); -gboolean goa_backend_provider_refresh_account (GoaBackendProvider *provider, - GoaClient *client, - GoaObject *object, - GtkWindow *parent, - GError **error); -gboolean goa_backend_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error); - -gboolean goa_backend_provider_store_credentials_sync (GoaBackendProvider *provider, - const gchar *identity, - GVariant *credentials, - GCancellable *cancellable, - GError **error); - -GVariant *goa_backend_provider_lookup_credentials_sync (GoaBackendProvider *provider, - const gchar *identity, - GCancellable *cancellable, - GError **error); - -void goa_backend_provider_ensure_credentials (GoaBackendProvider *provider, - GoaObject *object, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -gboolean goa_backend_provider_ensure_credentials_finish (GoaBackendProvider *provider, - gint *out_expires_in, - GAsyncResult *res, - GError **error); - -gboolean goa_backend_provider_ensure_credentials_sync (GoaBackendProvider *provider, - GoaObject *object, - gint *out_expires_in, - GCancellable *cancellable, - GError **error); - - -/** - * GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME: - * - * Extension point for #GoaBackendProvider implementations. - */ -#define GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME "goa-backend-provider" - -GList *goa_backend_provider_get_all (void); -GoaBackendProvider *goa_backend_provider_get_for_provider_type (const gchar *provider_type); - -G_END_DECLS - -#endif /* __GOA_BACKEND_PROVIDER_H__ */ diff --git a/src/goa/goabackend.h b/src/goabackend/goabackend.h index df265ce..670d513 100644 --- a/src/goa/goabackend.h +++ b/src/goabackend/goabackend.h @@ -24,22 +24,22 @@ #define __GOA_BACKEND_H__ #if !defined(GOA_BACKEND_API_IS_SUBJECT_TO_CHANGE) && !defined(GOA_BACKEND_COMPILATION) -#error libgoa-backend is unstable API. You must define GOA_API_IS_SUBJECT_TO_CHANGE before including goa/goabackend.h +#error libgoa-backend is unstable API. You must define GOA_API_IS_SUBJECT_TO_CHANGE before including goabackend/goabackend.h #endif #define __GOA_BACKEND_INSIDE_GOA_BACKEND_H__ -#include <goa/goabackendtypes.h> -#include <goa/goabackendprovider.h> -#include <goa/goabackendoauthprovider.h> -#include <goa/goabackendoauth2provider.h> -#include <goa/goabackendgoogleprovider.h> -#include <goa/goabackendfacebookprovider.h> -#include <goa/goabackendyahooprovider.h> -#include <goa/goabackendtwitterprovider.h> -#include <goa/goabackendimapauth.h> -#include <goa/goabackendimapauthoauth.h> -#include <goa/goabackendimapclient.h> -#include <goa/goabackendimapmail.h> +#include <goabackend/goabackendtypes.h> +#include <goabackend/goaprovider.h> +#include <goabackend/goaoauthprovider.h> +#include <goabackend/goaoauth2provider.h> +#include <goabackend/goagoogleprovider.h> +#include <goabackend/goafacebookprovider.h> +#include <goabackend/goayahooprovider.h> +#include <goabackend/goatwitterprovider.h> +#include <goabackend/goaimapauth.h> +#include <goabackend/goaimapauthoauth.h> +#include <goabackend/goaimapclient.h> +#include <goabackend/goaimapmail.h> #undef __GOA_BACKEND_INSIDE_GOA_BACKEND_H__ #endif /* __GOA_BACKEND_H__ */ diff --git a/src/goa/goabackendenums.h b/src/goabackend/goabackendenums.h index c13587e..8cd0899 100644 --- a/src/goa/goabackendenums.h +++ b/src/goabackend/goabackendenums.h @@ -21,7 +21,7 @@ */ #if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." +#error "Only <goabackend/goabackend.h> can be included directly." #endif #ifndef __GOA_BACKEND_ENUMS_H__ diff --git a/src/goa/goabackendenumtypes.c.template b/src/goabackend/goabackendenumtypes.c.template index 7a76459..7a76459 100644 --- a/src/goa/goabackendenumtypes.c.template +++ b/src/goabackend/goabackendenumtypes.c.template diff --git a/src/goa/goabackendenumtypes.h.template b/src/goabackend/goabackendenumtypes.h.template index 7321076..7321076 100644 --- a/src/goa/goabackendenumtypes.h.template +++ b/src/goabackend/goabackendenumtypes.h.template diff --git a/src/goa/goabackendtypes.h b/src/goabackend/goabackendtypes.h index ee98a63..2ffb784 100644 --- a/src/goa/goabackendtypes.h +++ b/src/goabackend/goabackendtypes.h @@ -21,50 +21,50 @@ */ #if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." +#error "Only <goabackend/goabackend.h> can be included directly." #endif #ifndef __GOA_BACKEND_TYPES_H__ #define __GOA_BACKEND_TYPES_H__ #include <goa/goa.h> -#include <goa/goabackendenums.h> +#include <goabackend/goabackendenums.h> #include <gtk/gtk.h> G_BEGIN_DECLS -struct _GoaBackendProvider; -typedef struct _GoaBackendProvider GoaBackendProvider; +struct _GoaProvider; +typedef struct _GoaProvider GoaProvider; -struct _GoaBackendOAuthProvider; -typedef struct _GoaBackendOAuthProvider GoaBackendOAuthProvider; +struct _GoaOAuthProvider; +typedef struct _GoaOAuthProvider GoaOAuthProvider; -struct _GoaBackendOAuth2Provider; -typedef struct _GoaBackendOAuth2Provider GoaBackendOAuth2Provider; +struct _GoaOAuth2Provider; +typedef struct _GoaOAuth2Provider GoaOAuth2Provider; -struct _GoaBackendGoogleProvider; -typedef struct _GoaBackendGoogleProvider GoaBackendGoogleProvider; +struct _GoaGoogleProvider; +typedef struct _GoaGoogleProvider GoaGoogleProvider; -struct _GoaBackendFacebookProvider; -typedef struct _GoaBackendFacebookProvider GoaBackendFacebookProvider; +struct _GoaFacebookProvider; +typedef struct _GoaFacebookProvider GoaFacebookProvider; -struct _GoaBackendYahooProvider; -typedef struct _GoaBackendYahooProvider GoaBackendYahooProvider; +struct _GoaYahooProvider; +typedef struct _GoaYahooProvider GoaYahooProvider; -struct _GoaBackendTwitterProvider; -typedef struct _GoaBackendTwitterProvider GoaBackendTwitterProvider; +struct _GoaTwitterProvider; +typedef struct _GoaTwitterProvider GoaTwitterProvider; -struct _GoaBackendImapAuth; -typedef struct _GoaBackendImapAuth GoaBackendImapAuth; +struct _GoaImapAuth; +typedef struct _GoaImapAuth GoaImapAuth; -struct _GoaBackendImapAuthOAuth; -typedef struct _GoaBackendImapAuthOAuth GoaBackendImapAuthOAuth; +struct _GoaImapAuthOAuth; +typedef struct _GoaImapAuthOAuth GoaImapAuthOAuth; -struct _GoaBackendImapClient; -typedef struct _GoaBackendImapClient GoaBackendImapClient; +struct _GoaImapClient; +typedef struct _GoaImapClient GoaImapClient; -struct _GoaBackendImapMail; -typedef struct _GoaBackendImapMail GoaBackendImapMail; +struct _GoaImapMail; +typedef struct _GoaImapMail GoaImapMail; G_END_DECLS diff --git a/src/goa/goabackendfacebookprovider.c b/src/goabackend/goafacebookprovider.c index 92a1c22..bf39d16 100644 --- a/src/goa/goabackendfacebookprovider.c +++ b/src/goabackend/goafacebookprovider.c @@ -26,39 +26,39 @@ #include <rest/rest-proxy.h> #include <json-glib/json-glib.h> -#include "goabackendprovider.h" -#include "goabackendoauth2provider.h" -#include "goabackendfacebookprovider.h" +#include "goaprovider.h" +#include "goaoauth2provider.h" +#include "goafacebookprovider.h" /** - * GoaBackendFacebookProvider: + * GoaFacebookProvider: * - * The #GoaBackendFacebookProvider structure contains only private data and should + * The #GoaFacebookProvider structure contains only private data and should * only be accessed using the provided API. */ -struct _GoaBackendFacebookProvider +struct _GoaFacebookProvider { /*< private >*/ - GoaBackendOAuth2Provider parent_instance; + GoaOAuth2Provider parent_instance; }; -typedef struct _GoaBackendFacebookProviderClass GoaBackendFacebookProviderClass; +typedef struct _GoaFacebookProviderClass GoaFacebookProviderClass; -struct _GoaBackendFacebookProviderClass +struct _GoaFacebookProviderClass { - GoaBackendOAuth2ProviderClass parent_class; + GoaOAuth2ProviderClass parent_class; }; /** - * SECTION:goabackendfacebookprovider - * @title: GoaBackendFacebookProvider + * SECTION:goafacebookprovider + * @title: GoaFacebookProvider * @short_description: A provider for Facebook * - * #GoaBackendFacebookProvider is used for handling Facebook accounts. + * #GoaFacebookProvider is used for handling Facebook accounts. */ -G_DEFINE_TYPE_WITH_CODE (GoaBackendFacebookProvider, goa_backend_facebook_provider, GOA_TYPE_BACKEND_OAUTH2_PROVIDER, - g_io_extension_point_implement (GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME, +G_DEFINE_TYPE_WITH_CODE (GoaFacebookProvider, goa_facebook_provider, GOA_TYPE_OAUTH2_PROVIDER, + g_io_extension_point_implement (GOA_PROVIDER_EXTENSION_POINT_NAME, g_define_type_id, "facebook", 0)); @@ -66,39 +66,39 @@ G_DEFINE_TYPE_WITH_CODE (GoaBackendFacebookProvider, goa_backend_facebook_provid /* ---------------------------------------------------------------------------------------------------- */ static const gchar * -get_provider_type (GoaBackendProvider *_provider) +get_provider_type (GoaProvider *_provider) { return "facebook"; } static const gchar * -get_name (GoaBackendProvider *_provider) +get_name (GoaProvider *_provider) { return _("Facebook Account"); } static const gchar * -get_authorization_uri (GoaBackendOAuth2Provider *provider) +get_authorization_uri (GoaOAuth2Provider *provider) { return "https://www.facebook.com/dialog/oauth"; } static const gchar * -get_token_uri (GoaBackendOAuth2Provider *provider) +get_token_uri (GoaOAuth2Provider *provider) { return "https://graph.facebook.com/oauth/access_token"; } static const gchar * -get_redirect_uri (GoaBackendOAuth2Provider *provider) +get_redirect_uri (GoaOAuth2Provider *provider) { return "https://www.gnome.org/goa-1.0/oauth2?callback=1"; } static const gchar * -get_scope (GoaBackendOAuth2Provider *provider) +get_scope (GoaOAuth2Provider *provider) { /* see https://developers.facebook.com/docs/authentication/permissions/ */ return @@ -108,13 +108,13 @@ get_scope (GoaBackendOAuth2Provider *provider) } static const gchar * -get_client_id (GoaBackendOAuth2Provider *provider) +get_client_id (GoaOAuth2Provider *provider) { return "103995033022129"; } static const gchar * -get_client_secret (GoaBackendOAuth2Provider *provider) +get_client_secret (GoaOAuth2Provider *provider) { return "c3a9f8d49188a6dd8b596df48a90b94a"; } @@ -122,11 +122,11 @@ get_client_secret (GoaBackendOAuth2Provider *provider) /* ---------------------------------------------------------------------------------------------------- */ static gchar * -get_identity_sync (GoaBackendOAuth2Provider *provider, - const gchar *access_token, - gchar **out_name, - GCancellable *cancellable, - GError **error) +get_identity_sync (GoaOAuth2Provider *provider, + const gchar *access_token, + gchar **out_name, + GCancellable *cancellable, + GError **error) { RestProxy *proxy; RestProxyCall *call; @@ -215,11 +215,11 @@ get_identity_sync (GoaBackendOAuth2Provider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_facebook_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error) +build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error) { GoaAccount *account; GoaFacebookAccount *facebook_account; @@ -232,11 +232,11 @@ goa_backend_facebook_provider_build_object (GoaBackendProvider *provider, ret = FALSE; /* Chain up */ - if (!GOA_BACKEND_PROVIDER_CLASS (goa_backend_facebook_provider_parent_class)->build_object (provider, - object, - key_file, - group, - error)) + if (!GOA_PROVIDER_CLASS (goa_facebook_provider_parent_class)->build_object (provider, + object, + key_file, + group, + error)) goto out; account = goa_object_get_account (GOA_OBJECT (object)); @@ -272,7 +272,7 @@ goa_backend_facebook_provider_build_object (GoaBackendProvider *provider, } static gboolean -get_use_external_browser (GoaBackendOAuth2Provider *provider) +get_use_external_browser (GoaOAuth2Provider *provider) { return FALSE; } @@ -280,22 +280,22 @@ get_use_external_browser (GoaBackendOAuth2Provider *provider) /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_facebook_provider_init (GoaBackendFacebookProvider *client) +goa_facebook_provider_init (GoaFacebookProvider *client) { } static void -goa_backend_facebook_provider_class_init (GoaBackendFacebookProviderClass *klass) +goa_facebook_provider_class_init (GoaFacebookProviderClass *klass) { - GoaBackendProviderClass *provider_class; - GoaBackendOAuth2ProviderClass *oauth2_class; + GoaProviderClass *provider_class; + GoaOAuth2ProviderClass *oauth2_class; - provider_class = GOA_BACKEND_PROVIDER_CLASS (klass); + provider_class = GOA_PROVIDER_CLASS (klass); provider_class->get_provider_type = get_provider_type; provider_class->get_name = get_name; - provider_class->build_object = goa_backend_facebook_provider_build_object; + provider_class->build_object = build_object; - oauth2_class = GOA_BACKEND_OAUTH2_PROVIDER_CLASS (klass); + oauth2_class = GOA_OAUTH2_PROVIDER_CLASS (klass); oauth2_class->get_authorization_uri = get_authorization_uri; oauth2_class->get_token_uri = get_token_uri; oauth2_class->get_redirect_uri = get_redirect_uri; diff --git a/src/goa/goabackendyahooprovider.h b/src/goabackend/goafacebookprovider.h index cd6c106..be9655f 100644 --- a/src/goa/goabackendyahooprovider.h +++ b/src/goabackend/goafacebookprovider.h @@ -21,22 +21,22 @@ */ #if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." +#error "Only <goabackend/goabackend.h> can be included directly." #endif -#ifndef __GOA_BACKEND_YAHOO_PROVIDER_H__ -#define __GOA_BACKEND_YAHOO_PROVIDER_H__ +#ifndef __GOA_FACEBOOK_PROVIDER_H__ +#define __GOA_FACEBOOK_PROVIDER_H__ -#include <goa/goabackendtypes.h> +#include <goabackend/goabackendtypes.h> G_BEGIN_DECLS -#define GOA_TYPE_BACKEND_YAHOO_PROVIDER (goa_backend_yahoo_provider_get_type ()) -#define GOA_BACKEND_YAHOO_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_YAHOO_PROVIDER, GoaBackendYahooProvider)) -#define GOA_IS_BACKEND_YAHOO_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_YAHOO_PROVIDER)) +#define GOA_TYPE_FACEBOOK_PROVIDER (goa_facebook_provider_get_type ()) +#define GOA_FACEBOOK_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_FACEBOOK_PROVIDER, GoaFacebookProvider)) +#define GOA_IS_FACEBOOK_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_FACEBOOK_PROVIDER)) -GType goa_backend_yahoo_provider_get_type (void) G_GNUC_CONST; +GType goa_facebook_provider_get_type (void) G_GNUC_CONST; G_END_DECLS -#endif /* __GOA_BACKEND_YAHOO_PROVIDER_H__ */ +#endif /* __GOA_FACEBOOK_PROVIDER_H__ */ diff --git a/src/goa/goabackendgoogleprovider.c b/src/goabackend/goagoogleprovider.c index 0bbd8fb..8653eb8 100644 --- a/src/goa/goabackendgoogleprovider.c +++ b/src/goabackend/goagoogleprovider.c @@ -26,42 +26,42 @@ #include <rest/oauth-proxy.h> #include <json-glib/json-glib.h> -#include "goabackendprovider.h" -#include "goabackendoauthprovider.h" -#include "goabackendgoogleprovider.h" +#include "goaprovider.h" +#include "goaoauthprovider.h" +#include "goagoogleprovider.h" -#include "goabackendimapmail.h" -#include "goabackendimapauthoauth.h" +#include "goaimapmail.h" +#include "goaimapauthoauth.h" /** - * GoaBackendGoogleProvider: + * GoaGoogleProvider: * - * The #GoaBackendGoogleProvider structure contains only private data and should + * The #GoaGoogleProvider structure contains only private data and should * only be accessed using the provided API. */ -struct _GoaBackendGoogleProvider +struct _GoaGoogleProvider { /*< private >*/ - GoaBackendOAuthProvider parent_instance; + GoaOAuthProvider parent_instance; }; -typedef struct _GoaBackendGoogleProviderClass GoaBackendGoogleProviderClass; +typedef struct _GoaGoogleProviderClass GoaGoogleProviderClass; -struct _GoaBackendGoogleProviderClass +struct _GoaGoogleProviderClass { - GoaBackendOAuthProviderClass parent_class; + GoaOAuthProviderClass parent_class; }; /** - * SECTION:goabackendgoogleprovider - * @title: GoaBackendGoogleProvider + * SECTION:goagoogleprovider + * @title: GoaGoogleProvider * @short_description: A provider for Google * - * #GoaBackendGoogleProvider is used for handling Google accounts. + * #GoaGoogleProvider is used for handling Google accounts. */ -G_DEFINE_TYPE_WITH_CODE (GoaBackendGoogleProvider, goa_backend_google_provider, GOA_TYPE_BACKEND_OAUTH_PROVIDER, - g_io_extension_point_implement (GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME, +G_DEFINE_TYPE_WITH_CODE (GoaGoogleProvider, goa_google_provider, GOA_TYPE_OAUTH_PROVIDER, + g_io_extension_point_implement (GOA_PROVIDER_EXTENSION_POINT_NAME, g_define_type_id, "google", 0)); @@ -69,37 +69,37 @@ G_DEFINE_TYPE_WITH_CODE (GoaBackendGoogleProvider, goa_backend_google_provider, /* ---------------------------------------------------------------------------------------------------- */ static const gchar * -get_provider_type (GoaBackendProvider *_provider) +get_provider_type (GoaProvider *_provider) { return "google"; } static const gchar * -get_name (GoaBackendProvider *_provider) +get_name (GoaProvider *_provider) { return _("Google Account"); } static const gchar * -get_consumer_key (GoaBackendOAuthProvider *provider) +get_consumer_key (GoaOAuthProvider *provider) { return "anonymous"; } static const gchar * -get_consumer_secret (GoaBackendOAuthProvider *provider) +get_consumer_secret (GoaOAuthProvider *provider) { return "anonymous"; } static const gchar * -get_request_uri (GoaBackendOAuthProvider *provider) +get_request_uri (GoaOAuthProvider *provider) { return "https://www.google.com/accounts/OAuthGetRequestToken"; } static gchar ** -get_request_uri_params (GoaBackendOAuthProvider *provider) +get_request_uri_params (GoaOAuthProvider *provider) { GPtrArray *p; p = g_ptr_array_new (); @@ -118,21 +118,20 @@ get_request_uri_params (GoaBackendOAuthProvider *provider) return (gchar **) g_ptr_array_free (p, FALSE); } - static const gchar * -get_authorization_uri (GoaBackendOAuthProvider *provider) +get_authorization_uri (GoaOAuthProvider *provider) { return "https://www.google.com/accounts/OAuthAuthorizeToken"; } static const gchar * -get_token_uri (GoaBackendOAuthProvider *provider) +get_token_uri (GoaOAuthProvider *provider) { return "https://www.google.com/accounts/OAuthGetAccessToken"; } static const gchar * -get_callback_uri (GoaBackendOAuthProvider *provider) +get_callback_uri (GoaOAuthProvider *provider) { return "https://www.gnome.org/goa-1.0/oauth"; } @@ -140,12 +139,12 @@ get_callback_uri (GoaBackendOAuthProvider *provider) /* ---------------------------------------------------------------------------------------------------- */ static gchar * -get_identity_sync (GoaBackendOAuthProvider *provider, - const gchar *access_token, - const gchar *access_token_secret, - gchar **out_name, - GCancellable *cancellable, - GError **error) +get_identity_sync (GoaOAuthProvider *provider, + const gchar *access_token, + const gchar *access_token_secret, + gchar **out_name, + GCancellable *cancellable, + GError **error) { RestProxy *proxy; RestProxyCall *call; @@ -163,8 +162,8 @@ get_identity_sync (GoaBackendOAuthProvider *provider, /* TODO: cancellable */ - proxy = oauth_proxy_new_with_token (goa_backend_oauth_provider_get_consumer_key (provider), - goa_backend_oauth_provider_get_consumer_secret (provider), + proxy = oauth_proxy_new_with_token (goa_oauth_provider_get_consumer_key (provider), + goa_oauth_provider_get_consumer_secret (provider), access_token, access_token_secret, "https://www.googleapis.com/userinfo/email", @@ -235,11 +234,11 @@ get_identity_sync (GoaBackendOAuthProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_google_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error) +build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error) { GoaAccount *account; GoaGoogleAccount *google_account; @@ -254,11 +253,11 @@ goa_backend_google_provider_build_object (GoaBackendProvider *provider, ret = FALSE; /* Chain up */ - if (!GOA_BACKEND_PROVIDER_CLASS (goa_backend_google_provider_parent_class)->build_object (provider, - object, - key_file, - group, - error)) + if (!GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->build_object (provider, + object, + key_file, + group, + error)) goto out; account = goa_object_get_account (GOA_OBJECT (object)); @@ -286,13 +285,13 @@ goa_backend_google_provider_build_object (GoaBackendProvider *provider, mail = goa_object_get_mail (GOA_OBJECT (object)); if (mail == NULL) { - GoaBackendImapAuth *auth; + GoaImapAuth *auth; gchar *request_uri; request_uri = g_strdup_printf ("https://mail.google.com/mail/b/%s/imap/", email_address); - auth = goa_backend_imap_auth_oauth_new (GOA_BACKEND_OAUTH_PROVIDER (provider), - GOA_OBJECT (object), - request_uri); - mail = goa_backend_imap_mail_new ("imap.gmail.com", TRUE, auth); + auth = goa_imap_auth_oauth_new (GOA_OAUTH_PROVIDER (provider), + GOA_OBJECT (object), + request_uri); + mail = goa_imap_mail_new ("imap.gmail.com", TRUE, auth); goa_object_skeleton_set_mail (object, mail); g_object_unref (auth); g_free (request_uri); @@ -314,7 +313,7 @@ goa_backend_google_provider_build_object (GoaBackendProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -get_use_external_browser (GoaBackendOAuthProvider *provider) +get_use_external_browser (GoaOAuthProvider *provider) { return FALSE; } @@ -322,22 +321,22 @@ get_use_external_browser (GoaBackendOAuthProvider *provider) /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_google_provider_init (GoaBackendGoogleProvider *client) +goa_google_provider_init (GoaGoogleProvider *client) { } static void -goa_backend_google_provider_class_init (GoaBackendGoogleProviderClass *klass) +goa_google_provider_class_init (GoaGoogleProviderClass *klass) { - GoaBackendProviderClass *provider_class; - GoaBackendOAuthProviderClass *oauth_class; + GoaProviderClass *provider_class; + GoaOAuthProviderClass *oauth_class; - provider_class = GOA_BACKEND_PROVIDER_CLASS (klass); + provider_class = GOA_PROVIDER_CLASS (klass); provider_class->get_provider_type = get_provider_type; provider_class->get_name = get_name; - provider_class->build_object = goa_backend_google_provider_build_object; + provider_class->build_object = build_object; - oauth_class = GOA_BACKEND_OAUTH_PROVIDER_CLASS (klass); + oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass); oauth_class->get_identity_sync = get_identity_sync; oauth_class->get_consumer_key = get_consumer_key; oauth_class->get_consumer_secret = get_consumer_secret; diff --git a/src/goa/goabackendgoogleprovider.h b/src/goabackend/goagoogleprovider.h index 74d1265..b7b07d4 100644 --- a/src/goa/goabackendgoogleprovider.h +++ b/src/goabackend/goagoogleprovider.h @@ -21,22 +21,22 @@ */ #if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." +#error "Only <goabackend/goabackend.h> can be included directly." #endif -#ifndef __GOA_BACKEND_GOOGLE_PROVIDER_H__ -#define __GOA_BACKEND_GOOGLE_PROVIDER_H__ +#ifndef __GOA_GOOGLE_PROVIDER_H__ +#define __GOA_GOOGLE_PROVIDER_H__ -#include <goa/goabackendtypes.h> +#include <goabackend/goabackendtypes.h> G_BEGIN_DECLS -#define GOA_TYPE_BACKEND_GOOGLE_PROVIDER (goa_backend_google_provider_get_type ()) -#define GOA_BACKEND_GOOGLE_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_GOOGLE_PROVIDER, GoaBackendGoogleProvider)) -#define GOA_IS_BACKEND_GOOGLE_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_GOOGLE_PROVIDER)) +#define GOA_TYPE_GOOGLE_PROVIDER (goa_google_provider_get_type ()) +#define GOA_GOOGLE_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_GOOGLE_PROVIDER, GoaGoogleProvider)) +#define GOA_IS_GOOGLE_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_GOOGLE_PROVIDER)) -GType goa_backend_google_provider_get_type (void) G_GNUC_CONST; +GType goa_google_provider_get_type (void) G_GNUC_CONST; G_END_DECLS -#endif /* __GOA_BACKEND_GOOGLE_PROVIDER_H__ */ +#endif /* __GOA_GOOGLE_PROVIDER_H__ */ diff --git a/src/goa/goabackendimapauth.c b/src/goabackend/goaimapauth.c index 2f8f02b..f8d0bf3 100644 --- a/src/goa/goabackendimapauth.c +++ b/src/goabackend/goaimapauth.c @@ -24,37 +24,37 @@ #include <glib/gi18n-lib.h> #include <stdlib.h> -#include "goabackendimapauth.h" +#include "goaimapauth.h" /** - * SECTION:goabackendimapauth - * @title: GoaBackendImapAuth + * SECTION:goaimapauth + * @title: GoaImapAuth * @short_description: Helper type for authenticating IMAP connections * - * #GoaBackendImapAuth is an abstract type used for authenticating - * IMAP connections. See #GoaBackendImapAuthOAuth for a concrete + * #GoaImapAuth is an abstract type used for authenticating + * IMAP connections. See #GoaImapAuthOAuth for a concrete * implementation. */ -G_DEFINE_ABSTRACT_TYPE (GoaBackendImapAuth, goa_backend_imap_auth, G_TYPE_OBJECT); +G_DEFINE_ABSTRACT_TYPE (GoaImapAuth, goa_imap_auth, G_TYPE_OBJECT); /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_imap_auth_init (GoaBackendImapAuth *client) +goa_imap_auth_init (GoaImapAuth *client) { } static void -goa_backend_imap_auth_class_init (GoaBackendImapAuthClass *klass) +goa_imap_auth_class_init (GoaImapAuthClass *klass) { } /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_imap_auth_run_sync: - * @auth: A #GoaBackendImapAuth. + * goa_imap_auth_run_sync: + * @auth: A #GoaImapAuth. * @input: A valid #GDataInputStream. * @output: A valid #GDataOutputStream. * @cancellable: (allow-none): A #GCancellable or %NULL. @@ -68,17 +68,17 @@ goa_backend_imap_auth_class_init (GoaBackendImapAuthClass *klass) * set. */ gboolean -goa_backend_imap_auth_run_sync (GoaBackendImapAuth *auth, - GDataInputStream *input, - GDataOutputStream *output, - GCancellable *cancellable, - GError **error) +goa_imap_auth_run_sync (GoaImapAuth *auth, + GDataInputStream *input, + GDataOutputStream *output, + GCancellable *cancellable, + GError **error) { - g_return_val_if_fail (GOA_IS_BACKEND_IMAP_AUTH (auth), FALSE); + g_return_val_if_fail (GOA_IS_IMAP_AUTH (auth), FALSE); g_return_val_if_fail (G_IS_DATA_INPUT_STREAM (input), FALSE); g_return_val_if_fail (G_IS_DATA_OUTPUT_STREAM (output), FALSE); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE); - return GOA_BACKEND_IMAP_AUTH_GET_CLASS (auth)->run_sync (auth, input, output, cancellable, error); + return GOA_IMAP_AUTH_GET_CLASS (auth)->run_sync (auth, input, output, cancellable, error); } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/src/goabackend/goaimapauth.h b/src/goabackend/goaimapauth.h new file mode 100644 index 0000000..b60e08c --- /dev/null +++ b/src/goabackend/goaimapauth.h @@ -0,0 +1,88 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ +/* + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that 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 library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: David Zeuthen <davidz@redhat.com> + */ + +#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) +#error "Only <goabackend/goabackend.h> can be included directly." +#endif + +#ifndef __GOA_IMAP_AUTH_H__ +#define __GOA_IMAP_AUTH_H__ + +#include <goabackend/goabackendtypes.h> + +G_BEGIN_DECLS + +#define GOA_TYPE_IMAP_AUTH (goa_imap_auth_get_type ()) +#define GOA_IMAP_AUTH(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_IMAP_AUTH, GoaImapAuth)) +#define GOA_IMAP_AUTH_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_IMAP_AUTH, GoaImapAuthClass)) +#define GOA_IMAP_AUTH_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_IMAP_AUTH, GoaImapAuthClass)) +#define GOA_IS_IMAP_AUTH(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_IMAP_AUTH)) +#define GOA_IS_IMAP_AUTH_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_IMAP_AUTH)) + +struct _GoaImapAuthClass; +struct _GoaImapAuthPrivate; +typedef struct _GoaImapAuthClass GoaImapAuthClass; +typedef struct _GoaImapAuthPrivate GoaImapAuthPrivate; + +/** + * GoaImapAuth: + * + * The #GoaImapAuth structure contains only private data and + * should only be accessed using the provided API. + */ +struct _GoaImapAuth +{ + /*< private >*/ + GObject parent_instance; + GoaImapAuthPrivate *priv; +}; + +/** + * GoaImapAuthClass: + * @parent_class: The parent class + * @run_sync: Virtual function for the goa_imap_auth_run_sync() method. + * + * Class structure for #GoaImapAuth. + */ +struct _GoaImapAuthClass +{ + GObjectClass parent_class; + gboolean (*run_sync) (GoaImapAuth *auth, + GDataInputStream *input, + GDataOutputStream *output, + GCancellable *cancellable, + GError **error); + /*< private >*/ + /* Padding for future expansion */ + gpointer goa_reserved[8]; +}; + +GType goa_imap_auth_get_type (void) G_GNUC_CONST; +gboolean goa_imap_auth_run_sync (GoaImapAuth *auth, + GDataInputStream *input, + GDataOutputStream *output, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + +#endif /* __GOA_IMAP_AUTH_H__ */ diff --git a/src/goa/goabackendimapauthoauth.c b/src/goabackend/goaimapauthoauth.c index 4c5bed7..5b100f5 100644 --- a/src/goa/goabackendimapauthoauth.c +++ b/src/goabackend/goaimapauthoauth.c @@ -24,40 +24,40 @@ #include <glib/gi18n-lib.h> #include <stdlib.h> -#include "goabackendimapauth.h" -#include "goabackendimapauthoauth.h" -#include "goabackendoauthprovider.h" +#include "goaimapauth.h" +#include "goaimapauthoauth.h" +#include "goaoauthprovider.h" /** - * SECTION:goabackendimapauthoauth - * @title: GoaBackendImapAuthOAuth + * SECTION:goaimapauthoauth + * @title: GoaImapAuthOAuth * @short_description: XOAUTH authentication method for IMAP * - * #GoaBackendImapAuthOAuth implements the <ulink + * #GoaImapAuthOAuth implements the <ulink * url="http://code.google.com/apis/gmail/oauth/protocol.html">XOAUTH</ulink> * authentication method for IMAP. */ /** - * GoaBackendImapAuthOAuth: + * GoaImapAuthOAuth: * - * The #GoaBackendImapAuthOAuth structure contains only private data + * The #GoaImapAuthOAuth structure contains only private data * and should only be accessed using the provided API. */ -struct _GoaBackendImapAuthOAuth +struct _GoaImapAuthOAuth { - GoaBackendImapAuth parent_instance; + GoaImapAuth parent_instance; - GoaBackendOAuthProvider *provider; + GoaOAuthProvider *provider; GoaObject *object; gchar *request_uri; }; typedef struct { - GoaBackendImapAuthClass parent_class; + GoaImapAuthClass parent_class; -} GoaBackendImapAuthOAuthClass; +} GoaImapAuthOAuthClass; enum { @@ -67,34 +67,34 @@ enum PROP_REQUEST_URI }; -static gboolean goa_backend_imap_auth_oauth_run_sync (GoaBackendImapAuth *_auth, - GDataInputStream *input, - GDataOutputStream *output, - GCancellable *cancellable, - GError **error); +static gboolean goa_imap_auth_oauth_run_sync (GoaImapAuth *_auth, + GDataInputStream *input, + GDataOutputStream *output, + GCancellable *cancellable, + GError **error); -G_DEFINE_TYPE (GoaBackendImapAuthOAuth, goa_backend_imap_auth_oauth, GOA_TYPE_BACKEND_IMAP_AUTH); +G_DEFINE_TYPE (GoaImapAuthOAuth, goa_imap_auth_oauth, GOA_TYPE_IMAP_AUTH); /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_imap_auth_oauth_finalize (GObject *object) +goa_imap_auth_oauth_finalize (GObject *object) { - GoaBackendImapAuthOAuth *auth = GOA_BACKEND_IMAP_AUTH_OAUTH (object); + GoaImapAuthOAuth *auth = GOA_IMAP_AUTH_OAUTH (object); g_object_unref (auth->provider); g_object_unref (auth->object); - G_OBJECT_CLASS (goa_backend_imap_auth_oauth_parent_class)->finalize (object); + G_OBJECT_CLASS (goa_imap_auth_oauth_parent_class)->finalize (object); } static void -goa_backend_imap_auth_oauth_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +goa_imap_auth_oauth_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - GoaBackendImapAuthOAuth *auth = GOA_BACKEND_IMAP_AUTH_OAUTH (object); + GoaImapAuthOAuth *auth = GOA_IMAP_AUTH_OAUTH (object); switch (prop_id) { @@ -117,12 +117,12 @@ goa_backend_imap_auth_oauth_get_property (GObject *object, } static void -goa_backend_imap_auth_oauth_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +goa_imap_auth_oauth_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - GoaBackendImapAuthOAuth *auth = GOA_BACKEND_IMAP_AUTH_OAUTH (object); + GoaImapAuthOAuth *auth = GOA_IMAP_AUTH_OAUTH (object); switch (prop_id) { @@ -148,42 +148,42 @@ goa_backend_imap_auth_oauth_set_property (GObject *object, static void -goa_backend_imap_auth_oauth_init (GoaBackendImapAuthOAuth *client) +goa_imap_auth_oauth_init (GoaImapAuthOAuth *client) { } static void -goa_backend_imap_auth_oauth_class_init (GoaBackendImapAuthOAuthClass *klass) +goa_imap_auth_oauth_class_init (GoaImapAuthOAuthClass *klass) { GObjectClass *gobject_class; - GoaBackendImapAuthClass *auth_class; + GoaImapAuthClass *auth_class; gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = goa_backend_imap_auth_oauth_finalize; - gobject_class->get_property = goa_backend_imap_auth_oauth_get_property; - gobject_class->set_property = goa_backend_imap_auth_oauth_set_property; + gobject_class->finalize = goa_imap_auth_oauth_finalize; + gobject_class->get_property = goa_imap_auth_oauth_get_property; + gobject_class->set_property = goa_imap_auth_oauth_set_property; - auth_class = GOA_BACKEND_IMAP_AUTH_CLASS (klass); - auth_class->run_sync = goa_backend_imap_auth_oauth_run_sync; + auth_class = GOA_IMAP_AUTH_CLASS (klass); + auth_class->run_sync = goa_imap_auth_oauth_run_sync; /** - * GoaBackendImapAuthOAuth:provider: + * GoaImapAuthOAuth:provider: * - * The #GoaBackendOAuthProvider object to use when calculating the XOAUTH mechanism parameter. + * The #GoaOAuthProvider object to use when calculating the XOAUTH mechanism parameter. */ g_object_class_install_property (gobject_class, PROP_PROVIDER, g_param_spec_object ("provider", "provider", "provider", - GOA_TYPE_BACKEND_OAUTH_PROVIDER, + GOA_TYPE_OAUTH_PROVIDER, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); /** - * GoaBackendImapAuthOAuth:object: + * GoaImapAuthOAuth:object: * * The #GoaObject object to use when calculating the XOAUTH mechanism parameter. */ @@ -199,7 +199,7 @@ goa_backend_imap_auth_oauth_class_init (GoaBackendImapAuthOAuthClass *klass) G_PARAM_STATIC_STRINGS)); /** - * GoaBackendImapAuthOAuth:request-uri: + * GoaImapAuthOAuth:request-uri: * * The request URI to use when calculating the XOAUTH mechanism parameter. */ @@ -218,23 +218,23 @@ goa_backend_imap_auth_oauth_class_init (GoaBackendImapAuthOAuthClass *klass) /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_imap_auth_oauth_new: - * @provider: A #GoaBackendOAuthProvider. + * goa_imap_auth_oauth_new: + * @provider: A #GoaOAuthProvider. * @object: An account object. * @request_uri: The request URI to use. * - * Creates a new #GoaBackendImapAuth to be used for XOAUTH authentication. + * Creates a new #GoaImapAuth to be used for XOAUTH authentication. * - * Returns: (type GoaBackendImapAuthOAuth): A #GoaBackendImapAuthOAuth. Free with g_object_unref(). + * Returns: (type GoaImapAuthOAuth): A #GoaImapAuthOAuth. Free with g_object_unref(). */ -GoaBackendImapAuth * -goa_backend_imap_auth_oauth_new (GoaBackendOAuthProvider *provider, - GoaObject *object, - const gchar *request_uri) +GoaImapAuth * +goa_imap_auth_oauth_new (GoaOAuthProvider *provider, + GoaObject *object, + const gchar *request_uri) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); g_return_val_if_fail (GOA_IS_OBJECT (object), NULL); - return GOA_BACKEND_IMAP_AUTH (g_object_new (GOA_TYPE_BACKEND_IMAP_AUTH_OAUTH, + return GOA_IMAP_AUTH (g_object_new (GOA_TYPE_IMAP_AUTH_OAUTH, "provider", provider, "object", object, "request-uri", request_uri, @@ -492,13 +492,13 @@ calculate_xoauth_param (const gchar *request_uri, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_imap_auth_oauth_run_sync (GoaBackendImapAuth *_auth, - GDataInputStream *input, - GDataOutputStream *output, - GCancellable *cancellable, - GError **error) +goa_imap_auth_oauth_run_sync (GoaImapAuth *_auth, + GDataInputStream *input, + GDataOutputStream *output, + GCancellable *cancellable, + GError **error) { - GoaBackendImapAuthOAuth *auth = GOA_BACKEND_IMAP_AUTH_OAUTH (_auth); + GoaImapAuthOAuth *auth = GOA_IMAP_AUTH_OAUTH (_auth); gchar *access_token; gchar *access_token_secret; gchar *xoauth_param; @@ -513,19 +513,19 @@ goa_backend_imap_auth_oauth_run_sync (GoaBackendImapAuth *_auth, response = NULL; ret = FALSE; - access_token = goa_backend_oauth_provider_get_access_token_sync (auth->provider, - auth->object, - FALSE, /* force_refresh */ - &access_token_secret, - NULL, /* out_access_token_expires_in */ - NULL, /* GCancellable */ - error); /* GError */ + access_token = goa_oauth_provider_get_access_token_sync (auth->provider, + auth->object, + FALSE, /* force_refresh */ + &access_token_secret, + NULL, /* out_access_token_expires_in */ + NULL, /* GCancellable */ + error); /* GError */ if (access_token == NULL) goto out; xoauth_param = calculate_xoauth_param (auth->request_uri, - goa_backend_oauth_provider_get_consumer_key (auth->provider), - goa_backend_oauth_provider_get_consumer_secret (auth->provider), + goa_oauth_provider_get_consumer_key (auth->provider), + goa_oauth_provider_get_consumer_secret (auth->provider), access_token, access_token_secret, error); diff --git a/src/goa/goabackendimapmail.h b/src/goabackend/goaimapauthoauth.h index 2d87aaf..746c442 100644 --- a/src/goa/goabackendimapmail.h +++ b/src/goabackend/goaimapauthoauth.h @@ -21,25 +21,26 @@ */ #if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." +#error "Only <goabackend/goabackend.h> can be included directly." #endif -#ifndef __GOA_BACKEND_IMAP_MAIL_H__ -#define __GOA_BACKEND_IMAP_MAIL_H__ +#ifndef __GOA_IMAP_AUTH_OAUTH_H__ +#define __GOA_IMAP_AUTH_OAUTH_H__ -#include <goa/goabackendtypes.h> +#include <goabackend/goabackendtypes.h> G_BEGIN_DECLS -#define GOA_TYPE_BACKEND_IMAP_MAIL (goa_backend_imap_mail_get_type ()) -#define GOA_BACKEND_IMAP_MAIL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_IMAP_MAIL, GoaBackendImapMail)) -#define GOA_IS_BACKEND_IMAP_MAIL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_IMAP_MAIL)) +#define GOA_TYPE_IMAP_AUTH_OAUTH (goa_imap_auth_oauth_get_type ()) +#define GOA_IMAP_AUTH_OAUTH(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_IMAP_AUTH_OAUTH, GoaImapAuthOAuth)) +#define GOA_IS_IMAP_AUTH_OAUTH(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_IMAP_AUTH_OAUTH)) -GType goa_backend_imap_mail_get_type (void) G_GNUC_CONST; -GoaMail *goa_backend_imap_mail_new (const gchar *host_and_port, - gboolean use_tls, - GoaBackendImapAuth *auth); + +GType goa_imap_auth_oauth_get_type (void) G_GNUC_CONST; +GoaImapAuth *goa_imap_auth_oauth_new (GoaOAuthProvider *provider, + GoaObject *object, + const gchar *request_uri); G_END_DECLS -#endif /* __GOA_BACKEND_IMAP_MAIL_H__ */ +#endif /* __GOA_IMAP_AUTH_OAUTH_H__ */ diff --git a/src/goa/goabackendimapclient.c b/src/goabackend/goaimapclient.c index 0c30e4c..73c3c36 100644 --- a/src/goa/goabackendimapclient.c +++ b/src/goabackend/goaimapclient.c @@ -24,19 +24,19 @@ #include <glib/gi18n-lib.h> #include <stdlib.h> -#include "goabackendimapauth.h" -#include "goabackendimapclient.h" +#include "goaimapauth.h" +#include "goaimapclient.h" /* The timeout used for non-IDLE commands */ #define COMMAND_TIMEOUT_SEC 30 /** - * GoaBackendImapClient: + * GoaImapClient: * - * The #GoaBackendImapClient structure contains only private data and should + * The #GoaImapClient structure contains only private data and should * only be accessed using the provided API. */ -struct _GoaBackendImapClient +struct _GoaImapClient { /*< private >*/ GObject parent_instance; @@ -54,21 +54,21 @@ struct _GoaBackendImapClient GMutex *lock; }; -typedef struct _GoaBackendImapClientClass GoaBackendImapClientClass; +typedef struct _GoaImapClientClass GoaImapClientClass; -struct _GoaBackendImapClientClass +struct _GoaImapClientClass { GObjectClass parent_class; - void (*untagged_response) (GoaBackendImapClient *client, + void (*untagged_response) (GoaImapClient *client, const gchar *response); }; /** - * SECTION:goabackendimapclient - * @title: GoaBackendImapClient + * SECTION:goaimapclient + * @title: GoaImapClient * @short_description: A simple IMAP client * - * #GoaBackendImapClient provides a way to talk to + * #GoaImapClient provides a way to talk to * <ulink url="http://tools.ietf.org/html/rfc3501">IMAP</ulink> * servers. */ @@ -81,14 +81,14 @@ enum static guint signals[LAST_SIGNAL] = {0}; -G_DEFINE_TYPE (GoaBackendImapClient, goa_backend_imap_client, G_TYPE_OBJECT); +G_DEFINE_TYPE (GoaImapClient, goa_imap_client, G_TYPE_OBJECT); /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_imap_client_finalize (GObject *object) +goa_imap_client_finalize (GObject *object) { - GoaBackendImapClient *client = GOA_BACKEND_IMAP_CLIENT (object); + GoaImapClient *client = GOA_IMAP_CLIENT (object); g_clear_object (&client->sc); g_clear_object (&client->c); @@ -96,26 +96,26 @@ goa_backend_imap_client_finalize (GObject *object) g_clear_object (&client->dos); g_mutex_free (client->lock); - G_OBJECT_CLASS (goa_backend_imap_client_parent_class)->finalize (object); + G_OBJECT_CLASS (goa_imap_client_parent_class)->finalize (object); } static void -goa_backend_imap_client_init (GoaBackendImapClient *client) +goa_imap_client_init (GoaImapClient *client) { client->lock = g_mutex_new (); } static void -goa_backend_imap_client_class_init (GoaBackendImapClientClass *klass) +goa_imap_client_class_init (GoaImapClientClass *klass) { GObjectClass *gobject_class; gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = goa_backend_imap_client_finalize; + gobject_class->finalize = goa_imap_client_finalize; /** - * GoaBackendImapClient::untagged-response: - * @client: The #GoaBackendImapClient emitting the signal. + * GoaImapClient::untagged-response: + * @client: The #GoaImapClient emitting the signal. * @untagged_response: The untagged response. * * Signal emitted every an <ulink @@ -123,13 +123,13 @@ goa_backend_imap_client_class_init (GoaBackendImapClientClass *klass) * response</ulink> has been received. * * This signal is emitted in the same thread that calls the - * goa_backend_imap_client_run_command_sync() method. + * goa_imap_client_run_command_sync() method. */ signals[UNTAGGED_RESPONSE_SIGNAL] = g_signal_new ("untagged-response", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GoaBackendImapClientClass, untagged_response), + G_STRUCT_OFFSET (GoaImapClientClass, untagged_response), NULL, NULL, g_cclosure_marshal_VOID__STRING, @@ -141,37 +141,37 @@ goa_backend_imap_client_class_init (GoaBackendImapClientClass *klass) /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_imap_client_new: + * goa_imap_client_new: * - * Creates a new #GoaBackendImapClient instance. + * Creates a new #GoaImapClient instance. * * Typical usage includes connecting to the - * #GoaBackendImapClient::untagged-response signals and then invoking - * goa_backend_imap_client_connect_sync(). + * #GoaImapClient::untagged-response signals and then invoking + * goa_imap_client_connect_sync(). * - * You can then use goa_backend_imap_client_connect_sync(), - * goa_backend_imap_client_idle_sync() and the - * #GoaBackendImapClient::untagged-response handler to interact with + * You can then use goa_imap_client_connect_sync(), + * goa_imap_client_idle_sync() and the + * #GoaImapClient::untagged-response handler to interact with * the IMAP server. If the connection fails then the appropriate error * e.g. #G_IO_ERROR_TIMED_OUT or %G_IO_ERROR_NETWORK_UNREACHABLE is * returned. * * You can only make a single successful connection with each - * #GoaBackendImapClient instance - just create a new instance if the + * #GoaImapClient instance - just create a new instance if the * connection breaks and you need to reconnect. * - * Returns: (transfer full): A #GoaBackendImapClient that should be freed with g_object_unref(). + * Returns: (transfer full): A #GoaImapClient that should be freed with g_object_unref(). */ -GoaBackendImapClient * -goa_backend_imap_client_new (void) +GoaImapClient * +goa_imap_client_new (void) { - return GOA_BACKEND_IMAP_CLIENT (g_object_new (GOA_TYPE_BACKEND_IMAP_CLIENT, NULL)); + return GOA_IMAP_CLIENT (g_object_new (GOA_TYPE_IMAP_CLIENT, NULL)); } /** - * goa_backend_imap_client_connect_sync: - * @client: A #GoaBackendImapClient. + * goa_imap_client_connect_sync: + * @client: A #GoaImapClient. * @host_and_port: The name and optionally port to connect to. * @use_tls: Whether TLS should be used. * @auth: Object used for authenticating the connection. @@ -186,18 +186,18 @@ goa_backend_imap_client_new (void) * worked, %FALSE if @error is set. */ gboolean -goa_backend_imap_client_connect_sync (GoaBackendImapClient *client, - const gchar *host_and_port, - gboolean use_tls, - GoaBackendImapAuth *auth, - GCancellable *cancellable, - GError **error) +goa_imap_client_connect_sync (GoaImapClient *client, + const gchar *host_and_port, + gboolean use_tls, + GoaImapAuth *auth, + GCancellable *cancellable, + GError **error) { gboolean ret; - g_return_val_if_fail (GOA_IS_BACKEND_IMAP_CLIENT (client), FALSE); + g_return_val_if_fail (GOA_IS_IMAP_CLIENT (client), FALSE); g_return_val_if_fail (host_and_port != NULL, FALSE); - g_return_val_if_fail (GOA_IS_BACKEND_IMAP_AUTH (auth), FALSE); + g_return_val_if_fail (GOA_IS_IMAP_AUTH (auth), FALSE); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -238,7 +238,7 @@ goa_backend_imap_client_connect_sync (GoaBackendImapClient *client, g_data_input_stream_set_newline_type (client->dis, G_DATA_STREAM_NEWLINE_TYPE_CR_LF); /* Authenticate via the passed in auth helper */ - if (!goa_backend_imap_auth_run_sync (auth, + if (!goa_imap_auth_run_sync (auth, client->dis, client->dos, cancellable, @@ -263,8 +263,8 @@ goa_backend_imap_client_connect_sync (GoaBackendImapClient *client, /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_imap_client_run_command_sync: - * @client: A #GoaBackendImapClient. + * goa_imap_client_run_command_sync: + * @client: A #GoaImapClient. * @command: The command to run. * @cancellable: A #GCancellable or %NULL. * @error: Return location for error. @@ -285,13 +285,13 @@ goa_backend_imap_client_connect_sync (GoaBackendImapClient *client, * <literal>DONE</literal> is written out automatically. * While this method <emphasis>can</emphasis> be used for to submit * the <literal>IDLE</literal> IMAP command, the - * goa_backend_imap_client_idle_sync() method should be used instead. + * goa_imap_client_idle_sync() method should be used instead. * * The timeout on the underlying socket will be set to 30 seconds * except for the the <literal>IDLE</literal> command which never * times out. * - * Note that #GoaBackendImapClient::untagged-response signals are + * Note that #GoaImapClient::untagged-response signals are * emitted in the <emphasis role="strong">same</emphasis> thread that * you call this method from - not the * <link linkend="g-main-context-push-thread-default">thread-default main loop</link> @@ -301,10 +301,10 @@ goa_backend_imap_client_connect_sync (GoaBackendImapClient *client, * Returns: The response or %NULL if error is set. */ gchar * -goa_backend_imap_client_run_command_sync (GoaBackendImapClient *client, - const gchar *command, - GCancellable *cancellable, - GError **error) +goa_imap_client_run_command_sync (GoaImapClient *client, + const gchar *command, + GCancellable *cancellable, + GError **error) { gchar *s; gchar *tag; @@ -315,7 +315,7 @@ goa_backend_imap_client_run_command_sync (GoaBackendImapClient *client, gboolean idle_has_sent_done; GError *local_error; - g_return_val_if_fail (GOA_IS_BACKEND_IMAP_CLIENT (client), NULL); + g_return_val_if_fail (GOA_IS_IMAP_CLIENT (client), NULL); g_return_val_if_fail (command != NULL, NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); @@ -514,7 +514,7 @@ goa_backend_imap_client_run_command_sync (GoaBackendImapClient *client, typedef struct { - GoaBackendImapClient *client; + GoaImapClient *client; GCancellable *local_cancellable; gboolean timed_out; } IdleData; @@ -554,8 +554,8 @@ cancelled_while_idling_cb (GCancellable *cancellable, } /** - * goa_backend_imap_client_idle_sync: - * @client: A #GoaBackendImapClient. + * goa_imap_client_idle_sync: + * @client: A #GoaImapClient. * @max_idle_seconds: Max number of seconds to idle for. This should be no longer than 29 minutes. * @cancellable: (allow-none): A #GCancellable or %NULL. * @error: Return location for error or %NULL. @@ -572,7 +572,7 @@ cancelled_while_idling_cb (GCancellable *cancellable, * url="http://tools.ietf.org/html/rfc2177">IDLE</ulink> command then * it is used. Otherwise: TODO: handle servers not using IMAP IDLE. * - * Note that #GoaBackendImapClient::untagged-response signals are + * Note that #GoaImapClient::untagged-response signals are * emitted in the <emphasis role="strong">same</emphasis> thread that * you call this method from - not the * <link linkend="g-main-context-push-thread-default">thread-default main loop</link> @@ -582,10 +582,10 @@ cancelled_while_idling_cb (GCancellable *cancellable, * Returns: %TRUE if the request completed, %FALSE if @error is set. */ gboolean -goa_backend_imap_client_idle_sync (GoaBackendImapClient *client, - guint max_idle_seconds, - GCancellable *cancellable, - GError **error) +goa_imap_client_idle_sync (GoaImapClient *client, + guint max_idle_seconds, + GCancellable *cancellable, + GError **error) { GError *local_error; gboolean ret; @@ -594,7 +594,7 @@ goa_backend_imap_client_idle_sync (GoaBackendImapClient *client, IdleData data; gulong cancelled_id; - g_return_val_if_fail (GOA_IS_BACKEND_IMAP_CLIENT (client), FALSE); + g_return_val_if_fail (GOA_IS_IMAP_CLIENT (client), FALSE); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -627,7 +627,7 @@ goa_backend_imap_client_idle_sync (GoaBackendImapClient *client, * (TODO: actually handle IDLE not being available) */ local_error = NULL; - response = goa_backend_imap_client_run_command_sync (client, + response = goa_imap_client_run_command_sync (client, "IDLE", data.local_cancellable, &local_error); @@ -662,8 +662,8 @@ goa_backend_imap_client_idle_sync (GoaBackendImapClient *client, } /** - * goa_backend_imap_client_disconnect_sync: - * @client: A #GoaBackendImapClient. + * goa_imap_client_disconnect_sync: + * @client: A #GoaImapClient. * @cancellable: (allow-none): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * @@ -673,13 +673,13 @@ goa_backend_imap_client_idle_sync (GoaBackendImapClient *client, * Returns: %TRUE if the connection was closed, %FALSE if @error is set. */ gboolean -goa_backend_imap_client_disconnect_sync (GoaBackendImapClient *client, - GCancellable *cancellable, - GError **error) +goa_imap_client_disconnect_sync (GoaImapClient *client, + GCancellable *cancellable, + GError **error) { gboolean ret; - g_return_val_if_fail (GOA_IS_BACKEND_IMAP_CLIENT (client), FALSE); + g_return_val_if_fail (GOA_IS_IMAP_CLIENT (client), FALSE); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); diff --git a/src/goabackend/goaimapclient.h b/src/goabackend/goaimapclient.h new file mode 100644 index 0000000..0a9f2ea --- /dev/null +++ b/src/goabackend/goaimapclient.h @@ -0,0 +1,63 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ +/* + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that 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 library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: David Zeuthen <davidz@redhat.com> + */ + +#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) +#error "Only <goabackend/goabackend.h> can be included directly." +#endif + +#ifndef __GOA_IMAP_CLIENT_H__ +#define __GOA_IMAP_CLIENT_H__ + +#include <goabackend/goabackendtypes.h> + +G_BEGIN_DECLS + +#define GOA_TYPE_IMAP_CLIENT (goa_imap_client_get_type ()) +#define GOA_IMAP_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_IMAP_CLIENT, GoaImapClient)) +#define GOA_IS_IMAP_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_IMAP_CLIENT)) + +GType goa_imap_client_get_type (void) G_GNUC_CONST; +GoaImapClient *goa_imap_client_new (void); +gboolean goa_imap_client_connect_sync (GoaImapClient *client, + const gchar *host_and_port, + gboolean use_tls, + GoaImapAuth *auth, + GCancellable *cancellable, + GError **error); +gchar *goa_imap_client_run_command_sync (GoaImapClient *client, + const gchar *command, + GCancellable *cancellable, + GError **error); +gboolean goa_imap_client_idle_sync (GoaImapClient *client, + guint max_idle_seconds, + GCancellable *cancellable, + GError **error); +gboolean goa_imap_client_disconnect_sync (GoaImapClient *client, + GCancellable *cancellable, + GError **error); + +// TODO: gint goa_imap_client_get_socket_fd (GoaImapClient *client); + + +G_END_DECLS + +#endif /* __GOA_IMAP_CLIENT_H__ */ diff --git a/src/goa/goabackendimapmail.c b/src/goabackend/goaimapmail.c index f52617b..c3f7c8d 100644 --- a/src/goa/goabackendimapmail.c +++ b/src/goabackend/goaimapmail.c @@ -28,29 +28,29 @@ #include <json-glib/json-glib.h> #include <stdlib.h> -#include "goabackendimapauth.h" -#include "goabackendimapclient.h" -#include "goabackendimapmail.h" +#include "goaimapauth.h" +#include "goaimapclient.h" +#include "goaimapmail.h" /** - * GoaBackendImapMail: + * GoaImapMail: * - * The #GoaBackendImapMail structure contains only private data and should + * The #GoaImapMail structure contains only private data and should * only be accessed using the provided API. */ -struct _GoaBackendImapMail +struct _GoaImapMail { /*< private >*/ GoaMailSkeleton parent_instance; gchar *host_and_port; gboolean use_tls; - GoaBackendImapAuth *auth; + GoaImapAuth *auth; }; -typedef struct _GoaBackendImapMailClass GoaBackendImapMailClass; +typedef struct _GoaImapMailClass GoaImapMailClass; -struct _GoaBackendImapMailClass +struct _GoaImapMailClass { GoaMailSkeletonClass parent_class; }; @@ -64,40 +64,40 @@ enum }; /** - * SECTION:goabackendimapmail - * @title: GoaBackendImapMail + * SECTION:goaimapmail + * @title: GoaImapMail * @short_description: Implementation of the #GoaMail interface for IMAP servers * - * #GoaBackendImapMail is an implementation of the #GoaMail D-Bus - * interface that uses a #GoaBackendImapClient instance to speak to a + * #GoaImapMail is an implementation of the #GoaMail D-Bus + * interface that uses a #GoaImapClient instance to speak to a * remote IMAP server. */ -static void goa_backend_imap_mail__goa_mail_iface_init (GoaMailIface *iface); +static void goa_imap_mail__goa_mail_iface_init (GoaMailIface *iface); -G_DEFINE_TYPE_WITH_CODE (GoaBackendImapMail, goa_backend_imap_mail, GOA_TYPE_MAIL_SKELETON, - G_IMPLEMENT_INTERFACE (GOA_TYPE_MAIL, goa_backend_imap_mail__goa_mail_iface_init)); +G_DEFINE_TYPE_WITH_CODE (GoaImapMail, goa_imap_mail, GOA_TYPE_MAIL_SKELETON, + G_IMPLEMENT_INTERFACE (GOA_TYPE_MAIL, goa_imap_mail__goa_mail_iface_init)); /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_imap_mail_finalize (GObject *object) +goa_imap_mail_finalize (GObject *object) { - GoaBackendImapMail *mail = GOA_BACKEND_IMAP_MAIL (object); + GoaImapMail *mail = GOA_IMAP_MAIL (object); g_free (mail->host_and_port); g_object_unref (mail->auth); - G_OBJECT_CLASS (goa_backend_imap_mail_parent_class)->finalize (object); + G_OBJECT_CLASS (goa_imap_mail_parent_class)->finalize (object); } static void -goa_backend_imap_mail_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +goa_imap_mail_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - GoaBackendImapMail *mail = GOA_BACKEND_IMAP_MAIL (object); + GoaImapMail *mail = GOA_IMAP_MAIL (object); switch (prop_id) { @@ -120,12 +120,12 @@ goa_backend_imap_mail_get_property (GObject *object, } static void -goa_backend_imap_mail_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +goa_imap_mail_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - GoaBackendImapMail *mail = GOA_BACKEND_IMAP_MAIL (object); + GoaImapMail *mail = GOA_IMAP_MAIL (object); switch (prop_id) { @@ -148,7 +148,7 @@ goa_backend_imap_mail_set_property (GObject *object, } static void -goa_backend_imap_mail_init (GoaBackendImapMail *mail) +goa_imap_mail_init (GoaImapMail *mail) { /* Ensure D-Bus method invocations run in their own thread */ g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (mail), @@ -156,14 +156,14 @@ goa_backend_imap_mail_init (GoaBackendImapMail *mail) } static void -goa_backend_imap_mail_class_init (GoaBackendImapMailClass *klass) +goa_imap_mail_class_init (GoaImapMailClass *klass) { GObjectClass *gobject_class; gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = goa_backend_imap_mail_finalize; - gobject_class->set_property = goa_backend_imap_mail_set_property; - gobject_class->get_property = goa_backend_imap_mail_get_property; + gobject_class->finalize = goa_imap_mail_finalize; + gobject_class->set_property = goa_imap_mail_set_property; + gobject_class->get_property = goa_imap_mail_get_property; g_object_class_install_property (gobject_class, PROP_HOST_AND_PORT, @@ -192,7 +192,7 @@ goa_backend_imap_mail_class_init (GoaBackendImapMailClass *klass) g_param_spec_object ("auth", "auth", "auth", - GOA_TYPE_BACKEND_IMAP_AUTH, + GOA_TYPE_IMAP_AUTH, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | @@ -202,22 +202,22 @@ goa_backend_imap_mail_class_init (GoaBackendImapMailClass *klass) /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_imap_mail_new: + * goa_imap_mail_new: * @host_and_port: The name and optionally port to connect to. * @use_tls: Whether TLS should be used. * @auth: Object used for authenticating the connection. * * Creates a new #GoaMail object. * - * Returns: (type GoaBackendImapMail): A new #GoaMail instance. + * Returns: (type GoaImapMail): A new #GoaMail instance. */ GoaMail * -goa_backend_imap_mail_new (const gchar *host_and_port, - gboolean use_tls, - GoaBackendImapAuth *auth) +goa_imap_mail_new (const gchar *host_and_port, + gboolean use_tls, + GoaImapAuth *auth) { g_return_val_if_fail (host_and_port != NULL, NULL); - return GOA_MAIL (g_object_new (GOA_TYPE_BACKEND_IMAP_MAIL, + return GOA_MAIL (g_object_new (GOA_TYPE_IMAP_MAIL, "host-and-port", host_and_port, "use-tls", use_tls, "auth", auth, @@ -230,7 +230,7 @@ typedef struct { volatile gint ref_count; - GoaBackendImapMail *mail; + GoaImapMail *mail; GoaMailMonitor *monitor; /* Used so we can nuke the monitor if the creator vanishes */ @@ -602,9 +602,9 @@ imap_client_handle_fetch_response (ImapClientData *data, } static void -imap_client_on_untagged_response (GoaBackendImapClient *client, - const gchar *response, - gpointer user_data) +imap_client_on_untagged_response (GoaImapClient *client, + const gchar *response, + gpointer user_data) { ImapClientData *data = user_data; gchar s[64+1]; @@ -644,18 +644,18 @@ imap_client_sync_single (ImapClientData *data) { GError *error; gchar *response; - GoaBackendImapClient *client; + GoaImapClient *client; /* Get ourselves an IMAP client and connect to the server */ data->num_exists = -1; - client = goa_backend_imap_client_new (); + client = goa_imap_client_new (); error = NULL; - if (!goa_backend_imap_client_connect_sync (client, - data->monitor_data->mail->host_and_port, - data->monitor_data->mail->use_tls, - data->monitor_data->mail->auth, - NULL, /* GCancellable */ - &error)) + if (!goa_imap_client_connect_sync (client, + data->monitor_data->mail->host_and_port, + data->monitor_data->mail->use_tls, + data->monitor_data->mail->auth, + NULL, /* GCancellable */ + &error)) goto out; /* Houston, we have a connection */ @@ -668,10 +668,10 @@ imap_client_sync_single (ImapClientData *data) /* First, select the INBOX - this is guaranteed to emit the EXISTS untagged response */ error = NULL; - response = goa_backend_imap_client_run_command_sync (client, - "SELECT INBOX", - NULL, /* GCancellable */ - &error); + response = goa_imap_client_run_command_sync (client, + "SELECT INBOX", + NULL, /* GCancellable */ + &error); if (response == NULL) goto out; g_free (response); @@ -694,10 +694,10 @@ imap_client_sync_single (ImapClientData *data) /* If the connection is closed/severed, this is the way we find out since * the IDLE command submitted above disables timeouts */ - response = goa_backend_imap_client_run_command_sync (client, - "NOOP", - NULL, /* GCancellable */ - &error); + response = goa_imap_client_run_command_sync (client, + "NOOP", + NULL, /* GCancellable */ + &error); if (response == NULL) goto out; g_free (response); @@ -728,7 +728,7 @@ imap_client_sync_single (ImapClientData *data) "BODY.PEEK[TEXT]<0.1000>" ")"); error = NULL; - response = goa_backend_imap_client_run_command_sync (client, + response = goa_imap_client_run_command_sync (client, request_str->str, NULL, /* GCancellable */ &error); @@ -749,10 +749,10 @@ imap_client_sync_single (ImapClientData *data) * in RFC 2177: http://tools.ietf.org/html/rfc2177 */ error = NULL; - if (!goa_backend_imap_client_idle_sync (client, - 25 * 60, - data->monitor_data->imap_cancellable, - &error)) + if (!goa_imap_client_idle_sync (client, + 25 * 60, + data->monitor_data->imap_cancellable, + &error)) { if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_CANCELLED) { @@ -795,9 +795,9 @@ imap_client_sync_single (ImapClientData *data) G_CALLBACK (imap_client_on_untagged_response), data); error = NULL; - if (!goa_backend_imap_client_disconnect_sync (client, - NULL, /* GCancellable */ - &error)) + if (!goa_imap_client_disconnect_sync (client, + NULL, /* GCancellable */ + &error)) { g_warning ("%s:Error closing connection: %s (%s, %d)", G_STRFUNC, @@ -972,7 +972,7 @@ static gboolean handle_create_monitor (GoaMail *_mail, GDBusMethodInvocation *invocation) { - GoaBackendImapMail *mail = GOA_BACKEND_IMAP_MAIL (_mail); + GoaImapMail *mail = GOA_IMAP_MAIL (_mail); gchar *monitor_object_path; GError *error; MonitorData *data; @@ -1050,7 +1050,7 @@ handle_create_monitor (GoaMail *_mail, /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_imap_mail__goa_mail_iface_init (GoaMailIface *iface) +goa_imap_mail__goa_mail_iface_init (GoaMailIface *iface) { iface->handle_create_monitor = handle_create_monitor; } diff --git a/src/goa/goabackendtwitterprovider.h b/src/goabackend/goaimapmail.h index 89a37ff..6f30fee 100644 --- a/src/goa/goabackendtwitterprovider.h +++ b/src/goabackend/goaimapmail.h @@ -21,22 +21,25 @@ */ #if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." +#error "Only <goabackend/goabackend.h> can be included directly." #endif -#ifndef __GOA_BACKEND_TWITTER_PROVIDER_H__ -#define __GOA_BACKEND_TWITTER_PROVIDER_H__ +#ifndef __GOA_IMAP_MAIL_H__ +#define __GOA_IMAP_MAIL_H__ -#include <goa/goabackendtypes.h> +#include <goabackend/goabackendtypes.h> G_BEGIN_DECLS -#define GOA_TYPE_BACKEND_TWITTER_PROVIDER (goa_backend_twitter_provider_get_type ()) -#define GOA_BACKEND_TWITTER_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_TWITTER_PROVIDER, GoaBackendTwitterProvider)) -#define GOA_IS_BACKEND_TWITTER_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_TWITTER_PROVIDER)) +#define GOA_TYPE_IMAP_MAIL (goa_imap_mail_get_type ()) +#define GOA_IMAP_MAIL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_IMAP_MAIL, GoaImapMail)) +#define GOA_IS_IMAP_MAIL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_IMAP_MAIL)) -GType goa_backend_twitter_provider_get_type (void) G_GNUC_CONST; +GType goa_imap_mail_get_type (void) G_GNUC_CONST; +GoaMail *goa_imap_mail_new (const gchar *host_and_port, + gboolean use_tls, + GoaImapAuth *auth); G_END_DECLS -#endif /* __GOA_BACKEND_TWITTER_PROVIDER_H__ */ +#endif /* __GOA_IMAP_MAIL_H__ */ diff --git a/src/goa/goabackendoauth2provider.c b/src/goabackend/goaoauth2provider.c index 4713d53..74cc6c1 100644 --- a/src/goa/goabackendoauth2provider.c +++ b/src/goabackend/goaoauth2provider.c @@ -28,42 +28,42 @@ #include <webkit/webkit.h> #include <json-glib/json-glib.h> -#include "goabackendprovider.h" -#include "goabackendoauth2provider.h" +#include "goaprovider.h" +#include "goaoauth2provider.h" /** - * SECTION:goabackendoauth2provider - * @title: GoaBackendOAuth2Provider + * SECTION:goaoauth2provider + * @title: GoaOAuth2Provider * @short_description: Abstract base class for OAuth 2.0 providers * - * #GoaBackendOAuth2Provider is an abstract base class for <ulink + * #GoaOAuth2Provider is an abstract base class for <ulink * url="http://tools.ietf.org/html/draft-ietf-oauth-v2-15">OAuth * 2.0</ulink> based providers. * * Subclasses must implement - * #GoaBackendOAuth2ProviderClass.get_authorization_uri, - * #GoaBackendOAuth2ProviderClass.get_token_uri, - * #GoaBackendOAuth2ProviderClass.get_redirect_uri, - * #GoaBackendOAuth2ProviderClass.get_scope, - * #GoaBackendOAuth2ProviderClass.get_client_id, - * #GoaBackendOAuth2ProviderClass.get_client_secret and - * #GoaBackendOAuth2ProviderClass.get_identity_sync methods. + * #GoaOAuth2ProviderClass.get_authorization_uri, + * #GoaOAuth2ProviderClass.get_token_uri, + * #GoaOAuth2ProviderClass.get_redirect_uri, + * #GoaOAuth2ProviderClass.get_scope, + * #GoaOAuth2ProviderClass.get_client_id, + * #GoaOAuth2ProviderClass.get_client_secret and + * #GoaOAuth2ProviderClass.get_identity_sync methods. * * Additionally, the - * #GoaBackendProviderClass.get_provider_type, - * #GoaBackendProviderClass.get_name, - * #GoaBackendProviderClass.build_object (this should chain up to its + * #GoaProviderClass.get_provider_type, + * #GoaProviderClass.get_name, + * #GoaProviderClass.build_object (this should chain up to its * parent class) methods must be implemented. * - * Note that the #GoaBackendProviderClass.add_account, - * #GoaBackendProviderClass.refresh_account and - * #GoaBackendProviderClass.ensure_credentials_sync methods do not + * Note that the #GoaProviderClass.add_account, + * #GoaProviderClass.refresh_account and + * #GoaProviderClass.ensure_credentials_sync methods do not * need to be implemented - this type implements these methods.. */ G_LOCK_DEFINE_STATIC (provider_lock); -G_DEFINE_ABSTRACT_TYPE (GoaBackendOAuth2Provider, goa_backend_oauth2_provider, GOA_TYPE_BACKEND_PROVIDER); +G_DEFINE_ABSTRACT_TYPE (GoaOAuth2Provider, goa_oauth2_provider, GOA_TYPE_PROVIDER); static gboolean is_authorization_error (GError *error) @@ -84,21 +84,21 @@ is_authorization_error (GError *error) /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_oauth2_provider_get_use_external_browser_default (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_use_external_browser_default (GoaOAuth2Provider *provider) { return FALSE; } /** - * goa_backend_oauth2_provider_get_use_external_browser: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_use_external_browser: + * @provider: A #GoaOAuth2Provider. * * Returns whether an external browser (the users default browser) * should be used for user interaction. * * If an external browser is used, then the dialogs presented in - * goa_backend_provider_add_account() and - * goa_backend_provider_refresh_account() will show a simple "Paste + * goa_provider_add_account() and + * goa_provider_refresh_account() will show a simple "Paste * authorization code here" instructions along with an entry and * button. * @@ -109,20 +109,20 @@ goa_backend_oauth2_provider_get_use_external_browser_default (GoaBackendOAuth2Pr * browser, %FALSE to use an embedded browser widget. */ gboolean -goa_backend_oauth2_provider_get_use_external_browser (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_use_external_browser (GoaOAuth2Provider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), FALSE); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_use_external_browser (provider); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), FALSE); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_use_external_browser (provider); } /* ---------------------------------------------------------------------------------------------------- */ static gchar * -goa_backend_oauth2_provider_build_authorization_uri_default (GoaBackendOAuth2Provider *provider, - const gchar *authorization_uri, - const gchar *escaped_redirect_uri, - const gchar *escaped_client_id, - const gchar *escaped_scope) +goa_oauth2_provider_build_authorization_uri_default (GoaOAuth2Provider *provider, + const gchar *authorization_uri, + const gchar *escaped_redirect_uri, + const gchar *escaped_client_id, + const gchar *escaped_scope) { return g_strdup_printf ("%s" "?response_type=code" @@ -136,8 +136,8 @@ goa_backend_oauth2_provider_build_authorization_uri_default (GoaBackendOAuth2Pro } /** - * goa_backend_oauth2_provider_build_authorization_uri: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_build_authorization_uri: + * @provider: A #GoaOAuth2Provider. * @authorization_uri: An authorization URI. * @escaped_redirect_uri: An escaped redirect URI * @escaped_client_id: An escaped client id @@ -153,25 +153,25 @@ goa_backend_oauth2_provider_build_authorization_uri_default (GoaBackendOAuth2Pro * * The @authorization_uri, @escaped_redirect_uri, @escaped_client_id * and @escaped_scope parameters originate from the result of the - * the goa_backend_oauth2_provider_get_authorization_uri(), goa_backend_oauth2_provider_get_redirect_uri(), goa_backend_oauth2_provider_get_client_id() - * and goa_backend_oauth2_provider_get_scope() methods with the latter + * the goa_oauth2_provider_get_authorization_uri(), goa_oauth2_provider_get_redirect_uri(), goa_oauth2_provider_get_client_id() + * and goa_oauth2_provider_get_scope() methods with the latter * three escaped using g_uri_escape_string(). * * Returns: (transfer full): An authorization URI that must be freed with g_free(). */ gchar * -goa_backend_oauth2_provider_build_authorization_uri (GoaBackendOAuth2Provider *provider, - const gchar *authorization_uri, - const gchar *escaped_redirect_uri, - const gchar *escaped_client_id, - const gchar *escaped_scope) +goa_oauth2_provider_build_authorization_uri (GoaOAuth2Provider *provider, + const gchar *authorization_uri, + const gchar *escaped_redirect_uri, + const gchar *escaped_client_id, + const gchar *escaped_scope) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); g_return_val_if_fail (authorization_uri != NULL, NULL); g_return_val_if_fail (escaped_redirect_uri != NULL, NULL); g_return_val_if_fail (escaped_client_id != NULL, NULL); g_return_val_if_fail (escaped_scope != NULL, NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->build_authorization_uri (provider, + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->build_authorization_uri (provider, authorization_uri, escaped_redirect_uri, escaped_client_id, @@ -179,8 +179,8 @@ goa_backend_oauth2_provider_build_authorization_uri (GoaBackendOAuth2Provider * } /** - * goa_backend_oauth2_provider_get_authorization_uri: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_authorization_uri: + * @provider: A #GoaOAuth2Provider. * * Gets the <ulink * url="http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-2.1">authorization @@ -189,8 +189,8 @@ goa_backend_oauth2_provider_build_authorization_uri (GoaBackendOAuth2Provider * * * You should not include any parameters in the returned URI. If you * need to include additional parameters than the standard ones, - * override #GoaBackendOAuth2ProviderClass.build_authorization_uri - - * see goa_backend_oauth2_provider_build_authorization_uri() for more + * override #GoaOAuth2ProviderClass.build_authorization_uri - + * see goa_oauth2_provider_build_authorization_uri() for more * details. * * This is a pure virtual method - a subclass must provide an @@ -199,15 +199,15 @@ goa_backend_oauth2_provider_build_authorization_uri (GoaBackendOAuth2Provider * * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth2_provider_get_authorization_uri (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_authorization_uri (GoaOAuth2Provider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_authorization_uri (provider); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_authorization_uri (provider); } /** - * goa_backend_oauth2_provider_get_token_uri: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_token_uri: + * @provider: A #GoaOAuth2Provider. * * Gets the <ulink * url="http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-2.2">token @@ -221,15 +221,15 @@ goa_backend_oauth2_provider_get_authorization_uri (GoaBackendOAuth2Provider *pro * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth2_provider_get_token_uri (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_token_uri (GoaOAuth2Provider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_token_uri (provider); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_token_uri (provider); } /** - * goa_backend_oauth2_provider_get_redirect_uri: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_redirect_uri: + * @provider: A #GoaOAuth2Provider. * * Gets the <ulink * url="http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-2.1.1">redirect_uri</ulink> @@ -241,15 +241,15 @@ goa_backend_oauth2_provider_get_token_uri (GoaBackendOAuth2Provider *provider) * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth2_provider_get_redirect_uri (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_redirect_uri (GoaOAuth2Provider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_redirect_uri (provider); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_redirect_uri (provider); } /** - * goa_backend_oauth2_provider_get_scope: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_scope: + * @provider: A #GoaOAuth2Provider. * * Gets the <ulink * url="http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-2.1.1">scope</ulink> @@ -261,15 +261,15 @@ goa_backend_oauth2_provider_get_redirect_uri (GoaBackendOAuth2Provider *provider * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth2_provider_get_scope (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_scope (GoaOAuth2Provider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_scope (provider); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_scope (provider); } /** - * goa_backend_oauth2_provider_get_client_id: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_client_id: + * @provider: A #GoaOAuth2Provider. * * Gets the <ulink * url="http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-3">client_id</ulink> @@ -281,15 +281,15 @@ goa_backend_oauth2_provider_get_scope (GoaBackendOAuth2Provider *provider) * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth2_provider_get_client_id (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_client_id (GoaOAuth2Provider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_client_id (provider); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_client_id (provider); } /** - * goa_backend_oauth2_provider_get_client_secret: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_client_secret: + * @provider: A #GoaOAuth2Provider. * * Gets the <ulink * url="http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-3">client_secret</ulink> @@ -301,15 +301,15 @@ goa_backend_oauth2_provider_get_client_id (GoaBackendOAuth2Provider *provider) * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth2_provider_get_client_secret (GoaBackendOAuth2Provider *provider) +goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_client_secret (provider); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_client_secret (provider); } /** - * goa_backend_oauth2_provider_get_identity_sync: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_identity_sync: + * @provider: A #GoaOAuth2Provider. * @access_token: A valid OAuth 2.0 access token. * @out_name: (out): Return location for name or %NULL. * @cancellable: (allow-none): A #GCancellable or %NULL. @@ -320,8 +320,8 @@ goa_backend_oauth2_provider_get_client_secret (GoaBackendOAuth2Provider *provide * * The identity is needed because all authentication happens out of * band. The only requirement is that the returned identity is unique - * - for example, for #GoaBackendGoogleProvider the returned identity - * is the email address, for #GoaBackendFacebookProvider it's the user + * - for example, for #GoaGoogleProvider the returned identity + * is the email address, for #GoaFacebookProvider it's the user * name. In addition to the identity, an implementation also returns a * <emphasis>name</emphasis> that is more suitable for presentation * (the identity could be a GUID for example) and doesn't have to be @@ -333,29 +333,29 @@ goa_backend_oauth2_provider_get_client_secret (GoaBackendOAuth2Provider *provide * must be freed with g_free(). */ gchar * -goa_backend_oauth2_provider_get_identity_sync (GoaBackendOAuth2Provider *provider, - const gchar *access_token, - gchar **out_name, - GCancellable *cancellable, - GError **error) +goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider, + const gchar *access_token, + gchar **out_name, + GCancellable *cancellable, + GError **error) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); g_return_val_if_fail (access_token != NULL, NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - return GOA_BACKEND_OAUTH2_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, out_name, cancellable, error); + return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, out_name, cancellable, error); } /* ---------------------------------------------------------------------------------------------------- */ static gchar * -get_tokens_sync (GoaBackendOAuth2Provider *provider, - const gchar *authorization_code, - const gchar *refresh_token, - gchar **out_refresh_token, - gint *out_access_token_expires_in, - GCancellable *cancellable, - GError **error) +get_tokens_sync (GoaOAuth2Provider *provider, + const gchar *authorization_code, + const gchar *refresh_token, + gchar **out_refresh_token, + gint *out_access_token_expires_in, + GCancellable *cancellable, + GError **error) { RestProxy *proxy; RestProxyCall *call; @@ -372,26 +372,26 @@ get_tokens_sync (GoaBackendOAuth2Provider *provider, ret_access_token_expires_in = 0; ret_refresh_token = NULL; - proxy = rest_proxy_new (goa_backend_oauth2_provider_get_token_uri (provider), FALSE); + proxy = rest_proxy_new (goa_oauth2_provider_get_token_uri (provider), FALSE); call = rest_proxy_new_call (proxy); rest_proxy_call_set_method (call, "POST"); rest_proxy_call_add_header (call, "Content-Type", "application/x-www-form-urlencoded"); if (refresh_token != NULL) { /* Swell, we have a refresh code - just use that */ - rest_proxy_call_add_param (call, "client_id", goa_backend_oauth2_provider_get_client_id (provider)); - rest_proxy_call_add_param (call, "client_secret", goa_backend_oauth2_provider_get_client_secret (provider)); + rest_proxy_call_add_param (call, "client_id", goa_oauth2_provider_get_client_id (provider)); + rest_proxy_call_add_param (call, "client_secret", goa_oauth2_provider_get_client_secret (provider)); rest_proxy_call_add_param (call, "grant_type", "refresh_token"); rest_proxy_call_add_param (call, "refresh_token", refresh_token); } else { /* No refresh code.. request an access token using the authorization code instead */ - rest_proxy_call_add_param (call, "client_id", goa_backend_oauth2_provider_get_client_id (provider)); - rest_proxy_call_add_param (call, "client_secret", goa_backend_oauth2_provider_get_client_secret (provider)); + rest_proxy_call_add_param (call, "client_id", goa_oauth2_provider_get_client_id (provider)); + rest_proxy_call_add_param (call, "client_secret", goa_oauth2_provider_get_client_secret (provider)); rest_proxy_call_add_param (call, "grant_type", "authorization_code"); rest_proxy_call_add_param (call, "code", authorization_code); - rest_proxy_call_add_param (call, "redirect_uri", goa_backend_oauth2_provider_get_redirect_uri (provider)); + rest_proxy_call_add_param (call, "redirect_uri", goa_oauth2_provider_get_redirect_uri (provider)); } /* TODO: cancellable support? */ @@ -494,7 +494,7 @@ get_tokens_sync (GoaBackendOAuth2Provider *provider, /* ---------------------------------------------------------------------------------------------------- */ typedef struct { - GoaBackendOAuth2Provider *provider; + GoaOAuth2Provider *provider; GtkDialog *dialog; GError *error; GMainLoop *loop; @@ -524,7 +524,7 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web requested_uri = webkit_network_request_get_uri (request); //g_debug ("requested_uri is %s", requested_uri); - redirect_uri = goa_backend_oauth2_provider_get_redirect_uri (data->provider); + redirect_uri = goa_oauth2_provider_get_redirect_uri (data->provider); if (g_str_has_prefix (requested_uri, redirect_uri)) { SoupMessage *message; @@ -573,16 +573,16 @@ on_entry_changed (GtkEditable *editable, } static gboolean -get_tokens_and_identity (GoaBackendOAuth2Provider *provider, - GtkDialog *dialog, - GtkBox *vbox, - gchar **out_authorization_code, - gchar **out_access_token, - gint *out_access_token_expires_in, - gchar **out_refresh_token, - gchar **out_identity, - gchar **out_name, - GError **error) +get_tokens_and_identity (GoaOAuth2Provider *provider, + GtkDialog *dialog, + GtkBox *vbox, + gchar **out_authorization_code, + gchar **out_access_token, + gint *out_access_token_expires_in, + gchar **out_refresh_token, + gchar **out_identity, + gchar **out_name, + GError **error) { gboolean ret; gchar *url; @@ -591,7 +591,7 @@ get_tokens_and_identity (GoaBackendOAuth2Provider *provider, gchar *escaped_client_id; gchar *escaped_scope; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), FALSE); g_return_val_if_fail (GTK_IS_DIALOG (dialog), FALSE); g_return_val_if_fail (GTK_IS_BOX (vbox), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -608,17 +608,17 @@ get_tokens_and_identity (GoaBackendOAuth2Provider *provider, data.loop = g_main_loop_new (NULL, FALSE); /* TODO: use oauth2_proxy_build_login_url_full() */ - escaped_redirect_uri = g_uri_escape_string (goa_backend_oauth2_provider_get_redirect_uri (provider), NULL, TRUE); - escaped_client_id = g_uri_escape_string (goa_backend_oauth2_provider_get_client_id (provider), NULL, TRUE); - escaped_scope = g_uri_escape_string (goa_backend_oauth2_provider_get_scope (provider), NULL, TRUE); - url = goa_backend_oauth2_provider_build_authorization_uri (provider, - goa_backend_oauth2_provider_get_authorization_uri (provider), - escaped_redirect_uri, - escaped_client_id, - escaped_scope); + escaped_redirect_uri = g_uri_escape_string (goa_oauth2_provider_get_redirect_uri (provider), NULL, TRUE); + escaped_client_id = g_uri_escape_string (goa_oauth2_provider_get_client_id (provider), NULL, TRUE); + escaped_scope = g_uri_escape_string (goa_oauth2_provider_get_scope (provider), NULL, TRUE); + url = goa_oauth2_provider_build_authorization_uri (provider, + goa_oauth2_provider_get_authorization_uri (provider), + escaped_redirect_uri, + escaped_client_id, + escaped_scope); //g_debug ("url = %s", url); - if (goa_backend_oauth2_provider_get_use_external_browser (provider)) + if (goa_oauth2_provider_get_use_external_browser (provider)) { GtkWidget *label; GtkWidget *entry; @@ -726,11 +726,11 @@ get_tokens_and_identity (GoaBackendOAuth2Provider *provider, } /* TODO: run in worker thread */ - data.identity = goa_backend_oauth2_provider_get_identity_sync (provider, - data.access_token, - &data.name, - NULL, /* TODO: GCancellable */ - error); + data.identity = goa_oauth2_provider_get_identity_sync (provider, + data.access_token, + &data.name, + NULL, /* TODO: GCancellable */ + error); if (data.identity == NULL) { g_prefix_error (&data.error, _("Error getting identity: ")); @@ -824,13 +824,13 @@ abs_usec_to_duration (gint64 abs_usec) } static GoaObject * -goa_backend_oauth2_provider_add_account (GoaBackendProvider *_provider, +goa_oauth2_provider_add_account (GoaProvider *_provider, GoaClient *client, GtkDialog *dialog, GtkBox *vbox, GError **error) { - GoaBackendOAuth2Provider *provider = GOA_BACKEND_OAUTH2_PROVIDER (_provider); + GoaOAuth2Provider *provider = GOA_OAUTH2_PROVIDER (_provider); GoaObject *ret; gchar *authorization_code; gchar *access_token; @@ -843,7 +843,7 @@ goa_backend_oauth2_provider_add_account (GoaBackendProvider *_provider, AddData data; GVariantBuilder builder; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); g_return_val_if_fail (GOA_IS_CLIENT (client), NULL); g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL); g_return_val_if_fail (GTK_IS_BOX (vbox), NULL); @@ -889,7 +889,7 @@ goa_backend_oauth2_provider_add_account (GoaBackendProvider *_provider, continue; if (g_strcmp0 (goa_account_get_provider_type (account), - goa_backend_provider_get_provider_type (GOA_BACKEND_PROVIDER (provider))) != 0) + goa_provider_get_provider_type (GOA_PROVIDER (provider))) != 0) continue; identity_from_object = goa_oauth2_based_get_identity (oauth2_based); @@ -909,7 +909,7 @@ goa_backend_oauth2_provider_add_account (GoaBackendProvider *_provider, * waiting for this to complete */ goa_manager_call_add_account (goa_client_get_manager (client), - goa_backend_provider_get_provider_type (GOA_BACKEND_PROVIDER (provider)), + goa_provider_get_provider_type (GOA_PROVIDER (provider)), name, /* Name */ g_variant_new_parsed ("{'Identity': %s}", identity), @@ -929,11 +929,11 @@ goa_backend_oauth2_provider_add_account (GoaBackendProvider *_provider, if (refresh_token != NULL) g_variant_builder_add (&builder, "{sv}", "refresh_token", g_variant_new_string (refresh_token)); /* TODO: run in worker thread */ - if (!goa_backend_provider_store_credentials_sync (GOA_BACKEND_PROVIDER (provider), - identity, - g_variant_builder_end (&builder), - NULL, /* GCancellable */ - &data.error)) + if (!goa_provider_store_credentials_sync (GOA_PROVIDER (provider), + identity, + g_variant_builder_end (&builder), + NULL, /* GCancellable */ + &data.error)) goto out; ret = GOA_OBJECT (g_dbus_object_manager_get_object (goa_client_get_object_manager (client), @@ -966,13 +966,13 @@ goa_backend_oauth2_provider_add_account (GoaBackendProvider *_provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_oauth2_provider_refresh_account (GoaBackendProvider *_provider, - GoaClient *client, - GoaObject *object, - GtkWindow *parent, - GError **error) +goa_oauth2_provider_refresh_account (GoaProvider *_provider, + GoaClient *client, + GoaObject *object, + GtkWindow *parent, + GError **error) { - GoaBackendOAuth2Provider *provider = GOA_BACKEND_OAUTH2_PROVIDER (_provider); + GoaOAuth2Provider *provider = GOA_OAUTH2_PROVIDER (_provider); GtkWidget *dialog; gchar *authorization_code; gchar *access_token; @@ -983,7 +983,7 @@ goa_backend_oauth2_provider_refresh_account (GoaBackendProvider *_provider, GVariantBuilder builder; gboolean ret; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), FALSE); g_return_val_if_fail (GOA_IS_CLIENT (client), FALSE); g_return_val_if_fail (GOA_IS_OBJECT (object), FALSE); g_return_val_if_fail (parent == NULL || GTK_IS_WINDOW (parent), FALSE); @@ -1035,7 +1035,7 @@ goa_backend_oauth2_provider_refresh_account (GoaBackendProvider *_provider, g_variant_new_int64 (duration_to_abs_usec (access_token_expires_in))); if (refresh_token != NULL) g_variant_builder_add (&builder, "{sv}", "refresh_token", g_variant_new_string (refresh_token)); - if (!goa_backend_provider_store_credentials_sync (GOA_BACKEND_PROVIDER (provider), + if (!goa_provider_store_credentials_sync (GOA_PROVIDER (provider), identity, g_variant_builder_end (&builder), NULL, /* GCancellable */ @@ -1067,8 +1067,8 @@ free_mutex (GMutex *mutex) } /** - * goa_backend_oauth2_provider_get_access_token_sync: - * @provider: A #GoaBackendOAuth2Provider. + * goa_oauth2_provider_get_access_token_sync: + * @provider: A #GoaOAuth2Provider. * @object: A #GoaObject. * @force_refresh: If set to %TRUE, forces a refresh of the access token, if possible. * @out_access_token_expires_in: (out): Return location for how many seconds the returned token is valid for (0 if unknown) or %NULL. @@ -1091,19 +1091,19 @@ free_mutex (GMutex *mutex) * This operation may fail if e.g. unable to refresh the credentials * or if network connectivity is not available. Note that even if a * token is returned, the returned token isn't guaranteed to work - - * use goa_backend_provider_ensure_credentials_sync() if you need + * use goa_provider_ensure_credentials_sync() if you need * stronger guarantees. * * Returns: The access token or %NULL if error is set. The returned * string must be freed with g_free(). */ gchar * -goa_backend_oauth2_provider_get_access_token_sync (GoaBackendOAuth2Provider *provider, - GoaObject *object, - gboolean force_refresh, - gint *out_access_token_expires_in, - GCancellable *cancellable, - GError **error) +goa_oauth2_provider_get_access_token_sync (GoaOAuth2Provider *provider, + GoaObject *object, + gboolean force_refresh, + gint *out_access_token_expires_in, + GCancellable *cancellable, + GError **error) { const gchar *identity; GVariant *credentials; @@ -1120,7 +1120,7 @@ goa_backend_oauth2_provider_get_access_token_sync (GoaBackendOAuth2Provider *pr gchar *ret; GMutex *lock; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH2_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH2_PROVIDER (provider), NULL); g_return_val_if_fail (GOA_IS_OBJECT (object), NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); @@ -1136,12 +1136,12 @@ goa_backend_oauth2_provider_get_access_token_sync (GoaBackendOAuth2Provider *pr /* provider_lock is too coarse, use a per-object lock instead */ G_LOCK (provider_lock); - lock = g_object_get_data (G_OBJECT (object), "-goa-backend-oauth2-provider-get-access-token-lock"); + lock = g_object_get_data (G_OBJECT (object), "-goa-oauth2-provider-get-access-token-lock"); if (lock == NULL) { lock = g_mutex_new (); g_object_set_data_full (G_OBJECT (object), - "-goa-backend-oauth2-provider-get-access-token-lock", + "-goa-oauth2-provider-get-access-token-lock", lock, (GDestroyNotify) free_mutex); } @@ -1151,10 +1151,10 @@ goa_backend_oauth2_provider_get_access_token_sync (GoaBackendOAuth2Provider *pr /* First, get the credentials from the keyring */ identity = goa_oauth2_based_get_identity (goa_object_peek_oauth2_based (object)); - credentials = goa_backend_provider_lookup_credentials_sync (GOA_BACKEND_PROVIDER (provider), - identity, - cancellable, - error); + credentials = goa_provider_lookup_credentials_sync (GOA_PROVIDER (provider), + identity, + cancellable, + error); if (credentials == NULL) { if (error != NULL) @@ -1253,11 +1253,11 @@ goa_backend_oauth2_provider_get_access_token_sync (GoaBackendOAuth2Provider *pr g_variant_builder_add (&builder, "{sv}", "refresh_token", g_variant_new_string (refresh_token)); identity = goa_oauth2_based_get_identity (goa_object_peek_oauth2_based (object)); - if (!goa_backend_provider_store_credentials_sync (GOA_BACKEND_PROVIDER (provider), - identity, - g_variant_builder_end (&builder), - cancellable, - error)) + if (!goa_provider_store_credentials_sync (GOA_PROVIDER (provider), + identity, + g_variant_builder_end (&builder), + cancellable, + error)) { if (error != NULL) { @@ -1298,11 +1298,11 @@ static gboolean on_handle_get_access_token (GoaOAuth2Based *object, gpointer user_data); static gboolean -goa_backend_oauth2_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error) +goa_oauth2_provider_build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error) { GoaOAuth2Based *oauth2_based; gchar *identity; @@ -1343,13 +1343,13 @@ goa_backend_oauth2_provider_build_object (GoaBackendProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_oauth2_provider_ensure_credentials_sync (GoaBackendProvider *_provider, - GoaObject *object, - gint *out_expires_in, - GCancellable *cancellable, - GError **error) +goa_oauth2_provider_ensure_credentials_sync (GoaProvider *_provider, + GoaObject *object, + gint *out_expires_in, + GCancellable *cancellable, + GError **error) { - GoaBackendOAuth2Provider *provider = GOA_BACKEND_OAUTH2_PROVIDER (_provider); + GoaOAuth2Provider *provider = GOA_OAUTH2_PROVIDER (_provider); gboolean ret; gchar *access_token; gint access_token_expires_in; @@ -1362,7 +1362,7 @@ goa_backend_oauth2_provider_ensure_credentials_sync (GoaBackendProvider *_provi force_refresh = FALSE; again: - access_token = goa_backend_oauth2_provider_get_access_token_sync (provider, + access_token = goa_oauth2_provider_get_access_token_sync (provider, object, force_refresh, &access_token_expires_in, @@ -1371,7 +1371,7 @@ goa_backend_oauth2_provider_ensure_credentials_sync (GoaBackendProvider *_provi if (access_token == NULL) goto out; - identity = goa_backend_oauth2_provider_get_identity_sync (provider, + identity = goa_oauth2_provider_get_identity_sync (provider, access_token, NULL, /* out_name */ cancellable, @@ -1406,23 +1406,23 @@ goa_backend_oauth2_provider_ensure_credentials_sync (GoaBackendProvider *_provi /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_oauth2_provider_init (GoaBackendOAuth2Provider *client) +goa_oauth2_provider_init (GoaOAuth2Provider *client) { } static void -goa_backend_oauth2_provider_class_init (GoaBackendOAuth2ProviderClass *klass) +goa_oauth2_provider_class_init (GoaOAuth2ProviderClass *klass) { - GoaBackendProviderClass *provider_class; + GoaProviderClass *provider_class; - provider_class = GOA_BACKEND_PROVIDER_CLASS (klass); - provider_class->add_account = goa_backend_oauth2_provider_add_account; - provider_class->refresh_account = goa_backend_oauth2_provider_refresh_account; - provider_class->build_object = goa_backend_oauth2_provider_build_object; - provider_class->ensure_credentials_sync = goa_backend_oauth2_provider_ensure_credentials_sync; + provider_class = GOA_PROVIDER_CLASS (klass); + provider_class->add_account = goa_oauth2_provider_add_account; + provider_class->refresh_account = goa_oauth2_provider_refresh_account; + provider_class->build_object = goa_oauth2_provider_build_object; + provider_class->ensure_credentials_sync = goa_oauth2_provider_ensure_credentials_sync; - klass->build_authorization_uri = goa_backend_oauth2_provider_build_authorization_uri_default; - klass->get_use_external_browser = goa_backend_oauth2_provider_get_use_external_browser_default; + klass->build_authorization_uri = goa_oauth2_provider_build_authorization_uri_default; + klass->get_use_external_browser = goa_oauth2_provider_get_use_external_browser_default; } /* ---------------------------------------------------------------------------------------------------- */ @@ -1435,7 +1435,7 @@ on_handle_get_access_token (GoaOAuth2Based *interface, { GoaObject *object; GoaAccount *account; - GoaBackendProvider *provider; + GoaProvider *provider; GError *error; gchar *access_token; gint access_token_expires_in; @@ -1446,15 +1446,15 @@ on_handle_get_access_token (GoaOAuth2Based *interface, object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface))); account = goa_object_peek_account (object); - provider = goa_backend_provider_get_for_provider_type (goa_account_get_provider_type (account)); + provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account)); error = NULL; - access_token = goa_backend_oauth2_provider_get_access_token_sync (GOA_BACKEND_OAUTH2_PROVIDER (provider), - object, - FALSE, /* force_refresh */ - &access_token_expires_in, - NULL, /* GCancellable* */ - &error); + access_token = goa_oauth2_provider_get_access_token_sync (GOA_OAUTH2_PROVIDER (provider), + object, + FALSE, /* force_refresh */ + &access_token_expires_in, + NULL, /* GCancellable* */ + &error); if (access_token == NULL) { g_dbus_method_invocation_return_gerror (invocation, error); diff --git a/src/goabackend/goaoauth2provider.h b/src/goabackend/goaoauth2provider.h new file mode 100644 index 0000000..7c489f2 --- /dev/null +++ b/src/goabackend/goaoauth2provider.h @@ -0,0 +1,130 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ +/* + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that 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 library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: David Zeuthen <davidz@redhat.com> + */ + +#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) +#error "Only <goabackend/goabackend.h> can be included directly." +#endif + +#ifndef __GOA_OAUTH2_PROVIDER_H__ +#define __GOA_OAUTH2_PROVIDER_H__ + +#include <goabackend/goabackendtypes.h> + +G_BEGIN_DECLS + +#define GOA_TYPE_OAUTH2_PROVIDER (goa_oauth2_provider_get_type ()) +#define GOA_OAUTH2_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_OAUTH2_PROVIDER, GoaOAuth2Provider)) +#define GOA_OAUTH2_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_OAUTH2_PROVIDER, GoaOAuth2ProviderClass)) +#define GOA_OAUTH2_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_OAUTH2_PROVIDER, GoaOAuth2ProviderClass)) +#define GOA_IS_OAUTH2_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_OAUTH2_PROVIDER)) + +#define GOA_IS_OAUTH2_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_OAUTH2_PROVIDER)) + +typedef struct _GoaOAuth2ProviderClass GoaOAuth2ProviderClass; +typedef struct _GoaOAuth2ProviderPrivate GoaOAuth2ProviderPrivate; + +/** + * GoaOAuth2Provider: + * + * The #GoaOAuth2Provider structure contains only private data and should + * only be accessed using the provided API. + */ +struct _GoaOAuth2Provider +{ + /*< private >*/ + GoaProvider parent_instance; + GoaOAuth2ProviderPrivate *priv; +}; + +/** + * GoaOAuth2ProviderClass: + * @parent_class: The parent class. + * @get_authorization_uri: Virtual function for goa_oauth2_provider_get_authorization_uri(). + * @get_token_uri: Virtual function for goa_oauth2_provider_get_token_uri(). + * @get_redirect_uri: Virtual function for goa_oauth2_provider_get_redirect_uri(). + * @get_scope: Virtual function for goa_oauth2_provider_get_scope(). + * @get_client_id: Virtual function for goa_oauth2_provider_get_client_id(). + * @get_client_secret: Virtual function for goa_oauth2_provider_get_client_secret(). + * @get_identity_sync: Virtual function for goa_oauth2_provider_get_identity_sync(). + * @build_authorization_uri: Virtual function for goa_oauth2_provider_build_authorization_uri(). + * @get_use_external_browser: Virtual function for goa_oauth2_provider_get_use_external_browser(). + * + * Class structure for #GoaOAuth2Provider. + */ +struct _GoaOAuth2ProviderClass +{ + GoaProviderClass parent_class; + + /* pure virtual */ + const gchar *(*get_authorization_uri) (GoaOAuth2Provider *provider); + const gchar *(*get_token_uri) (GoaOAuth2Provider *provider); + const gchar *(*get_redirect_uri) (GoaOAuth2Provider *provider); + const gchar *(*get_scope) (GoaOAuth2Provider *provider); + const gchar *(*get_client_id) (GoaOAuth2Provider *provider); + const gchar *(*get_client_secret) (GoaOAuth2Provider *provider); + gchar *(*get_identity_sync) (GoaOAuth2Provider *provider, + const gchar *access_token, + gchar **out_name, + GCancellable *cancellable, + GError **error); + + /* virtual but with default implementation */ + gchar *(*build_authorization_uri) (GoaOAuth2Provider *provider, + const gchar *authorization_uri, + const gchar *escaped_redirect_uri, + const gchar *escaped_client_id, + const gchar *escaped_scope); + gboolean (*get_use_external_browser) (GoaOAuth2Provider *provider); + + /*< private >*/ + /* Padding for future expansion */ + gpointer goa_reserved[32]; +}; + +GType goa_oauth2_provider_get_type (void) G_GNUC_CONST; +const gchar *goa_oauth2_provider_get_authorization_uri (GoaOAuth2Provider *provider); +const gchar *goa_oauth2_provider_get_token_uri (GoaOAuth2Provider *provider); +const gchar *goa_oauth2_provider_get_redirect_uri (GoaOAuth2Provider *provider); +const gchar *goa_oauth2_provider_get_scope (GoaOAuth2Provider *provider); +const gchar *goa_oauth2_provider_get_client_id (GoaOAuth2Provider *provider); +const gchar *goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider); +gchar *goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider, + const gchar *access_token, + gchar **out_name, + GCancellable *cancellable, + GError **error); +gchar *goa_oauth2_provider_get_access_token_sync (GoaOAuth2Provider *provider, + GoaObject *object, + gboolean force_refresh, + gint *out_access_token_expires_in, + GCancellable *cancellable, + GError **error); +gchar *goa_oauth2_provider_build_authorization_uri (GoaOAuth2Provider *provider, + const gchar *authorization_uri, + const gchar *escaped_redirect_uri, + const gchar *escaped_client_id, + const gchar *escaped_scope); +gboolean goa_oauth2_provider_get_use_external_browser (GoaOAuth2Provider *provider); + +G_END_DECLS + +#endif /* __GOA_OAUTH2_PROVIDER_H__ */ diff --git a/src/goa/goabackendoauthprovider.c b/src/goabackend/goaoauthprovider.c index ae1bfb0..543bd15 100644 --- a/src/goa/goabackendoauthprovider.c +++ b/src/goabackend/goaoauthprovider.c @@ -28,15 +28,15 @@ #include <webkit/webkit.h> #include <json-glib/json-glib.h> -#include "goabackendprovider.h" -#include "goabackendoauthprovider.h" +#include "goaprovider.h" +#include "goaoauthprovider.h" /** - * SECTION:goabackendoauthprovider - * @title: GoaBackendOAuthProvider + * SECTION:goaoauthprovider + * @title: GoaOAuthProvider * @short_description: Abstract base class for OAuth 1.0a providers * - * #GoaBackendOAuthProvider is an abstract base class for OAuth 1.0a + * #GoaOAuthProvider is an abstract base class for OAuth 1.0a * compliant implementations as defined by <ulink * url="http://tools.ietf.org/html/rfc5849">RFC * 5849</ulink>. Additionally, the code works with providers @@ -45,29 +45,29 @@ * Session 1.0 Draft 1</ulink> for refreshing access tokens. * * Subclasses must implement - * #GoaBackendOAuthProviderClass.get_consumer_key, - * #GoaBackendOAuthProviderClass.get_consumer_secret, - * #GoaBackendOAuthProviderClass.get_request_uri, - * #GoaBackendOAuthProviderClass.get_authorization_uri, - * #GoaBackendOAuthProviderClass.get_token_uri, - * #GoaBackendOAuthProviderClass.get_callback_uri and - * #GoaBackendOAuthProviderClass.get_identity_sync methods. + * #GoaOAuthProviderClass.get_consumer_key, + * #GoaOAuthProviderClass.get_consumer_secret, + * #GoaOAuthProviderClass.get_request_uri, + * #GoaOAuthProviderClass.get_authorization_uri, + * #GoaOAuthProviderClass.get_token_uri, + * #GoaOAuthProviderClass.get_callback_uri and + * #GoaOAuthProviderClass.get_identity_sync methods. * * Additionally, the - * #GoaBackendProviderClass.get_provider_type, - * #GoaBackendProviderClass.get_name, - * #GoaBackendProviderClass.build_object (this should chain up to its + * #GoaProviderClass.get_provider_type, + * #GoaProviderClass.get_name, + * #GoaProviderClass.build_object (this should chain up to its * parent class) methods must be implemented. * - * Note that the #GoaBackendProviderClass.add_account, - * #GoaBackendProviderClass.refresh_account and - * #GoaBackendProviderClass.ensure_credentials_sync methods do not + * Note that the #GoaProviderClass.add_account, + * #GoaProviderClass.refresh_account and + * #GoaProviderClass.ensure_credentials_sync methods do not * need to be implemented - this type implements these methods. */ G_LOCK_DEFINE_STATIC (provider_lock); -G_DEFINE_ABSTRACT_TYPE (GoaBackendOAuthProvider, goa_backend_oauth_provider, GOA_TYPE_BACKEND_PROVIDER); +G_DEFINE_ABSTRACT_TYPE (GoaOAuthProvider, goa_oauth_provider, GOA_TYPE_PROVIDER); static gboolean is_authorization_error (GError *error) @@ -129,21 +129,21 @@ _print_response (RestProxyCall *call) /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_oauth_provider_get_use_external_browser_default (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_use_external_browser_default (GoaOAuthProvider *provider) { return FALSE; } /** - * goa_backend_oauth_provider_get_use_external_browser: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_use_external_browser: + * @provider: A #GoaOAuthProvider. * * Returns whether an external browser (the users default browser) * should be used for user interaction. * * If an external browser is used, then the dialogs presented in - * goa_backend_provider_add_account() and - * goa_backend_provider_refresh_account() will show a simple "Paste + * goa_provider_add_account() and + * goa_provider_refresh_account() will show a simple "Paste * authorization code here" instructions along with an entry and * button. * @@ -154,18 +154,18 @@ goa_backend_oauth_provider_get_use_external_browser_default (GoaBackendOAuthProv * browser, %FALSE to use an embedded browser widget. */ gboolean -goa_backend_oauth_provider_get_use_external_browser (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_use_external_browser (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), FALSE); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_use_external_browser (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), FALSE); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_use_external_browser (provider); } /* ---------------------------------------------------------------------------------------------------- */ static gchar * -goa_backend_oauth_provider_build_authorization_uri_default (GoaBackendOAuthProvider *provider, - const gchar *authorization_uri, - const gchar *escaped_oauth_token) +goa_oauth_provider_build_authorization_uri_default (GoaOAuthProvider *provider, + const gchar *authorization_uri, + const gchar *escaped_oauth_token) { return g_strdup_printf ("%s" "?oauth_token=%s", @@ -174,8 +174,8 @@ goa_backend_oauth_provider_build_authorization_uri_default (GoaBackendOAuthProvi } /** - * goa_backend_oauth_provider_build_authorization_uri: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_build_authorization_uri: + * @provider: A #GoaOAuthProvider. * @authorization_uri: An authorization URI. * @escaped_oauth_token: An escaped oauth token. * @@ -188,28 +188,28 @@ goa_backend_oauth_provider_build_authorization_uri_default (GoaBackendOAuthProvi * parameters. * * The @authorization_uri parameter originate from the result of the - * the goa_backend_oauth_provider_get_authorization_uri() method. The + * the goa_oauth_provider_get_authorization_uri() method. The * @escaped_oauth_token parameter is the temporary credentials identifier * escaped using g_uri_escape_string(). * * Returns: (transfer full): An authorization URI that must be freed with g_free(). */ gchar * -goa_backend_oauth_provider_build_authorization_uri (GoaBackendOAuthProvider *provider, - const gchar *authorization_uri, - const gchar *escaped_oauth_token) +goa_oauth_provider_build_authorization_uri (GoaOAuthProvider *provider, + const gchar *authorization_uri, + const gchar *escaped_oauth_token) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); g_return_val_if_fail (authorization_uri != NULL, NULL); g_return_val_if_fail (escaped_oauth_token != NULL, NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->build_authorization_uri (provider, + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->build_authorization_uri (provider, authorization_uri, escaped_oauth_token); } /** - * goa_backend_oauth_provider_get_consumer_key: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_consumer_key: + * @provider: A #GoaOAuthProvider. * * Gets the consumer key identifying the client. * @@ -219,15 +219,15 @@ goa_backend_oauth_provider_build_authorization_uri (GoaBackendOAuthProvider *pr * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth_provider_get_consumer_key (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_consumer_key (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_consumer_key (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_consumer_key (provider); } /** - * goa_backend_oauth_provider_get_consumer_secret: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_consumer_secret: + * @provider: A #GoaOAuthProvider. * * Gets the consumer secret identifying the client. * @@ -237,15 +237,15 @@ goa_backend_oauth_provider_get_consumer_key (GoaBackendOAuthProvider *provider) * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth_provider_get_consumer_secret (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_consumer_secret (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_consumer_secret (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_consumer_secret (provider); } /** - * goa_backend_oauth_provider_get_request_uri: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_request_uri: + * @provider: A #GoaOAuthProvider. * * Gets the request uri. * @@ -257,15 +257,15 @@ goa_backend_oauth_provider_get_consumer_secret (GoaBackendOAuthProvider *provide * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth_provider_get_request_uri (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_request_uri (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_request_uri (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_request_uri (provider); } /** - * goa_backend_oauth_provider_get_request_uri_params: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_request_uri_params: + * @provider: A #GoaOAuthProvider. * * Gets additional parameters for the request URI. * @@ -279,22 +279,22 @@ goa_backend_oauth_provider_get_request_uri (GoaBackendOAuthProvider *provider) * the URI. The caller will free the returned value with g_strfreev(). */ gchar ** -goa_backend_oauth_provider_get_request_uri_params (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_request_uri_params (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_request_uri_params (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_request_uri_params (provider); } static gchar ** -goa_backend_oauth_provider_get_request_uri_params_default (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_request_uri_params_default (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); return NULL; } /** - * goa_backend_oauth_provider_get_authorization_uri: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_authorization_uri: + * @provider: A #GoaOAuthProvider. * * Gets the authorization uri. * @@ -306,15 +306,15 @@ goa_backend_oauth_provider_get_request_uri_params_default (GoaBackendOAuthProvid * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth_provider_get_authorization_uri (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_authorization_uri (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_authorization_uri (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_authorization_uri (provider); } /** - * goa_backend_oauth_provider_get_token_uri: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_token_uri: + * @provider: A #GoaOAuthProvider. * * Gets the token uri. * @@ -326,15 +326,15 @@ goa_backend_oauth_provider_get_authorization_uri (GoaBackendOAuthProvider *provi * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth_provider_get_token_uri (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_token_uri (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_token_uri (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_token_uri (provider); } /** - * goa_backend_oauth_provider_get_callback_uri: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_callback_uri: + * @provider: A #GoaOAuthProvider. * * Gets the callback uri. * @@ -346,15 +346,15 @@ goa_backend_oauth_provider_get_token_uri (GoaBackendOAuthProvider *provider) * Returns: (transfer none): A string owned by @provider - do not free. */ const gchar * -goa_backend_oauth_provider_get_callback_uri (GoaBackendOAuthProvider *provider) +goa_oauth_provider_get_callback_uri (GoaOAuthProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_callback_uri (provider); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_callback_uri (provider); } /** - * goa_backend_oauth_provider_get_identity_sync: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_identity_sync: + * @provider: A #GoaOAuthProvider. * @access_token: A valid OAuth 1.0 access token. * @access_token_secret: The valid secret for @access_token. * @out_name: (out): Return location for name or %NULL. @@ -366,8 +366,8 @@ goa_backend_oauth_provider_get_callback_uri (GoaBackendOAuthProvider *provider) * * The identity is needed because all authentication happens out of * band. The only requirement is that the returned identity is unique - * - for example, for #GoaBackendGoogleProvider the returned identity - * is the email address, for #GoaBackendFacebookProvider it's the user + * - for example, for #GoaGoogleProvider the returned identity + * is the email address, for #GoaFacebookProvider it's the user * name. In addition to the identity, an implementation also returns a * <emphasis>name</emphasis> in @out_name that is more suitable for * presentation (the identity could be a GUID for example) and doesn't @@ -382,34 +382,34 @@ goa_backend_oauth_provider_get_callback_uri (GoaBackendOAuthProvider *provider) * must be freed with g_free(). */ gchar * -goa_backend_oauth_provider_get_identity_sync (GoaBackendOAuthProvider *provider, - const gchar *access_token, - const gchar *access_token_secret, - gchar **out_name, - GCancellable *cancellable, - GError **error) +goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider, + const gchar *access_token, + const gchar *access_token_secret, + gchar **out_name, + GCancellable *cancellable, + GError **error) { - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); g_return_val_if_fail (access_token != NULL, NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - return GOA_BACKEND_OAUTH_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, access_token_secret, out_name, cancellable, error); + return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, access_token_secret, out_name, cancellable, error); } /* ---------------------------------------------------------------------------------------------------- */ static gchar * -get_tokens_sync (GoaBackendOAuthProvider *provider, - const gchar *token, - const gchar *token_secret, - const gchar *session_handle, /* may be NULL */ - const gchar *verifier, /* may be NULL */ - gchar **out_access_token_secret, - gint *out_access_token_expires_in, - gchar **out_session_handle, - gint *out_session_handle_expires_in, - GCancellable *cancellable, - GError **error) +get_tokens_sync (GoaOAuthProvider *provider, + const gchar *token, + const gchar *token_secret, + const gchar *session_handle, /* may be NULL */ + const gchar *verifier, /* may be NULL */ + gchar **out_access_token_secret, + gint *out_access_token_expires_in, + gchar **out_session_handle, + gint *out_session_handle_expires_in, + GCancellable *cancellable, + GError **error) { RestProxy *proxy; RestProxyCall *call; @@ -430,9 +430,9 @@ get_tokens_sync (GoaBackendOAuthProvider *provider, ret_session_handle = NULL; ret_session_handle_expires_in = 0; - proxy = oauth_proxy_new (goa_backend_oauth_provider_get_consumer_key (provider), - goa_backend_oauth_provider_get_consumer_secret (provider), - goa_backend_oauth_provider_get_token_uri (provider), + proxy = oauth_proxy_new (goa_oauth_provider_get_consumer_key (provider), + goa_oauth_provider_get_consumer_secret (provider), + goa_oauth_provider_get_token_uri (provider), FALSE); oauth_proxy_set_token (OAUTH_PROXY (proxy), token); oauth_proxy_set_token_secret (OAUTH_PROXY (proxy), token_secret); @@ -510,7 +510,7 @@ get_tokens_sync (GoaBackendOAuthProvider *provider, typedef struct { - GoaBackendOAuthProvider *provider; + GoaOAuthProvider *provider; GtkDialog *dialog; GError *error; GMainLoop *loop; @@ -544,7 +544,7 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web /* TODO: use oauth_proxy_extract_access_token() */ requested_uri = webkit_network_request_get_uri (request); - redirect_uri = goa_backend_oauth_provider_get_callback_uri (data->provider); + redirect_uri = goa_oauth_provider_get_callback_uri (data->provider); if (g_str_has_prefix (requested_uri, redirect_uri)) { SoupMessage *message; @@ -585,17 +585,17 @@ on_entry_changed (GtkEditable *editable, } static gboolean -get_tokens_and_identity (GoaBackendOAuthProvider *provider, - GtkDialog *dialog, - GtkBox *vbox, - gchar **out_access_token, - gchar **out_access_token_secret, - gint *out_access_token_expires_in, - gchar **out_session_handle, - gint *out_session_handle_expires_in, - gchar **out_identity, - gchar **out_name, - GError **error) +get_tokens_and_identity (GoaOAuthProvider *provider, + GtkDialog *dialog, + GtkBox *vbox, + gchar **out_access_token, + gchar **out_access_token_secret, + gint *out_access_token_expires_in, + gchar **out_session_handle, + gint *out_session_handle_expires_in, + gchar **out_identity, + gchar **out_name, + GError **error) { gboolean ret; gchar *url; @@ -608,7 +608,7 @@ get_tokens_and_identity (GoaBackendOAuthProvider *provider, gchar **request_params; guint n; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), FALSE); g_return_val_if_fail (GTK_IS_DIALOG (dialog), FALSE); g_return_val_if_fail (GTK_IS_BOX (vbox), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -620,7 +620,7 @@ get_tokens_and_identity (GoaBackendOAuthProvider *provider, url = NULL; request_params = NULL; - use_external_browser = goa_backend_oauth_provider_get_use_external_browser (provider); + use_external_browser = goa_oauth_provider_get_use_external_browser (provider); /* TODO: check with NM whether we're online, if not - return error */ @@ -629,17 +629,17 @@ get_tokens_and_identity (GoaBackendOAuthProvider *provider, data.loop = g_main_loop_new (NULL, FALSE); /* TODO: run in worker thread */ - proxy = oauth_proxy_new (goa_backend_oauth_provider_get_consumer_key (provider), - goa_backend_oauth_provider_get_consumer_secret (provider), - goa_backend_oauth_provider_get_request_uri (provider), FALSE); + proxy = oauth_proxy_new (goa_oauth_provider_get_consumer_key (provider), + goa_oauth_provider_get_consumer_secret (provider), + goa_oauth_provider_get_request_uri (provider), FALSE); call = rest_proxy_new_call (proxy); rest_proxy_call_set_method (call, "POST"); if (use_external_browser) rest_proxy_call_add_param (call, "oauth_callback", "oob"); else - rest_proxy_call_add_param (call, "oauth_callback", goa_backend_oauth_provider_get_callback_uri (provider)); + rest_proxy_call_add_param (call, "oauth_callback", goa_oauth_provider_get_callback_uri (provider)); - request_params = goa_backend_oauth_provider_get_request_uri_params (provider); + request_params = goa_oauth_provider_get_request_uri_params (provider); if (request_params != NULL) { g_assert (g_strv_length (request_params) % 2 == 0); @@ -675,8 +675,8 @@ get_tokens_and_identity (GoaBackendOAuthProvider *provider, } escaped_request_token = g_uri_escape_string (data.request_token, NULL, TRUE); - url = goa_backend_oauth_provider_build_authorization_uri (provider, - goa_backend_oauth_provider_get_authorization_uri (provider), + url = goa_oauth_provider_build_authorization_uri (provider, + goa_oauth_provider_get_authorization_uri (provider), escaped_request_token); if (use_external_browser) { @@ -796,7 +796,7 @@ get_tokens_and_identity (GoaBackendOAuthProvider *provider, } /* TODO: run in worker thread */ - data.identity = goa_backend_oauth_provider_get_identity_sync (provider, + data.identity = goa_oauth_provider_get_identity_sync (provider, data.access_token, data.access_token_secret, &data.name, @@ -905,13 +905,13 @@ abs_usec_to_duration (gint64 abs_usec) } static GoaObject * -goa_backend_oauth_provider_add_account (GoaBackendProvider *_provider, - GoaClient *client, - GtkDialog *dialog, - GtkBox *vbox, - GError **error) +goa_oauth_provider_add_account (GoaProvider *_provider, + GoaClient *client, + GtkDialog *dialog, + GtkBox *vbox, + GError **error) { - GoaBackendOAuthProvider *provider = GOA_BACKEND_OAUTH_PROVIDER (_provider); + GoaOAuthProvider *provider = GOA_OAUTH_PROVIDER (_provider); GoaObject *ret; gchar *access_token; gchar *access_token_secret; @@ -925,7 +925,7 @@ goa_backend_oauth_provider_add_account (GoaBackendProvider *_provider, AddData data; GVariantBuilder builder; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); g_return_val_if_fail (GOA_IS_CLIENT (client), NULL); g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL); g_return_val_if_fail (GTK_IS_BOX (vbox), NULL); @@ -972,7 +972,7 @@ goa_backend_oauth_provider_add_account (GoaBackendProvider *_provider, continue; if (g_strcmp0 (goa_account_get_provider_type (account), - goa_backend_provider_get_provider_type (GOA_BACKEND_PROVIDER (provider))) != 0) + goa_provider_get_provider_type (GOA_PROVIDER (provider))) != 0) continue; identity_from_object = goa_oauth_based_get_identity (oauth_based); @@ -992,7 +992,7 @@ goa_backend_oauth_provider_add_account (GoaBackendProvider *_provider, * waiting for this to complete */ goa_manager_call_add_account (goa_client_get_manager (client), - goa_backend_provider_get_provider_type (GOA_BACKEND_PROVIDER (provider)), + goa_provider_get_provider_type (GOA_PROVIDER (provider)), name, /* Name */ g_variant_new_parsed ("{'Identity': %s}", identity), @@ -1015,7 +1015,7 @@ goa_backend_oauth_provider_add_account (GoaBackendProvider *_provider, g_variant_builder_add (&builder, "{sv}", "session_handle_expires_at", g_variant_new_int64 (duration_to_abs_usec (session_handle_expires_in))); /* TODO: run in worker thread */ - if (!goa_backend_provider_store_credentials_sync (GOA_BACKEND_PROVIDER (provider), + if (!goa_provider_store_credentials_sync (GOA_PROVIDER (provider), identity, g_variant_builder_end (&builder), NULL, /* GCancellable */ @@ -1052,13 +1052,13 @@ goa_backend_oauth_provider_add_account (GoaBackendProvider *_provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_oauth_provider_refresh_account (GoaBackendProvider *_provider, - GoaClient *client, - GoaObject *object, - GtkWindow *parent, - GError **error) +goa_oauth_provider_refresh_account (GoaProvider *_provider, + GoaClient *client, + GoaObject *object, + GtkWindow *parent, + GError **error) { - GoaBackendOAuthProvider *provider = GOA_BACKEND_OAUTH_PROVIDER (_provider); + GoaOAuthProvider *provider = GOA_OAUTH_PROVIDER (_provider); GtkWidget *dialog; gchar *access_token; gchar *access_token_secret; @@ -1070,7 +1070,7 @@ goa_backend_oauth_provider_refresh_account (GoaBackendProvider *_provider, GVariantBuilder builder; gboolean ret; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), FALSE); g_return_val_if_fail (GOA_IS_CLIENT (client), FALSE); g_return_val_if_fail (GOA_IS_OBJECT (object), FALSE); g_return_val_if_fail (parent == NULL || GTK_IS_WINDOW (parent), FALSE); @@ -1127,7 +1127,7 @@ goa_backend_oauth_provider_refresh_account (GoaBackendProvider *_provider, g_variant_builder_add (&builder, "{sv}", "session_handle_expires_at", g_variant_new_int64 (duration_to_abs_usec (session_handle_expires_in))); /* TODO: run in worker thread */ - if (!goa_backend_provider_store_credentials_sync (GOA_BACKEND_PROVIDER (provider), + if (!goa_provider_store_credentials_sync (GOA_PROVIDER (provider), identity, g_variant_builder_end (&builder), NULL, /* GCancellable */ @@ -1159,8 +1159,8 @@ free_mutex (GMutex *mutex) } /** - * goa_backend_oauth_provider_get_access_token_sync: - * @provider: A #GoaBackendOAuthProvider. + * goa_oauth_provider_get_access_token_sync: + * @provider: A #GoaOAuthProvider. * @object: A #GoaObject. * @force_refresh: If set to %TRUE, forces a refresh of the access token, if possible. * @out_access_token_secret: (out): The secret for the return access token. @@ -1184,20 +1184,20 @@ free_mutex (GMutex *mutex) * This operation may fail if e.g. unable to refresh the credentials * or if network connectivity is not available. Note that even if a * token is returned, the returned token isn't guaranteed to work - - * use goa_backend_provider_ensure_credentials_sync() if you need + * use goa_provider_ensure_credentials_sync() if you need * stronger guarantees. * * Returns: The access token or %NULL if error is set. The returned * string must be freed with g_free(). */ gchar * -goa_backend_oauth_provider_get_access_token_sync (GoaBackendOAuthProvider *provider, - GoaObject *object, - gboolean force_refresh, - gchar **out_access_token_secret, - gint *out_access_token_expires_in, - GCancellable *cancellable, - GError **error) +goa_oauth_provider_get_access_token_sync (GoaOAuthProvider *provider, + GoaObject *object, + gboolean force_refresh, + gchar **out_access_token_secret, + gint *out_access_token_expires_in, + GCancellable *cancellable, + GError **error) { const gchar *identity; GVariant *credentials; @@ -1217,7 +1217,7 @@ goa_backend_oauth_provider_get_access_token_sync (GoaBackendOAuthProvider *pro gchar *ret; GMutex *lock; - g_return_val_if_fail (GOA_IS_BACKEND_OAUTH_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_OAUTH_PROVIDER (provider), NULL); g_return_val_if_fail (GOA_IS_OBJECT (object), NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); @@ -1236,12 +1236,12 @@ goa_backend_oauth_provider_get_access_token_sync (GoaBackendOAuthProvider *pro /* provider_lock is too coarse, use a per-object lock instead */ G_LOCK (provider_lock); - lock = g_object_get_data (G_OBJECT (object), "-goa-backend-oauth-provider-get-access-token-lock"); + lock = g_object_get_data (G_OBJECT (object), "-goa-oauth-provider-get-access-token-lock"); if (lock == NULL) { lock = g_mutex_new (); g_object_set_data_full (G_OBJECT (object), - "-goa-backend-oauth-provider-get-access-token-lock", + "-goa-oauth-provider-get-access-token-lock", lock, (GDestroyNotify) free_mutex); } @@ -1251,7 +1251,7 @@ goa_backend_oauth_provider_get_access_token_sync (GoaBackendOAuthProvider *pro /* First, get the credentials from the keyring */ identity = goa_oauth_based_get_identity (goa_object_peek_oauth_based (object)); - credentials = goa_backend_provider_lookup_credentials_sync (GOA_BACKEND_PROVIDER (provider), + credentials = goa_provider_lookup_credentials_sync (GOA_PROVIDER (provider), identity, cancellable, error); @@ -1355,7 +1355,7 @@ goa_backend_oauth_provider_get_access_token_sync (GoaBackendOAuthProvider *pro identity = goa_oauth_based_get_identity (goa_object_peek_oauth_based (object)); /* TODO: run in worker thread */ - if (!goa_backend_provider_store_credentials_sync (GOA_BACKEND_PROVIDER (provider), + if (!goa_provider_store_credentials_sync (GOA_PROVIDER (provider), identity, g_variant_builder_end (&builder), cancellable, @@ -1401,16 +1401,16 @@ goa_backend_oauth_provider_get_access_token_sync (GoaBackendOAuthProvider *pro /* ---------------------------------------------------------------------------------------------------- */ -static gboolean on_handle_get_access_token (GoaOAuthBased *object, +static gboolean on_handle_get_access_token (GoaOAuthBased *object, GDBusMethodInvocation *invocation, gpointer user_data); static gboolean -goa_backend_oauth_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error) +goa_oauth_provider_build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error) { GoaOAuthBased *oauth_based; gchar *identity; @@ -1451,13 +1451,13 @@ goa_backend_oauth_provider_build_object (GoaBackendProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_oauth_provider_ensure_credentials_sync (GoaBackendProvider *_provider, - GoaObject *object, - gint *out_expires_in, - GCancellable *cancellable, - GError **error) +goa_oauth_provider_ensure_credentials_sync (GoaProvider *_provider, + GoaObject *object, + gint *out_expires_in, + GCancellable *cancellable, + GError **error) { - GoaBackendOAuthProvider *provider = GOA_BACKEND_OAUTH_PROVIDER (_provider); + GoaOAuthProvider *provider = GOA_OAUTH_PROVIDER (_provider); gboolean ret; gchar *access_token; gchar *access_token_secret; @@ -1472,7 +1472,7 @@ goa_backend_oauth_provider_ensure_credentials_sync (GoaBackendProvider *_provi force_refresh = FALSE; again: - access_token = goa_backend_oauth_provider_get_access_token_sync (provider, + access_token = goa_oauth_provider_get_access_token_sync (provider, object, force_refresh, &access_token_secret, @@ -1482,7 +1482,7 @@ goa_backend_oauth_provider_ensure_credentials_sync (GoaBackendProvider *_provi if (access_token == NULL) goto out; - identity = goa_backend_oauth_provider_get_identity_sync (provider, + identity = goa_oauth_provider_get_identity_sync (provider, access_token, access_token_secret, NULL, /* out_name */ @@ -1520,37 +1520,37 @@ goa_backend_oauth_provider_ensure_credentials_sync (GoaBackendProvider *_provi /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_oauth_provider_init (GoaBackendOAuthProvider *client) +goa_oauth_provider_init (GoaOAuthProvider *client) { } static void -goa_backend_oauth_provider_class_init (GoaBackendOAuthProviderClass *klass) +goa_oauth_provider_class_init (GoaOAuthProviderClass *klass) { - GoaBackendProviderClass *provider_class; + GoaProviderClass *provider_class; - provider_class = GOA_BACKEND_PROVIDER_CLASS (klass); - provider_class->add_account = goa_backend_oauth_provider_add_account; - provider_class->refresh_account = goa_backend_oauth_provider_refresh_account; - provider_class->build_object = goa_backend_oauth_provider_build_object; - provider_class->ensure_credentials_sync = goa_backend_oauth_provider_ensure_credentials_sync; + provider_class = GOA_PROVIDER_CLASS (klass); + provider_class->add_account = goa_oauth_provider_add_account; + provider_class->refresh_account = goa_oauth_provider_refresh_account; + provider_class->build_object = goa_oauth_provider_build_object; + provider_class->ensure_credentials_sync = goa_oauth_provider_ensure_credentials_sync; - klass->build_authorization_uri = goa_backend_oauth_provider_build_authorization_uri_default; - klass->get_use_external_browser = goa_backend_oauth_provider_get_use_external_browser_default; - klass->get_request_uri_params = goa_backend_oauth_provider_get_request_uri_params_default; + klass->build_authorization_uri = goa_oauth_provider_build_authorization_uri_default; + klass->get_use_external_browser = goa_oauth_provider_get_use_external_browser_default; + klass->get_request_uri_params = goa_oauth_provider_get_request_uri_params_default; } /* ---------------------------------------------------------------------------------------------------- */ /* runs in a thread dedicated to handling @invocation */ static gboolean -on_handle_get_access_token (GoaOAuthBased *interface, +on_handle_get_access_token (GoaOAuthBased *interface, GDBusMethodInvocation *invocation, gpointer user_data) { GoaObject *object; GoaAccount *account; - GoaBackendProvider *provider; + GoaProvider *provider; GError *error; gchar *access_token; gchar *access_token_secret; @@ -1563,10 +1563,10 @@ on_handle_get_access_token (GoaOAuthBased *interface, object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface))); account = goa_object_peek_account (object); - provider = goa_backend_provider_get_for_provider_type (goa_account_get_provider_type (account)); + provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account)); error = NULL; - access_token = goa_backend_oauth_provider_get_access_token_sync (GOA_BACKEND_OAUTH_PROVIDER (provider), + access_token = goa_oauth_provider_get_access_token_sync (GOA_OAUTH_PROVIDER (provider), object, FALSE, /* force_refresh */ &access_token_secret, diff --git a/src/goabackend/goaoauthprovider.h b/src/goabackend/goaoauthprovider.h new file mode 100644 index 0000000..1806cce --- /dev/null +++ b/src/goabackend/goaoauthprovider.h @@ -0,0 +1,134 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ +/* + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that 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 library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: David Zeuthen <davidz@redhat.com> + */ + +#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) +#error "Only <goabackend/goabackend.h> can be included directly." +#endif + +#ifndef __GOA_OAUTH_PROVIDER_H__ +#define __GOA_OAUTH_PROVIDER_H__ + +#include <goabackend/goabackendtypes.h> +#include <goabackend/goaprovider.h> + +G_BEGIN_DECLS + +#define GOA_TYPE_OAUTH_PROVIDER (goa_oauth_provider_get_type ()) +#define GOA_OAUTH_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_OAUTH_PROVIDER, GoaOAuthProvider)) +#define GOA_OAUTH_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_OAUTH_PROVIDER, GoaOAuthProviderClass)) +#define GOA_OAUTH_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_OAUTH_PROVIDER, GoaOAuthProviderClass)) +#define GOA_IS_OAUTH_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_OAUTH_PROVIDER)) + +#define GOA_IS_OAUTH_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_OAUTH_PROVIDER)) + +typedef struct _GoaOAuthProviderClass GoaOAuthProviderClass; +typedef struct _GoaOAuthProviderPrivate GoaOAuthProviderPrivate; + +/** + * GoaOAuthProvider: + * + * The #GoaOAuthProvider structure contains only private data and should + * only be accessed using the provided API. + */ +struct _GoaOAuthProvider +{ + /*< private >*/ + GoaProvider parent_instance; + GoaOAuthProviderPrivate *priv; +}; + +/** + * GoaOAuthProviderClass: + * @parent_class: The parent class. + * @get_consumer_key: Virtual function for goa_oauth_provider_get_consumer_key(). + * @get_consumer_secret: Virtual function for goa_oauth_provider_get_consumer_secret(). + * @get_request_uri: Virtual function for goa_oauth_provider_get_request_uri(). + * @get_authorization_uri: Virtual function for goa_oauth_provider_get_authorization_uri(). + * @get_token_uri: Virtual function for goa_oauth_provider_get_token_uri(). + * @get_callback_uri: Virtual function for goa_oauth_provider_get_callback_uri(). + * @get_identity_sync: Virtual function for goa_oauth_provider_get_identity_sync(). + * @build_authorization_uri: Virtual function for goa_oauth_provider_build_authorization_uri(). + * @get_use_external_browser: Virtual function for goa_oauth_provider_get_use_external_browser(). + * @get_request_uri_params: Virtual function for goa_oauth_provider_get_request_uri_params(). + * + * Class structure for #GoaOAuthProvider. + */ +struct _GoaOAuthProviderClass +{ + GoaProviderClass parent_class; + + /* pure virtual */ + const gchar *(*get_consumer_key) (GoaOAuthProvider *provider); + const gchar *(*get_consumer_secret) (GoaOAuthProvider *provider); + const gchar *(*get_request_uri) (GoaOAuthProvider *provider); + const gchar *(*get_authorization_uri) (GoaOAuthProvider *provider); + const gchar *(*get_token_uri) (GoaOAuthProvider *provider); + const gchar *(*get_callback_uri) (GoaOAuthProvider *provider); + + gchar *(*get_identity_sync) (GoaOAuthProvider *provider, + const gchar *access_token, + const gchar *access_token_secret, + gchar **out_name, + GCancellable *cancellable, + GError **error); + + /* virtual but with default implementation */ + gchar *(*build_authorization_uri) (GoaOAuthProvider *provider, + const gchar *authorization_uri, + const gchar *escaped_oauth_token); + gboolean (*get_use_external_browser) (GoaOAuthProvider *provider); + gchar **(*get_request_uri_params) (GoaOAuthProvider *provider); + + /*< private >*/ + /* Padding for future expansion */ + gpointer goa_reserved[32]; +}; + +GType goa_oauth_provider_get_type (void) G_GNUC_CONST; +const gchar *goa_oauth_provider_get_consumer_key (GoaOAuthProvider *provider); +const gchar *goa_oauth_provider_get_consumer_secret (GoaOAuthProvider *provider); +const gchar *goa_oauth_provider_get_request_uri (GoaOAuthProvider *provider); +gchar **goa_oauth_provider_get_request_uri_params (GoaOAuthProvider *provider); +const gchar *goa_oauth_provider_get_authorization_uri (GoaOAuthProvider *provider); +const gchar *goa_oauth_provider_get_token_uri (GoaOAuthProvider *provider); +const gchar *goa_oauth_provider_get_callback_uri (GoaOAuthProvider *provider); +gchar *goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider, + const gchar *access_token, + const gchar *access_token_secret, + gchar **out_name, + GCancellable *cancellable, + GError **error); +gchar *goa_oauth_provider_get_access_token_sync (GoaOAuthProvider *provider, + GoaObject *object, + gboolean force_refresh, + gchar **out_access_token_secret, + gint *out_access_token_expires_in, + GCancellable *cancellable, + GError **error); +gchar *goa_oauth_provider_build_authorization_uri (GoaOAuthProvider *provider, + const gchar *authorization_uri, + const gchar *escaped_oauth_token); +gboolean goa_oauth_provider_get_use_external_browser (GoaOAuthProvider *provider); + +G_END_DECLS + +#endif /* __GOA_OAUTH_PROVIDER_H__ */ diff --git a/src/goa/goabackendprovider.c b/src/goabackend/goaprovider.c index 0499002..7ec7741 100644 --- a/src/goa/goabackendprovider.c +++ b/src/goabackend/goaprovider.c @@ -24,42 +24,42 @@ #include <glib/gi18n-lib.h> #include <gnome-keyring.h> -#include "goabackendprovider.h" -#include "goabackendgoogleprovider.h" -#include "goabackendfacebookprovider.h" -#include "goabackendyahooprovider.h" -#include "goabackendtwitterprovider.h" +#include "goaprovider.h" +#include "goagoogleprovider.h" +#include "goafacebookprovider.h" +#include "goayahooprovider.h" +#include "goatwitterprovider.h" /** - * SECTION:goabackendprovider - * @title: GoaBackendProvider + * SECTION:goaprovider + * @title: GoaProvider * @short_description: Abstract base class for providers * - * #GoaBackendProvider is the base type for all providers. + * #GoaProvider is the base type for all providers. */ -static gboolean goa_backend_provider_ensure_credentials_sync_real (GoaBackendProvider *provider, - GoaObject *object, - gint *out_expires_in, - GCancellable *cancellable, - GError **error); +static gboolean goa_provider_ensure_credentials_sync_real (GoaProvider *provider, + GoaObject *object, + gint *out_expires_in, + GCancellable *cancellable, + GError **error); -G_DEFINE_ABSTRACT_TYPE (GoaBackendProvider, goa_backend_provider, G_TYPE_OBJECT); +G_DEFINE_ABSTRACT_TYPE (GoaProvider, goa_provider, G_TYPE_OBJECT); static void -goa_backend_provider_init (GoaBackendProvider *client) +goa_provider_init (GoaProvider *client) { } static void -goa_backend_provider_class_init (GoaBackendProviderClass *klass) +goa_provider_class_init (GoaProviderClass *klass) { - klass->ensure_credentials_sync = goa_backend_provider_ensure_credentials_sync_real; + klass->ensure_credentials_sync = goa_provider_ensure_credentials_sync_real; } /** - * goa_backend_provider_get_provider_type: - * @provider: A #GoaBackendProvider. + * goa_provider_get_provider_type: + * @provider: A #GoaProvider. * * Gets the type of @provider. * @@ -69,15 +69,15 @@ goa_backend_provider_class_init (GoaBackendProviderClass *klass) * Returns: (transfer none): A string owned by @provider, do not free. */ const gchar * -goa_backend_provider_get_provider_type (GoaBackendProvider *provider) +goa_provider_get_provider_type (GoaProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), NULL); - return GOA_BACKEND_PROVIDER_GET_CLASS (provider)->get_provider_type (provider); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), NULL); + return GOA_PROVIDER_GET_CLASS (provider)->get_provider_type (provider); } /** - * goa_backend_provider_get_name: - * @provider: A #GoaBackendProvider. + * goa_provider_get_name: + * @provider: A #GoaProvider. * * Gets a localized name for @provider that is suitable for display in * an user interface. @@ -88,17 +88,17 @@ goa_backend_provider_get_provider_type (GoaBackendProvider *provider) * Returns: (transfer none): A string owned by @provider, do not free. */ const gchar * -goa_backend_provider_get_name (GoaBackendProvider *provider) +goa_provider_get_name (GoaProvider *provider) { - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), NULL); - return GOA_BACKEND_PROVIDER_GET_CLASS (provider)->get_name (provider); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), NULL); + return GOA_PROVIDER_GET_CLASS (provider)->get_name (provider); } /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_provider_add_account: - * @provider: A #GoaBackendProvider. + * goa_provider_add_account: + * @provider: A #GoaProvider. * @client: A #GoaClient. * @dialog: A #GtkDialog. * @vbox: A vertically oriented #GtkBox to put content in. @@ -134,20 +134,20 @@ goa_backend_provider_get_name (GoaBackendProvider *provider) * with g_object_unref()) or %NULL if @error is set. */ GoaObject * -goa_backend_provider_add_account (GoaBackendProvider *provider, - GoaClient *client, - GtkDialog *dialog, - GtkBox *vbox, - GError **error) +goa_provider_add_account (GoaProvider *provider, + GoaClient *client, + GtkDialog *dialog, + GtkBox *vbox, + GError **error) { GoaObject *ret; - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), NULL); g_return_val_if_fail (GOA_IS_CLIENT (client), NULL); g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - ret = GOA_BACKEND_PROVIDER_GET_CLASS (provider)->add_account (provider, client, dialog, vbox, error); + ret = GOA_PROVIDER_GET_CLASS (provider)->add_account (provider, client, dialog, vbox, error); g_warn_if_fail ((ret == NULL && (error == NULL || *error != NULL)) || GOA_IS_OBJECT (ret)); @@ -157,8 +157,8 @@ goa_backend_provider_add_account (GoaBackendProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_provider_refresh_account: - * @provider: A #GoaBackendProvider. + * goa_provider_refresh_account: + * @provider: A #GoaProvider. * @client: A #GoaClient. * @object: A #GoaObject with a #GoaAccount interface. * @parent: (allow-none): Transient parent of dialogs or %NULL. @@ -182,26 +182,26 @@ goa_backend_provider_add_account (GoaBackendProvider *provider, * is set. */ gboolean -goa_backend_provider_refresh_account (GoaBackendProvider *provider, - GoaClient *client, - GoaObject *object, - GtkWindow *parent, - GError **error) +goa_provider_refresh_account (GoaProvider *provider, + GoaClient *client, + GoaObject *object, + GtkWindow *parent, + GError **error) { - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), FALSE); g_return_val_if_fail (GOA_IS_CLIENT (client), FALSE); g_return_val_if_fail (GOA_IS_OBJECT (object) && goa_object_peek_account (object) != NULL, FALSE); g_return_val_if_fail (parent == NULL || GTK_IS_WINDOW (parent), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - return GOA_BACKEND_PROVIDER_GET_CLASS (provider)->refresh_account (provider, client, object, parent, error); + return GOA_PROVIDER_GET_CLASS (provider)->refresh_account (provider, client, object, parent, error); } /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_provider_build_object: - * @provider: A #GoaBackendProvider. + * goa_provider_build_object: + * @provider: A #GoaProvider. * @object: The #GoaObjectSkeleton that is being built. * @key_file: The #GKeyFile with configuation data. * @group: The group in @key_file to get data from. @@ -224,18 +224,18 @@ goa_backend_provider_refresh_account (GoaBackendProvider *provider, * Returns: %TRUE if data was valid, %FALSE if @error is set. */ gboolean -goa_backend_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error) +goa_provider_build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error) { - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), FALSE); g_return_val_if_fail (GOA_IS_OBJECT_SKELETON (object) && goa_object_peek_account (GOA_OBJECT (object)) != NULL, FALSE); g_return_val_if_fail (key_file != NULL, FALSE); g_return_val_if_fail (group != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - return GOA_BACKEND_PROVIDER_GET_CLASS (provider)->build_object (provider, object, key_file, group, error); + return GOA_PROVIDER_GET_CLASS (provider)->build_object (provider, object, key_file, group, error); } /* ---------------------------------------------------------------------------------------------------- */ @@ -273,18 +273,18 @@ ensure_credentials_in_thread_func (GSimpleAsyncResult *simple, data = g_simple_async_result_get_op_res_gpointer (simple); error = NULL; - if (!goa_backend_provider_ensure_credentials_sync (GOA_BACKEND_PROVIDER (object), - data->object, - &data->expires_in, - cancellable, - &error)) + if (!goa_provider_ensure_credentials_sync (GOA_PROVIDER (object), + data->object, + &data->expires_in, + cancellable, + &error)) g_simple_async_result_take_error (simple, error); } /** - * goa_backend_provider_ensure_credentials: - * @provider: A #GoaBackendProvider. + * goa_provider_ensure_credentials: + * @provider: A #GoaProvider. * @object: A #GoaObject with a #GoaAccount interface. * @cancellable: (allow-none): A #GCancellable or %NULL. * @callback: The function to call when the request is satisfied. @@ -295,7 +295,7 @@ ensure_credentials_in_thread_func (GSimpleAsyncResult *simple, * When the result is ready, @callback will be called in the the <link * linkend="g-main-context-push-thread-default">thread-default main * loop</link> this function was called from. You can then call - * goa_backend_provider_ensure_credentials_finish() to get the result + * goa_provider_ensure_credentials_finish() to get the result * of the operation. * * This is a virtual method where the default implemention simply returns @@ -303,22 +303,22 @@ ensure_credentials_in_thread_func (GSimpleAsyncResult *simple, * another implementation. */ void -goa_backend_provider_ensure_credentials (GoaBackendProvider *provider, - GoaObject *object, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +goa_provider_ensure_credentials (GoaProvider *provider, + GoaObject *object, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { GSimpleAsyncResult *simple; - g_return_if_fail (GOA_IS_BACKEND_PROVIDER (provider)); + g_return_if_fail (GOA_IS_PROVIDER (provider)); g_return_if_fail (GOA_IS_OBJECT (object)); g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); simple = g_simple_async_result_new (G_OBJECT (provider), callback, user_data, - goa_backend_provider_ensure_credentials); + goa_provider_ensure_credentials); g_simple_async_result_set_op_res_gpointer (simple, ensure_credentials_data_new (object), (GDestroyNotify) ensure_credentials_data_free); @@ -330,18 +330,18 @@ goa_backend_provider_ensure_credentials (GoaBackendProvider *provider, } /** - * goa_backend_provider_ensure_credentials_finish: - * @provider: A #GoaBackendProvider. + * goa_provider_ensure_credentials_finish: + * @provider: A #GoaProvider. * @out_expires_in: (out): Return location for how long the expired credentials are good for (0 if unknown) or %NULL. - * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_backend_provider_ensure_credentials(). + * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_provider_ensure_credentials(). * @error: Return location for error or %NULL. * - * Finishes an operation started with goa_backend_provider_ensure_credentials(). + * Finishes an operation started with goa_provider_ensure_credentials(). * * Returns: %TRUE if the credentials for the passed #GoaObject are valid, %FALSE if @error is set. */ gboolean -goa_backend_provider_ensure_credentials_finish (GoaBackendProvider *provider, +goa_provider_ensure_credentials_finish (GoaProvider *provider, gint *out_expires_in, GAsyncResult *res, GError **error) @@ -352,11 +352,11 @@ goa_backend_provider_ensure_credentials_finish (GoaBackendProvider *provider, ret = FALSE; - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), FALSE); g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == goa_backend_provider_ensure_credentials); + g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == goa_provider_ensure_credentials); if (g_simple_async_result_propagate_error (simple, error)) goto out; @@ -373,37 +373,37 @@ goa_backend_provider_ensure_credentials_finish (GoaBackendProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_provider_ensure_credentials_sync: - * @provider: A #GoaBackendProvider. + * goa_provider_ensure_credentials_sync: + * @provider: A #GoaProvider. * @object: A #GoaObject with a #GoaAccount interface. * @out_expires_in: (out): Return location for how long the expired credentials are good for (0 if unknown) or %NULL. * @cancellable: (allow-none): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * - * Like goa_backend_provider_ensure_credentials() but blocks the + * Like goa_provider_ensure_credentials() but blocks the * calling thread until an answer is received. * * Returns: %TRUE if the credentials for the passed #GoaObject are valid, %FALSE if @error is set. */ gboolean -goa_backend_provider_ensure_credentials_sync (GoaBackendProvider *provider, - GoaObject *object, - gint *out_expires_in, - GCancellable *cancellable, - GError **error) +goa_provider_ensure_credentials_sync (GoaProvider *provider, + GoaObject *object, + gint *out_expires_in, + GCancellable *cancellable, + GError **error) { - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), FALSE); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - return GOA_BACKEND_PROVIDER_GET_CLASS (provider)->ensure_credentials_sync (provider, object, out_expires_in, cancellable, error); + return GOA_PROVIDER_GET_CLASS (provider)->ensure_credentials_sync (provider, object, out_expires_in, cancellable, error); } static gboolean -goa_backend_provider_ensure_credentials_sync_real (GoaBackendProvider *provider, - GoaObject *object, - gint *out_expires_in, - GCancellable *cancellable, - GError **error) +goa_provider_ensure_credentials_sync_real (GoaProvider *provider, + GoaObject *object, + gint *out_expires_in, + GCancellable *cancellable, + GError **error) { g_set_error (error, GOA_ERROR, @@ -425,13 +425,13 @@ ensure_ep_and_builtins (void) GIOExtensionPoint *extension_point; static volatile GType type = 0; - extension_point = g_io_extension_point_register (GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME); - g_io_extension_point_set_required_type (extension_point, GOA_TYPE_BACKEND_PROVIDER); + extension_point = g_io_extension_point_register (GOA_PROVIDER_EXTENSION_POINT_NAME); + g_io_extension_point_set_required_type (extension_point, GOA_TYPE_PROVIDER); - type = GOA_TYPE_BACKEND_GOOGLE_PROVIDER; - type = GOA_TYPE_BACKEND_FACEBOOK_PROVIDER; - type = GOA_TYPE_BACKEND_YAHOO_PROVIDER; - type = GOA_TYPE_BACKEND_TWITTER_PROVIDER; + type = GOA_TYPE_GOOGLE_PROVIDER; + type = GOA_TYPE_FACEBOOK_PROVIDER; + type = GOA_TYPE_YAHOO_PROVIDER; + type = GOA_TYPE_TWITTER_PROVIDER; type = type; /* for -Wunused-but-set-variable */ g_once_init_leave (&once_init_value, 1); @@ -442,49 +442,49 @@ ensure_ep_and_builtins (void) /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_provider_get_for_provider_type: + * goa_provider_get_for_provider_type: * @provider_type: A provider type. * - * Looks up the %GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME extension - * point and returns a newly created #GoaBackendProvider for + * Looks up the %GOA_PROVIDER_EXTENSION_POINT_NAME extension + * point and returns a newly created #GoaProvider for * @provider_type, if any. * - * Returns: (transfer full): A #GoaBackendProvider (that must be freed + * Returns: (transfer full): A #GoaProvider (that must be freed * with g_object_unref()) or %NULL if not found. */ -GoaBackendProvider * -goa_backend_provider_get_for_provider_type (const gchar *provider_type) +GoaProvider * +goa_provider_get_for_provider_type (const gchar *provider_type) { GIOExtension *extension; GIOExtensionPoint *extension_point; - GoaBackendProvider *ret; + GoaProvider *ret; ensure_ep_and_builtins (); ret = NULL; - extension_point = g_io_extension_point_lookup (GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME); + extension_point = g_io_extension_point_lookup (GOA_PROVIDER_EXTENSION_POINT_NAME); extension = g_io_extension_point_get_extension_by_name (extension_point, provider_type); if (extension != NULL) - ret = GOA_BACKEND_PROVIDER (g_object_new (g_io_extension_get_type (extension), NULL)); + ret = GOA_PROVIDER (g_object_new (g_io_extension_get_type (extension), NULL)); return ret; } /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_provider_get_all: + * goa_provider_get_all: * - * Looks up the %GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME extension - * point and returns a newly created #GoaBackendProvider for each + * Looks up the %GOA_PROVIDER_EXTENSION_POINT_NAME extension + * point and returns a newly created #GoaProvider for each * provider type encountered. * - * Returns: (transfer full) (element-type GoaBackendProvider): A list + * Returns: (transfer full) (element-type GoaProvider): A list * of element providers that should be freed with g_list_free() * after each element has been freed with g_object_unref(). */ GList * -goa_backend_provider_get_all (void) +goa_provider_get_all (void) { GList *ret; GList *extensions; @@ -494,7 +494,7 @@ goa_backend_provider_get_all (void) ensure_ep_and_builtins (); ret = NULL; - extension_point = g_io_extension_point_lookup (GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME); + extension_point = g_io_extension_point_lookup (GOA_PROVIDER_EXTENSION_POINT_NAME); extensions = g_io_extension_point_get_extensions (extension_point); /* TODO: what if there are two extensions with the same name? */ for (l = extensions; l != NULL; l = l->next) @@ -518,8 +518,8 @@ static const GnomeKeyringPasswordSchema keyring_password_schema = }; /** - * goa_backend_provider_store_credentials_sync: - * @provider: A #GoaBackendProvider. + * goa_provider_store_credentials_sync: + * @provider: A #GoaProvider. * @identity: The identity to store credentials for. * @credentials: The credentials to store. * @cancellable: (allow-none): A #GCancellable or %NULL. @@ -536,11 +536,11 @@ static const GnomeKeyringPasswordSchema keyring_password_schema = * if @error is set. */ gboolean -goa_backend_provider_store_credentials_sync (GoaBackendProvider *provider, - const gchar *identity, - GVariant *credentials, - GCancellable *cancellable, - GError **error) +goa_provider_store_credentials_sync (GoaProvider *provider, + const gchar *identity, + GVariant *credentials, + GCancellable *cancellable, + GError **error) { gboolean ret; gchar *credentials_str; @@ -548,7 +548,7 @@ goa_backend_provider_store_credentials_sync (GoaBackendProvider *provider, gchar *password_key; GnomeKeyringResult result; - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), FALSE); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), FALSE); g_return_val_if_fail (identity != NULL, FALSE); g_return_val_if_fail (credentials != NULL, FALSE); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE); @@ -562,10 +562,10 @@ goa_backend_provider_store_credentials_sync (GoaBackendProvider *provider, g_variant_unref (credentials); password_key = g_strdup_printf ("%s:%s", - goa_backend_provider_get_provider_type (GOA_BACKEND_PROVIDER (provider)), + goa_provider_get_provider_type (GOA_PROVIDER (provider)), identity); password_description = g_strdup_printf (_("GOA %s credentials for identity %s"), - goa_backend_provider_get_provider_type (GOA_BACKEND_PROVIDER (provider)), + goa_provider_get_provider_type (GOA_PROVIDER (provider)), identity); result = gnome_keyring_store_password_sync (&keyring_password_schema, NULL, /* default keyring */ @@ -595,14 +595,14 @@ goa_backend_provider_store_credentials_sync (GoaBackendProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ /** - * goa_backend_provider_lookup_credentials_sync: - * @provider: A #GoaBackendProvider. + * goa_provider_lookup_credentials_sync: + * @provider: A #GoaProvider. * @identity: The identity to look up credentials for. * @cancellable: (allow-none): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Looks up credentials in the keyring for @identity previously stored - * with goa_backend_provider_store_credentials(). + * with goa_provider_store_credentials(). * * The calling thread is blocked while waiting for a reply. * @@ -613,17 +613,17 @@ goa_backend_provider_store_credentials_sync (GoaBackendProvider *provider, * g_variant_unref(). */ GVariant * -goa_backend_provider_lookup_credentials_sync (GoaBackendProvider *provider, - const gchar *identity, - GCancellable *cancellable, - GError **error) +goa_provider_lookup_credentials_sync (GoaProvider *provider, + const gchar *identity, + GCancellable *cancellable, + GError **error) { gchar *password_key; GVariant *ret; GnomeKeyringResult result; gchar *returned_password; - g_return_val_if_fail (GOA_IS_BACKEND_PROVIDER (provider), NULL); + g_return_val_if_fail (GOA_IS_PROVIDER (provider), NULL); g_return_val_if_fail (identity != NULL, NULL); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); @@ -633,7 +633,7 @@ goa_backend_provider_lookup_credentials_sync (GoaBackendProvider *provider, returned_password = NULL; password_key = g_strdup_printf ("%s:%s", - goa_backend_provider_get_provider_type (GOA_BACKEND_PROVIDER (provider)), + goa_provider_get_provider_type (GOA_PROVIDER (provider)), identity); result = gnome_keyring_find_password_sync (&keyring_password_schema, diff --git a/src/goabackend/goaprovider.h b/src/goabackend/goaprovider.h new file mode 100644 index 0000000..131e86b --- /dev/null +++ b/src/goabackend/goaprovider.h @@ -0,0 +1,159 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ +/* + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that 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 library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: David Zeuthen <davidz@redhat.com> + */ + +#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) +#error "Only <goabackend/goabackend.h> can be included directly." +#endif + +#ifndef __GOA_PROVIDER_H__ +#define __GOA_PROVIDER_H__ + +#include <goabackend/goabackendtypes.h> + +G_BEGIN_DECLS + +#define GOA_TYPE_PROVIDER (goa_provider_get_type ()) +#define GOA_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_PROVIDER, GoaProvider)) +#define GOA_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GOA_TYPE_PROVIDER, GoaProviderClass)) +#define GOA_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GOA_TYPE_PROVIDER, GoaProviderClass)) +#define GOA_IS_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_PROVIDER)) +#define GOA_IS_PROVIDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOA_TYPE_PROVIDER)) + +typedef struct _GoaProviderClass GoaProviderClass; +typedef struct _GoaProviderPrivate GoaProviderPrivate; + +/** + * GoaProvider: + * + * The #GoaProvider structure contains only private data and should + * only be accessed using the provided API. + */ +struct _GoaProvider +{ + /*< private >*/ + GObject parent_instance; + GoaProviderPrivate *priv; +}; + +/** + * GoaProviderClass: + * @parent_class: The parent class. + * @get_provider_type: Virtual function for goa_provider_get_provider_type(). + * @get_name: Virtual function for goa_provider_get_name(). + * @add_account: Virtual function for goa_provider_add_account(). + * @refresh_account: Virtual function for goa_provider_refresh_account(). + * @build_object: Virtual function for goa_provider_build_object(). + * @ensure_credentials_sync: Virtual function for goa_provider_ensure_credentials_sync(). + * + * Class structure for #GoaProvider. + */ +struct _GoaProviderClass +{ + GObjectClass parent_class; + + /* pure virtual */ + const gchar *(*get_provider_type) (GoaProvider *provider); + const gchar *(*get_name) (GoaProvider *provider); + GoaObject *(*add_account) (GoaProvider *provider, + GoaClient *client, + GtkDialog *dialog, + GtkBox *vbox, + GError **error); + gboolean (*refresh_account) (GoaProvider *provider, + GoaClient *client, + GoaObject *object, + GtkWindow *parent, + GError **error); + gboolean (*build_object) (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error); + + /* virtual but with default implementation */ + gboolean (*ensure_credentials_sync) (GoaProvider *provider, + GoaObject *object, + gint *out_expires_in, + GCancellable *cancellable, + GError **error); + + /*< private >*/ + /* Padding for future expansion */ + gpointer goa_reserved[32]; +}; + +GType goa_provider_get_type (void) G_GNUC_CONST; +const gchar *goa_provider_get_provider_type (GoaProvider *provider); +const gchar *goa_provider_get_name (GoaProvider *provider); +GoaObject *goa_provider_add_account (GoaProvider *provider, + GoaClient *client, + GtkDialog *dialog, + GtkBox *vbox, + GError **error); +gboolean goa_provider_refresh_account (GoaProvider *provider, + GoaClient *client, + GoaObject *object, + GtkWindow *parent, + GError **error); +gboolean goa_provider_build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error); +gboolean goa_provider_store_credentials_sync (GoaProvider *provider, + const gchar *identity, + GVariant *credentials, + GCancellable *cancellable, + GError **error); +GVariant *goa_provider_lookup_credentials_sync (GoaProvider *provider, + const gchar *identity, + GCancellable *cancellable, + GError **error); +void goa_provider_ensure_credentials (GoaProvider *provider, + GoaObject *object, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean goa_provider_ensure_credentials_finish (GoaProvider *provider, + gint *out_expires_in, + GAsyncResult *res, + GError **error); +gboolean goa_provider_ensure_credentials_sync (GoaProvider *provider, + GoaObject *object, + gint *out_expires_in, + GCancellable *cancellable, + GError **error); + + +/** + * GOA_PROVIDER_EXTENSION_POINT_NAME: + * + * Extension point for #GoaProvider implementations. + */ +#define GOA_PROVIDER_EXTENSION_POINT_NAME "goa-backend-provider" + +GList *goa_provider_get_all (void); +GoaProvider *goa_provider_get_for_provider_type (const gchar *provider_type); + +G_END_DECLS + +#endif /* __GOA_PROVIDER_H__ */ diff --git a/src/goa/goabackendtwitterprovider.c b/src/goabackend/goatwitterprovider.c index d036dd9..48c16aa 100644 --- a/src/goa/goabackendtwitterprovider.c +++ b/src/goabackend/goatwitterprovider.c @@ -26,39 +26,39 @@ #include <rest/oauth-proxy.h> #include <json-glib/json-glib.h> -#include "goabackendprovider.h" -#include "goabackendoauthprovider.h" -#include "goabackendtwitterprovider.h" +#include "goaprovider.h" +#include "goaoauthprovider.h" +#include "goatwitterprovider.h" /** - * GoaBackendTwitterProvider: + * GoaTwitterProvider: * - * The #GoaBackendTwitterProvider structure contains only private data and should + * The #GoaTwitterProvider structure contains only private data and should * only be accessed using the provided API. */ -struct _GoaBackendTwitterProvider +struct _GoaTwitterProvider { /*< private >*/ - GoaBackendOAuthProvider parent_instance; + GoaOAuthProvider parent_instance; }; -typedef struct _GoaBackendTwitterProviderClass GoaBackendTwitterProviderClass; +typedef struct _GoaTwitterProviderClass GoaTwitterProviderClass; -struct _GoaBackendTwitterProviderClass +struct _GoaTwitterProviderClass { - GoaBackendOAuthProviderClass parent_class; + GoaOAuthProviderClass parent_class; }; /** - * SECTION:goabackendtwitterprovider - * @title: GoaBackendTwitterProvider + * SECTION:goatwitterprovider + * @title: GoaTwitterProvider * @short_description: A provider for Twitter * - * #GoaBackendTwitterProvider is used for handling Twitter accounts. + * #GoaTwitterProvider is used for handling Twitter accounts. */ -G_DEFINE_TYPE_WITH_CODE (GoaBackendTwitterProvider, goa_backend_twitter_provider, GOA_TYPE_BACKEND_OAUTH_PROVIDER, - g_io_extension_point_implement (GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME, +G_DEFINE_TYPE_WITH_CODE (GoaTwitterProvider, goa_twitter_provider, GOA_TYPE_OAUTH_PROVIDER, + g_io_extension_point_implement (GOA_PROVIDER_EXTENSION_POINT_NAME, g_define_type_id, "twitter", 0)); @@ -66,37 +66,37 @@ G_DEFINE_TYPE_WITH_CODE (GoaBackendTwitterProvider, goa_backend_twitter_provider /* ---------------------------------------------------------------------------------------------------- */ static const gchar * -get_provider_type (GoaBackendProvider *_provider) +get_provider_type (GoaProvider *_provider) { return "twitter"; } static const gchar * -get_name (GoaBackendProvider *_provider) +get_name (GoaProvider *_provider) { return _("Twitter Account"); } static const gchar * -get_consumer_key (GoaBackendOAuthProvider *provider) +get_consumer_key (GoaOAuthProvider *provider) { return "tlVEAXvkgqr0VUFyqVQ"; } static const gchar * -get_consumer_secret (GoaBackendOAuthProvider *provider) +get_consumer_secret (GoaOAuthProvider *provider) { return "RN2FBARWy7scDmWFwfhIA6Qwf6kPYxZ0PIpVWzgpdU"; } static const gchar * -get_request_uri (GoaBackendOAuthProvider *provider) +get_request_uri (GoaOAuthProvider *provider) { return "https://api.twitter.com/oauth/request_token"; } static gchar ** -get_request_uri_params (GoaBackendOAuthProvider *provider) +get_request_uri_params (GoaOAuthProvider *provider) { return NULL; GPtrArray *p; @@ -118,19 +118,19 @@ get_request_uri_params (GoaBackendOAuthProvider *provider) static const gchar * -get_authorization_uri (GoaBackendOAuthProvider *provider) +get_authorization_uri (GoaOAuthProvider *provider) { return "https://api.twitter.com/oauth/authorize"; } static const gchar * -get_token_uri (GoaBackendOAuthProvider *provider) +get_token_uri (GoaOAuthProvider *provider) { return "https://api.twitter.com/oauth/access_token"; } static const gchar * -get_callback_uri (GoaBackendOAuthProvider *provider) +get_callback_uri (GoaOAuthProvider *provider) { return "https://www.gnome.org/goa-1.0/oauth"; } @@ -138,12 +138,12 @@ get_callback_uri (GoaBackendOAuthProvider *provider) /* ---------------------------------------------------------------------------------------------------- */ static gchar * -get_identity_sync (GoaBackendOAuthProvider *provider, - const gchar *access_token, - const gchar *access_token_secret, - gchar **out_name, - GCancellable *cancellable, - GError **error) +get_identity_sync (GoaOAuthProvider *provider, + const gchar *access_token, + const gchar *access_token_secret, + gchar **out_name, + GCancellable *cancellable, + GError **error) { RestProxy *proxy; RestProxyCall *call; @@ -162,8 +162,8 @@ get_identity_sync (GoaBackendOAuthProvider *provider, /* TODO: cancellable */ - proxy = oauth_proxy_new_with_token (goa_backend_oauth_provider_get_consumer_key (provider), - goa_backend_oauth_provider_get_consumer_secret (provider), + proxy = oauth_proxy_new_with_token (goa_oauth_provider_get_consumer_key (provider), + goa_oauth_provider_get_consumer_secret (provider), access_token, access_token_secret, "https://api.twitter.com/1/account/verify_credentials.json", @@ -235,11 +235,11 @@ get_identity_sync (GoaBackendOAuthProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_twitter_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error) +build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error) { GoaAccount *account; GoaTwitterAccount *twitter_account; @@ -252,7 +252,7 @@ goa_backend_twitter_provider_build_object (GoaBackendProvider *provider, ret = FALSE; /* Chain up */ - if (!GOA_BACKEND_PROVIDER_CLASS (goa_backend_twitter_provider_parent_class)->build_object (provider, + if (!GOA_PROVIDER_CLASS (goa_twitter_provider_parent_class)->build_object (provider, object, key_file, group, @@ -295,7 +295,7 @@ goa_backend_twitter_provider_build_object (GoaBackendProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -get_use_external_browser (GoaBackendOAuthProvider *provider) +get_use_external_browser (GoaOAuthProvider *provider) { /* For some reason this only works in a browser - bad callback URL? TODO: investigate */ return TRUE; @@ -304,22 +304,22 @@ get_use_external_browser (GoaBackendOAuthProvider *provider) /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_twitter_provider_init (GoaBackendTwitterProvider *client) +goa_twitter_provider_init (GoaTwitterProvider *client) { } static void -goa_backend_twitter_provider_class_init (GoaBackendTwitterProviderClass *klass) +goa_twitter_provider_class_init (GoaTwitterProviderClass *klass) { - GoaBackendProviderClass *provider_class; - GoaBackendOAuthProviderClass *oauth_class; + GoaProviderClass *provider_class; + GoaOAuthProviderClass *oauth_class; - provider_class = GOA_BACKEND_PROVIDER_CLASS (klass); - provider_class->get_provider_type = get_provider_type; - provider_class->get_name = get_name; - provider_class->build_object = goa_backend_twitter_provider_build_object; + provider_class = GOA_PROVIDER_CLASS (klass); + provider_class->get_provider_type = get_provider_type; + provider_class->get_name = get_name; + provider_class->build_object = build_object; - oauth_class = GOA_BACKEND_OAUTH_PROVIDER_CLASS (klass); + oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass); oauth_class->get_identity_sync = get_identity_sync; oauth_class->get_consumer_key = get_consumer_key; oauth_class->get_consumer_secret = get_consumer_secret; diff --git a/src/goa/goabackendfacebookprovider.h b/src/goabackend/goatwitterprovider.h index 256ed98..8164388 100644 --- a/src/goa/goabackendfacebookprovider.h +++ b/src/goabackend/goatwitterprovider.h @@ -21,22 +21,22 @@ */ #if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) -#error "Only <goa/goabackend.h> can be included directly." +#error "Only <goabackend/goabackend.h> can be included directly." #endif -#ifndef __GOA_BACKEND_FACEBOOK_PROVIDER_H__ -#define __GOA_BACKEND_FACEBOOK_PROVIDER_H__ +#ifndef __GOA_TWITTER_PROVIDER_H__ +#define __GOA_TWITTER_PROVIDER_H__ -#include <goa/goabackendtypes.h> +#include <goabackend/goabackendtypes.h> G_BEGIN_DECLS -#define GOA_TYPE_BACKEND_FACEBOOK_PROVIDER (goa_backend_facebook_provider_get_type ()) -#define GOA_BACKEND_FACEBOOK_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_BACKEND_FACEBOOK_PROVIDER, GoaBackendFacebookProvider)) -#define GOA_IS_BACKEND_FACEBOOK_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_BACKEND_FACEBOOK_PROVIDER)) +#define GOA_TYPE_TWITTER_PROVIDER (goa_twitter_provider_get_type ()) +#define GOA_TWITTER_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_TWITTER_PROVIDER, GoaTwitterProvider)) +#define GOA_IS_TWITTER_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_TWITTER_PROVIDER)) -GType goa_backend_facebook_provider_get_type (void) G_GNUC_CONST; +GType goa_twitter_provider_get_type (void) G_GNUC_CONST; G_END_DECLS -#endif /* __GOA_BACKEND_FACEBOOK_PROVIDER_H__ */ +#endif /* __GOA_TWITTER_PROVIDER_H__ */ diff --git a/src/goa/goabackendyahooprovider.c b/src/goabackend/goayahooprovider.c index c9ba5e8..604fc89 100644 --- a/src/goa/goabackendyahooprovider.c +++ b/src/goabackend/goayahooprovider.c @@ -26,39 +26,39 @@ #include <rest/oauth-proxy.h> #include <json-glib/json-glib.h> -#include "goabackendprovider.h" -#include "goabackendoauthprovider.h" -#include "goabackendyahooprovider.h" +#include "goaprovider.h" +#include "goaoauthprovider.h" +#include "goayahooprovider.h" /** - * GoaBackendYahooProvider: + * GoaYahooProvider: * - * The #GoaBackendYahooProvider structure contains only private data and should + * The #GoaYahooProvider structure contains only private data and should * only be accessed using the provided API. */ -struct _GoaBackendYahooProvider +struct _GoaYahooProvider { /*< private >*/ - GoaBackendOAuthProvider parent_instance; + GoaOAuthProvider parent_instance; }; -typedef struct _GoaBackendYahooProviderClass GoaBackendYahooProviderClass; +typedef struct _GoaYahooProviderClass GoaYahooProviderClass; -struct _GoaBackendYahooProviderClass +struct _GoaYahooProviderClass { - GoaBackendOAuthProviderClass parent_class; + GoaOAuthProviderClass parent_class; }; /** - * SECTION:goabackendyahooprovider - * @title: GoaBackendYahooProvider + * SECTION:goayahooprovider + * @title: GoaYahooProvider * @short_description: A provider for Yahoo * - * #GoaBackendYahooProvider is used for handling Yahoo accounts. + * #GoaYahooProvider is used for handling Yahoo accounts. */ -G_DEFINE_TYPE_WITH_CODE (GoaBackendYahooProvider, goa_backend_yahoo_provider, GOA_TYPE_BACKEND_OAUTH_PROVIDER, - g_io_extension_point_implement (GOA_BACKEND_PROVIDER_EXTENSION_POINT_NAME, +G_DEFINE_TYPE_WITH_CODE (GoaYahooProvider, goa_yahoo_provider, GOA_TYPE_OAUTH_PROVIDER, + g_io_extension_point_implement (GOA_PROVIDER_EXTENSION_POINT_NAME, g_define_type_id, "yahoo", 0)); @@ -66,49 +66,49 @@ G_DEFINE_TYPE_WITH_CODE (GoaBackendYahooProvider, goa_backend_yahoo_provider, GO /* ---------------------------------------------------------------------------------------------------- */ static const gchar * -get_provider_type (GoaBackendProvider *_provider) +get_provider_type (GoaProvider *_provider) { return "yahoo"; } static const gchar * -get_name (GoaBackendProvider *_provider) +get_name (GoaProvider *_provider) { return _("Yahoo Account"); } static const gchar * -get_consumer_key (GoaBackendOAuthProvider *provider) +get_consumer_key (GoaOAuthProvider *provider) { return "dj0yJmk9VnBYMGpGRVFBUVl3JmQ9WVdrOWNWZDZiVTUwTldNbWNHbzlPVFF5TURrNE5UWXkmcz1jb25zdW1lcnNlY3JldCZ4PTQ0"; } static const gchar * -get_consumer_secret (GoaBackendOAuthProvider *provider) +get_consumer_secret (GoaOAuthProvider *provider) { return "33dd9ebe9f5724deabe657eff1de7c3f151cf7eb"; } static const gchar * -get_request_uri (GoaBackendOAuthProvider *provider) +get_request_uri (GoaOAuthProvider *provider) { return "https://api.login.yahoo.com/oauth/v2/get_request_token"; } static const gchar * -get_authorization_uri (GoaBackendOAuthProvider *provider) +get_authorization_uri (GoaOAuthProvider *provider) { return "https://api.login.yahoo.com/oauth/v2/request_auth"; } static const gchar * -get_token_uri (GoaBackendOAuthProvider *provider) +get_token_uri (GoaOAuthProvider *provider) { return "https://api.login.yahoo.com/oauth/v2/get_token"; } static const gchar * -get_callback_uri (GoaBackendOAuthProvider *provider) +get_callback_uri (GoaOAuthProvider *provider) { return "https://www.gnome.org/goa-1.0/oauth"; } @@ -116,12 +116,12 @@ get_callback_uri (GoaBackendOAuthProvider *provider) /* ---------------------------------------------------------------------------------------------------- */ static gchar * -get_identity_sync (GoaBackendOAuthProvider *provider, - const gchar *access_token, - const gchar *access_token_secret, - gchar **out_name, - GCancellable *cancellable, - GError **error) +get_identity_sync (GoaOAuthProvider *provider, + const gchar *access_token, + const gchar *access_token_secret, + gchar **out_name, + GCancellable *cancellable, + GError **error) { RestProxy *proxy; RestProxyCall *call; @@ -141,8 +141,8 @@ get_identity_sync (GoaBackendOAuthProvider *provider, /* TODO: cancellable */ - proxy = oauth_proxy_new_with_token (goa_backend_oauth_provider_get_consumer_key (provider), - goa_backend_oauth_provider_get_consumer_secret (provider), + proxy = oauth_proxy_new_with_token (goa_oauth_provider_get_consumer_key (provider), + goa_oauth_provider_get_consumer_secret (provider), access_token, access_token_secret, "http://social.yahooapis.com/v1/me/guid", @@ -198,8 +198,8 @@ get_identity_sync (GoaBackendOAuthProvider *provider, /* OK, got the GUID, now get the name via http://developer.yahoo.com/social/rest_api_guide/usercard-resource.html */ g_object_unref (proxy); g_object_unref (call); - proxy = oauth_proxy_new_with_token (goa_backend_oauth_provider_get_consumer_key (provider), - goa_backend_oauth_provider_get_consumer_secret (provider), + proxy = oauth_proxy_new_with_token (goa_oauth_provider_get_consumer_key (provider), + goa_oauth_provider_get_consumer_secret (provider), access_token, access_token_secret, "http://social.yahooapis.com/v1/user/%s/profile/usercard", @@ -276,11 +276,11 @@ get_identity_sync (GoaBackendOAuthProvider *provider, /* ---------------------------------------------------------------------------------------------------- */ static gboolean -goa_backend_yahoo_provider_build_object (GoaBackendProvider *provider, - GoaObjectSkeleton *object, - GKeyFile *key_file, - const gchar *group, - GError **error) +build_object (GoaProvider *provider, + GoaObjectSkeleton *object, + GKeyFile *key_file, + const gchar *group, + GError **error) { GoaAccount *account; GoaYahooAccount *yahoo_account; @@ -293,11 +293,11 @@ goa_backend_yahoo_provider_build_object (GoaBackendProvider *provider, ret = FALSE; /* Chain up */ - if (!GOA_BACKEND_PROVIDER_CLASS (goa_backend_yahoo_provider_parent_class)->build_object (provider, - object, - key_file, - group, - error)) + if (!GOA_PROVIDER_CLASS (goa_yahoo_provider_parent_class)->build_object (provider, + object, + key_file, + group, + error)) goto out; account = goa_object_get_account (GOA_OBJECT (object)); @@ -334,7 +334,7 @@ goa_backend_yahoo_provider_build_object (GoaBackendProvider *provider, } static gboolean -get_use_external_browser (GoaBackendOAuthProvider *provider) +get_use_external_browser (GoaOAuthProvider *provider) { return FALSE; } @@ -342,22 +342,22 @@ get_use_external_browser (GoaBackendOAuthProvider *provider) /* ---------------------------------------------------------------------------------------------------- */ static void -goa_backend_yahoo_provider_init (GoaBackendYahooProvider *client) +goa_yahoo_provider_init (GoaYahooProvider *client) { } static void -goa_backend_yahoo_provider_class_init (GoaBackendYahooProviderClass *klass) +goa_yahoo_provider_class_init (GoaYahooProviderClass *klass) { - GoaBackendProviderClass *provider_class; - GoaBackendOAuthProviderClass *oauth_class; + GoaProviderClass *provider_class; + GoaOAuthProviderClass *oauth_class; - provider_class = GOA_BACKEND_PROVIDER_CLASS (klass); - provider_class->get_provider_type = get_provider_type; - provider_class->get_name = get_name; - provider_class->build_object = goa_backend_yahoo_provider_build_object; + provider_class = GOA_PROVIDER_CLASS (klass); + provider_class->get_provider_type = get_provider_type; + provider_class->get_name = get_name; + provider_class->build_object = build_object; - oauth_class = GOA_BACKEND_OAUTH_PROVIDER_CLASS (klass); + oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass); oauth_class->get_identity_sync = get_identity_sync; oauth_class->get_consumer_key = get_consumer_key; oauth_class->get_consumer_secret = get_consumer_secret; diff --git a/src/goabackend/goayahooprovider.h b/src/goabackend/goayahooprovider.h new file mode 100644 index 0000000..2315703 --- /dev/null +++ b/src/goabackend/goayahooprovider.h @@ -0,0 +1,42 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ +/* + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that 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 library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: David Zeuthen <davidz@redhat.com> + */ + +#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION) +#error "Only <goabackend/goabackend.h> can be included directly." +#endif + +#ifndef __GOA_YAHOO_PROVIDER_H__ +#define __GOA_YAHOO_PROVIDER_H__ + +#include <goabackend/goabackendtypes.h> + +G_BEGIN_DECLS + +#define GOA_TYPE_YAHOO_PROVIDER (goa_yahoo_provider_get_type ()) +#define GOA_YAHOO_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_YAHOO_PROVIDER, GoaYahooProvider)) +#define GOA_IS_YAHOO_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_YAHOO_PROVIDER)) + +GType goa_yahoo_provider_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __GOA_YAHOO_PROVIDER_H__ */ diff --git a/src/panel/Makefile.am b/src/panel/Makefile.am index e29aec1..e51878a 100644 --- a/src/panel/Makefile.am +++ b/src/panel/Makefile.am @@ -40,7 +40,7 @@ libgoa_panel_la_LIBADD = \ $(GTK_LIBS) \ $(GNOME_CONTROL_CENTER_LIBS) \ $(top_builddir)/src/goa/libgoa.la \ - $(top_builddir)/src/goa/libgoa-backend.la \ + $(top_builddir)/src/goabackend/libgoa-backend.la \ $(NULL) clean-local : diff --git a/src/panel/goapanel.c b/src/panel/goapanel.c index 2aea59e..9cd1a29 100644 --- a/src/panel/goapanel.c +++ b/src/panel/goapanel.c @@ -26,7 +26,7 @@ #include <glib/gi18n-lib.h> #include <goa/goa.h> -#include <goa/goabackend.h> +#include <goabackend/goabackend.h> #include "goapanel.h" #include "goapanelaccountsmodel.h" @@ -296,7 +296,7 @@ on_info_bar_response (GtkInfoBar *info_bar, NULL, &iter)) { - GoaBackendProvider *provider; + GoaProvider *provider; const gchar *provider_type; GoaAccount *account; GoaObject *object; @@ -310,16 +310,16 @@ on_info_bar_response (GtkInfoBar *info_bar, account = goa_object_peek_account (object); provider_type = goa_account_get_provider_type (account); - provider = goa_backend_provider_get_for_provider_type (provider_type); + provider = goa_provider_get_for_provider_type (provider_type); parent = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel)))); error = NULL; - if (!goa_backend_provider_refresh_account (provider, - panel->client, - object, - parent, - &error)) + if (!goa_provider_refresh_account (provider, + panel->client, + object, + parent, + &error)) { if (!(error->domain == GOA_ERROR && error->code == GOA_ERROR_DIALOG_DISMISSED)) { @@ -381,7 +381,7 @@ show_page_account (GoaPanel *panel, GtkWidget *label; GtkWidget *editable_label; guint row; - GoaBackendProvider *provider; + GoaProvider *provider; GoaAccount *account; GoaGoogleAccount *gaccount; GoaFacebookAccount *fbaccount; @@ -403,7 +403,7 @@ show_page_account (GoaPanel *panel, gaccount = goa_object_peek_google_account (object); fbaccount = goa_object_peek_facebook_account (object); provider_type = goa_account_get_provider_type (account); - provider = goa_backend_provider_get_for_provider_type (provider_type); + provider = goa_provider_get_for_provider_type (provider_type); /* And in with the new */ if (goa_account_get_attention_needed (account)) @@ -436,7 +436,7 @@ show_page_account (GoaPanel *panel, if (provider != NULL) { - s = g_strdup (goa_backend_provider_get_name (provider)); + s = g_strdup (goa_provider_get_name (provider)); } else { @@ -527,7 +527,7 @@ on_toolbar_add_button_clicked (GtkToolButton *button, GtkWidget *combo_box; gint response; GList *providers; - GoaBackendProvider *provider; + GoaProvider *provider; GList *children; GList *l; GoaObject *object; @@ -552,13 +552,13 @@ on_toolbar_add_button_clicked (GtkToolButton *button, label = gtk_label_new (_("Account Type:")); combo_box = gtk_combo_box_text_new (); - providers = goa_backend_provider_get_all (); + providers = goa_provider_get_all (); for (l = providers; l != NULL; l = l->next) { - GoaBackendProvider *provider = GOA_BACKEND_PROVIDER (l->data); + GoaProvider *provider = GOA_PROVIDER (l->data); gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo_box), - goa_backend_provider_get_provider_type (provider), - goa_backend_provider_get_name (provider)); + goa_provider_get_provider_type (provider), + goa_provider_get_name (provider)); } gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0); @@ -589,7 +589,7 @@ on_toolbar_add_button_clicked (GtkToolButton *button, } gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (add_account_button)), add_account_button); - provider = goa_backend_provider_get_for_provider_type (gtk_combo_box_get_active_id (GTK_COMBO_BOX (combo_box))); + provider = goa_provider_get_for_provider_type (gtk_combo_box_get_active_id (GTK_COMBO_BOX (combo_box))); g_assert (provider != NULL); /* Prepare GtkDialog for the provider */ @@ -603,11 +603,11 @@ on_toolbar_add_button_clicked (GtkToolButton *button, g_list_free (children); error = NULL; - object = goa_backend_provider_add_account (provider, - panel->client, - GTK_DIALOG (dialog), - GTK_BOX (vbox), - &error); + object = goa_provider_add_account (provider, + panel->client, + GTK_DIALOG (dialog), + GTK_BOX (vbox), + &error); if (object != NULL) { GtkTreeIter iter; |