/* GoogleAuthenticator.c generated by valac 0.40.4, the Vala compiler
 * generated from GoogleAuthenticator.vala, do not modify */



#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include "shotwell-plugin-common.h"
#include <webkit2/webkit2.h>
#include <libsoup/soup.h>
#include <gio/gio.h>
#include "shotwell-plugin-dev-1.0.h"
#include <glib/gi18n-lib.h>
#include <json-glib/json-glib.h>


#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE (publishing_authenticator_shotwell_google_web_authentication_pane_get_type ())
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, PublishingAuthenticatorShotwellGoogleWebAuthenticationPane))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, PublishingAuthenticatorShotwellGoogleWebAuthenticationPaneClass))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_WEB_AUTHENTICATION_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_WEB_AUTHENTICATION_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, PublishingAuthenticatorShotwellGoogleWebAuthenticationPaneClass))

typedef struct _PublishingAuthenticatorShotwellGoogleWebAuthenticationPane PublishingAuthenticatorShotwellGoogleWebAuthenticationPane;
typedef struct _PublishingAuthenticatorShotwellGoogleWebAuthenticationPaneClass PublishingAuthenticatorShotwellGoogleWebAuthenticationPaneClass;
typedef struct _PublishingAuthenticatorShotwellGoogleWebAuthenticationPanePrivate PublishingAuthenticatorShotwellGoogleWebAuthenticationPanePrivate;
enum  {
	PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_0_PROPERTY,
	PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_NUM_PROPERTIES
};
static GParamSpec* publishing_authenticator_shotwell_google_web_authentication_pane_properties[PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define __vala_SoupURI_free0(var) ((var == NULL) ? NULL : (var = (_vala_SoupURI_free (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
enum  {
	PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_ERROR_SIGNAL,
	PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_AUTHORIZED_SIGNAL,
	PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_NUM_SIGNALS
};
static guint publishing_authenticator_shotwell_google_web_authentication_pane_signals[PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_NUM_SIGNALS] = {0};

#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION (publishing_authenticator_shotwell_google_session_get_type ())
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION, PublishingAuthenticatorShotwellGoogleSession))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION, PublishingAuthenticatorShotwellGoogleSessionClass))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_SESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_SESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION, PublishingAuthenticatorShotwellGoogleSessionClass))

typedef struct _PublishingAuthenticatorShotwellGoogleSession PublishingAuthenticatorShotwellGoogleSession;
typedef struct _PublishingAuthenticatorShotwellGoogleSessionClass PublishingAuthenticatorShotwellGoogleSessionClass;
typedef struct _PublishingAuthenticatorShotwellGoogleSessionPrivate PublishingAuthenticatorShotwellGoogleSessionPrivate;

#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GET_ACCESS_TOKENS_TRANSACTION (publishing_authenticator_shotwell_google_get_access_tokens_transaction_get_type ())
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GET_ACCESS_TOKENS_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GET_ACCESS_TOKENS_TRANSACTION, PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GET_ACCESS_TOKENS_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GET_ACCESS_TOKENS_TRANSACTION, PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionClass))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GET_ACCESS_TOKENS_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GET_ACCESS_TOKENS_TRANSACTION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GET_ACCESS_TOKENS_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GET_ACCESS_TOKENS_TRANSACTION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GET_ACCESS_TOKENS_TRANSACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GET_ACCESS_TOKENS_TRANSACTION, PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionClass))

typedef struct _PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction;
typedef struct _PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionClass PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionClass;
typedef struct _PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionPrivate PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionPrivate;

#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_REFRESH_ACCESS_TOKEN_TRANSACTION (publishing_authenticator_shotwell_google_refresh_access_token_transaction_get_type ())
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REFRESH_ACCESS_TOKEN_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_REFRESH_ACCESS_TOKEN_TRANSACTION, PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REFRESH_ACCESS_TOKEN_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_REFRESH_ACCESS_TOKEN_TRANSACTION, PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionClass))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_REFRESH_ACCESS_TOKEN_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_REFRESH_ACCESS_TOKEN_TRANSACTION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_REFRESH_ACCESS_TOKEN_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_REFRESH_ACCESS_TOKEN_TRANSACTION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REFRESH_ACCESS_TOKEN_TRANSACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_REFRESH_ACCESS_TOKEN_TRANSACTION, PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionClass))

typedef struct _PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction;
typedef struct _PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionClass PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionClass;
typedef struct _PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionPrivate PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionPrivate;

#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_USERNAME_FETCH_TRANSACTION (publishing_authenticator_shotwell_google_username_fetch_transaction_get_type ())
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_USERNAME_FETCH_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_USERNAME_FETCH_TRANSACTION, PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_USERNAME_FETCH_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_USERNAME_FETCH_TRANSACTION, PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionClass))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_USERNAME_FETCH_TRANSACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_USERNAME_FETCH_TRANSACTION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_USERNAME_FETCH_TRANSACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_USERNAME_FETCH_TRANSACTION))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_USERNAME_FETCH_TRANSACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_USERNAME_FETCH_TRANSACTION, PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionClass))

typedef struct _PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction;
typedef struct _PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionClass PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionClass;
typedef struct _PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionPrivate PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionPrivate;

#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE (publishing_authenticator_shotwell_google_google_get_type ())
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogle))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogleClass))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE))
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogleClass))

typedef struct _PublishingAuthenticatorShotwellGoogleGoogle PublishingAuthenticatorShotwellGoogleGoogle;
typedef struct _PublishingAuthenticatorShotwellGoogleGoogleClass PublishingAuthenticatorShotwellGoogleGoogleClass;
typedef struct _PublishingAuthenticatorShotwellGoogleGooglePrivate PublishingAuthenticatorShotwellGoogleGooglePrivate;
enum  {
	PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE_0_PROPERTY,
	PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE_NUM_PROPERTIES
};
static GParamSpec* publishing_authenticator_shotwell_google_google_properties[PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE_NUM_PROPERTIES];
#define _publishing_rest_support_session_unref0(var) ((var == NULL) ? NULL : (var = (publishing_rest_support_session_unref (var), NULL)))
#define _publishing_rest_support_transaction_unref0(var) ((var == NULL) ? NULL : (var = (publishing_rest_support_transaction_unref (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _json_object_unref0(var) ((var == NULL) ? NULL : (var = (json_object_unref (var), NULL)))
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

struct _PublishingAuthenticatorShotwellGoogleWebAuthenticationPane {
	ShotwellPluginsCommonWebAuthenticationPane parent_instance;
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPanePrivate * priv;
};

struct _PublishingAuthenticatorShotwellGoogleWebAuthenticationPaneClass {
	ShotwellPluginsCommonWebAuthenticationPaneClass parent_class;
};

struct _PublishingAuthenticatorShotwellGoogleWebAuthenticationPanePrivate {
	gchar* auth_code;
};

struct _PublishingAuthenticatorShotwellGoogleSession {
	PublishingRESTSupportSession parent_instance;
	PublishingAuthenticatorShotwellGoogleSessionPrivate * priv;
	gchar* access_token;
	gchar* refresh_token;
	gint64 expires_at;
};

struct _PublishingAuthenticatorShotwellGoogleSessionClass {
	PublishingRESTSupportSessionClass parent_class;
};

struct _PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction {
	PublishingRESTSupportTransaction parent_instance;
	PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionPrivate * priv;
};

struct _PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionClass {
	PublishingRESTSupportTransactionClass parent_class;
};

struct _PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction {
	PublishingRESTSupportTransaction parent_instance;
	PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionPrivate * priv;
};

struct _PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionClass {
	PublishingRESTSupportTransactionClass parent_class;
};

struct _PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction {
	PublishingRESTSupportTransaction parent_instance;
	PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionPrivate * priv;
};

struct _PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionClass {
	PublishingRESTSupportTransactionClass parent_class;
};

struct _PublishingAuthenticatorShotwellGoogleGoogle {
	GObject parent_instance;
	PublishingAuthenticatorShotwellGoogleGooglePrivate * priv;
};

struct _PublishingAuthenticatorShotwellGoogleGoogleClass {
	GObjectClass parent_class;
};

struct _PublishingAuthenticatorShotwellGoogleGooglePrivate {
	gchar* scope;
	SpitPublishingPluginHost* host;
	GHashTable* params;
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* web_auth_pane;
	PublishingAuthenticatorShotwellGoogleSession* session;
	gchar* welcome_message;
};


static gpointer publishing_authenticator_shotwell_google_web_authentication_pane_parent_class = NULL;
extern gboolean publishing_authenticator_shotwell_google_web_authentication_pane_cache_dirty;
gboolean publishing_authenticator_shotwell_google_web_authentication_pane_cache_dirty = FALSE;
static gpointer publishing_authenticator_shotwell_google_session_parent_class = NULL;
static gpointer publishing_authenticator_shotwell_google_get_access_tokens_transaction_parent_class = NULL;
static gpointer publishing_authenticator_shotwell_google_refresh_access_token_transaction_parent_class = NULL;
static gpointer publishing_authenticator_shotwell_google_username_fetch_transaction_parent_class = NULL;
static gpointer publishing_authenticator_shotwell_google_google_parent_class = NULL;
static SpitPublishingAuthenticatorIface * publishing_authenticator_shotwell_google_google_spit_publishing_authenticator_parent_iface = NULL;

#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CLIENT_ID "534227538559-hvj2e8bj0vfv2f49r7gvjoq6jibfav67.apps.googleusercontent.c" \
"om"
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REVERSE_CLIENT_ID "com.googleusercontent.apps.534227538559-hvj2e8bj0vfv2f49r7gvjoq6jibfav" \
"67"
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CLIENT_SECRET "pwpzZ7W1TCcD5uIfYCu8sM7x"
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CALLBACK_URI PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REVERSE_CLIENT_ID ":/auth-callback"
GType publishing_authenticator_shotwell_google_web_authentication_pane_get_type (void) G_GNUC_CONST;
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, PublishingAuthenticatorShotwellGoogleWebAuthenticationPanePrivate))
static void publishing_authenticator_shotwell_google_web_authentication_pane_real_constructed (GObject* base);
static void publishing_authenticator_shotwell_google_web_authentication_pane_on_shotwell_auth_request_cb (PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* self,
                                                                                                   WebKitURISchemeRequest* request);
static void _publishing_authenticator_shotwell_google_web_authentication_pane_on_shotwell_auth_request_cb_web_kit_uri_scheme_request_callback (WebKitURISchemeRequest* request,
                                                                                                                                        gpointer self);
static void publishing_authenticator_shotwell_google_web_authentication_pane_real_on_page_load (ShotwellPluginsCommonWebAuthenticationPane* base);
static void _vala_SoupURI_free (SoupURI* self);
static guint8* _vala_array_dup2 (guint8* self,
                          int length);
PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* publishing_authenticator_shotwell_google_web_authentication_pane_new (const gchar* auth_sequence_start_url);
PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* publishing_authenticator_shotwell_google_web_authentication_pane_construct (GType object_type,
                                                                                                                                        const gchar* auth_sequence_start_url);
gboolean publishing_authenticator_shotwell_google_web_authentication_pane_is_cache_dirty (void);
static void publishing_authenticator_shotwell_google_web_authentication_pane_finalize (GObject * obj);
GType publishing_authenticator_shotwell_google_session_get_type (void) G_GNUC_CONST;
static gboolean publishing_authenticator_shotwell_google_session_real_is_authenticated (PublishingRESTSupportSession* base);
void publishing_authenticator_shotwell_google_session_deauthenticate (PublishingAuthenticatorShotwellGoogleSession* self);
PublishingAuthenticatorShotwellGoogleSession* publishing_authenticator_shotwell_google_session_new (void);
PublishingAuthenticatorShotwellGoogleSession* publishing_authenticator_shotwell_google_session_construct (GType object_type);
static void publishing_authenticator_shotwell_google_session_finalize (PublishingRESTSupportSession * obj);
GType publishing_authenticator_shotwell_google_get_access_tokens_transaction_get_type (void) G_GNUC_CONST;
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GET_ACCESS_TOKENS_TRANSACTION_ENDPOINT_URL "https://accounts.google.com/o/oauth2/token"
PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction* publishing_authenticator_shotwell_google_get_access_tokens_transaction_new (PublishingAuthenticatorShotwellGoogleSession* session,
                                                                                                                                             const gchar* auth_code);
PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction* publishing_authenticator_shotwell_google_get_access_tokens_transaction_construct (GType object_type,
                                                                                                                                                   PublishingAuthenticatorShotwellGoogleSession* session,
                                                                                                                                                   const gchar* auth_code);
GType publishing_authenticator_shotwell_google_refresh_access_token_transaction_get_type (void) G_GNUC_CONST;
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REFRESH_ACCESS_TOKEN_TRANSACTION_ENDPOINT_URL "https://accounts.google.com/o/oauth2/token"
PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction* publishing_authenticator_shotwell_google_refresh_access_token_transaction_new (PublishingAuthenticatorShotwellGoogleSession* session);
PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction* publishing_authenticator_shotwell_google_refresh_access_token_transaction_construct (GType object_type,
                                                                                                                                                         PublishingAuthenticatorShotwellGoogleSession* session);
GType publishing_authenticator_shotwell_google_username_fetch_transaction_get_type (void) G_GNUC_CONST;
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_USERNAME_FETCH_TRANSACTION_ENDPOINT_URL "https://www.googleapis.com/oauth2/v1/userinfo"
PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction* publishing_authenticator_shotwell_google_username_fetch_transaction_new (PublishingAuthenticatorShotwellGoogleSession* session);
PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction* publishing_authenticator_shotwell_google_username_fetch_transaction_construct (GType object_type,
                                                                                                                                              PublishingAuthenticatorShotwellGoogleSession* session);
GType publishing_authenticator_shotwell_google_google_get_type (void) G_GNUC_CONST;
#define PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGooglePrivate))
PublishingAuthenticatorShotwellGoogleGoogle* publishing_authenticator_shotwell_google_google_new (const gchar* scope,
                                                                                                  const gchar* welcome_message,
                                                                                                  SpitPublishingPluginHost* host);
PublishingAuthenticatorShotwellGoogleGoogle* publishing_authenticator_shotwell_google_google_construct (GType object_type,
                                                                                                        const gchar* scope,
                                                                                                        const gchar* welcome_message,
                                                                                                        SpitPublishingPluginHost* host);
static void _g_free0_ (gpointer var);
static void _g_variant_unref0_ (gpointer var);
static void publishing_authenticator_shotwell_google_google_real_authenticate (SpitPublishingAuthenticator* base);
static void publishing_authenticator_shotwell_google_google_on_refresh_token_available (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                 const gchar* token);
static void publishing_authenticator_shotwell_google_google_do_exchange_refresh_token_for_access_token (PublishingAuthenticatorShotwellGoogleGoogle* self);
static void publishing_authenticator_shotwell_google_google_do_show_service_welcome_pane (PublishingAuthenticatorShotwellGoogleGoogle* self);
static gboolean publishing_authenticator_shotwell_google_google_real_can_logout (SpitPublishingAuthenticator* base);
static GHashTable* publishing_authenticator_shotwell_google_google_real_get_authentication_parameter (SpitPublishingAuthenticator* base);
static void publishing_authenticator_shotwell_google_google_real_logout (SpitPublishingAuthenticator* base);
static void publishing_authenticator_shotwell_google_google_real_refresh (SpitPublishingAuthenticator* base);
static void publishing_authenticator_shotwell_google_google_do_hosted_web_authentication (PublishingAuthenticatorShotwellGoogleGoogle* self);
static void publishing_authenticator_shotwell_google_google_on_web_auth_pane_authorized (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                  const gchar* auth_code);
static void _publishing_authenticator_shotwell_google_google_on_web_auth_pane_authorized_publishing_authenticator_shotwell_google_web_authentication_pane_authorized (PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* _sender,
                                                                                                                                                               const gchar* auth_code,
                                                                                                                                                               gpointer self);
static void publishing_authenticator_shotwell_google_google_do_get_access_tokens (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                           const gchar* auth_code);
static void publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                    PublishingRESTSupportTransaction* txn);
static void _publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete_publishing_rest_support_transaction_completed (PublishingRESTSupportTransaction* _sender,
                                                                                                                                   gpointer self);
static void publishing_authenticator_shotwell_google_google_on_get_access_tokens_error (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                 PublishingRESTSupportTransaction* txn,
                                                                                 GError* err);
static void _publishing_authenticator_shotwell_google_google_on_get_access_tokens_error_publishing_rest_support_transaction_network_error (PublishingRESTSupportTransaction* _sender,
                                                                                                                                    GError* err,
                                                                                                                                    gpointer self);
static void publishing_authenticator_shotwell_google_google_do_extract_tokens (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                        const gchar* response_body);
static void publishing_authenticator_shotwell_google_google_on_expiry_time_avilable (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                              gint64 abs_time);
static void publishing_authenticator_shotwell_google_google_on_access_token_available (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                const gchar* token);
static void publishing_authenticator_shotwell_google_google_do_fetch_username (PublishingAuthenticatorShotwellGoogleGoogle* self);
static void publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                              PublishingRESTSupportTransaction* txn);
static void _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed_publishing_rest_support_transaction_completed (PublishingRESTSupportTransaction* _sender,
                                                                                                                                             gpointer self);
static void publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                          PublishingRESTSupportTransaction* txn,
                                                                                          GError* err);
static void _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error_publishing_rest_support_transaction_network_error (PublishingRESTSupportTransaction* _sender,
                                                                                                                                             GError* err,
                                                                                                                                             gpointer self);
static void publishing_authenticator_shotwell_google_google_do_extract_username (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                          const gchar* response_body);
static void publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                                    PublishingRESTSupportTransaction* txn);
static void _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed_publishing_rest_support_transaction_completed (PublishingRESTSupportTransaction* _sender,
                                                                                                                                                   gpointer self);
static void publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                                PublishingRESTSupportTransaction* txn,
                                                                                                GError* err);
static void _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error_publishing_rest_support_transaction_network_error (PublishingRESTSupportTransaction* _sender,
                                                                                                                                                   GError* err,
                                                                                                                                                   gpointer self);
static gboolean ___lambda4_ (PublishingAuthenticatorShotwellGoogleGoogle* self);
static gboolean ____lambda4__gsource_func (gpointer self);
static void publishing_authenticator_shotwell_google_google_on_service_welcome_login (PublishingAuthenticatorShotwellGoogleGoogle* self);
static void _publishing_authenticator_shotwell_google_google_on_service_welcome_login_spit_publishing_login_callback (gpointer self);
static void publishing_authenticator_shotwell_google_google_finalize (GObject * obj);


static gpointer
_g_object_ref0 (gpointer self)
{
#line 19 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self ? g_object_ref (self) : NULL;
#line 317 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_web_authentication_pane_on_shotwell_auth_request_cb_web_kit_uri_scheme_request_callback (WebKitURISchemeRequest* request,
                                                                                                                                   gpointer self)
{
#line 20 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_web_authentication_pane_on_shotwell_auth_request_cb ((PublishingAuthenticatorShotwellGoogleWebAuthenticationPane*) self, request);
#line 327 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_web_authentication_pane_real_constructed (GObject* base)
{
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane * self;
	WebKitWebContext* ctx = NULL;
	WebKitWebContext* _tmp0_;
	WebKitWebContext* _tmp1_;
#line 16 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, PublishingAuthenticatorShotwellGoogleWebAuthenticationPane);
#line 17 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	G_OBJECT_CLASS (publishing_authenticator_shotwell_google_web_authentication_pane_parent_class)->constructed (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, SHOTWELL_PLUGINS_COMMON_TYPE_WEB_AUTHENTICATION_PANE, ShotwellPluginsCommonWebAuthenticationPane), G_TYPE_OBJECT, GObject));
#line 19 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = webkit_web_context_get_default ();
#line 19 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = _g_object_ref0 (_tmp0_);
#line 19 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	ctx = _tmp1_;
#line 20 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	webkit_web_context_register_uri_scheme (ctx, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REVERSE_CLIENT_ID, _publishing_authenticator_shotwell_google_web_authentication_pane_on_shotwell_auth_request_cb_web_kit_uri_scheme_request_callback, g_object_ref (self), g_object_unref);
#line 16 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (ctx);
#line 352 "GoogleAuthenticator.c"
}


static void
_vala_SoupURI_free (SoupURI* self)
{
#line 23 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_boxed_free (soup_uri_get_type (), self);
#line 361 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_web_authentication_pane_real_on_page_load (ShotwellPluginsCommonWebAuthenticationPane* base)
{
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane * self;
	SoupURI* uri = NULL;
	WebKitWebView* _tmp0_;
	WebKitWebView* _tmp1_;
	const gchar* _tmp2_;
	SoupURI* _tmp3_;
	SoupURI* _tmp4_;
	gboolean _tmp5_ = FALSE;
	SoupURI* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp9_;
#line 23 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, PublishingAuthenticatorShotwellGoogleWebAuthenticationPane);
#line 24 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = shotwell_plugins_common_web_authentication_pane_get_view (G_TYPE_CHECK_INSTANCE_CAST (self, SHOTWELL_PLUGINS_COMMON_TYPE_WEB_AUTHENTICATION_PANE, ShotwellPluginsCommonWebAuthenticationPane));
#line 24 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = _tmp0_;
#line 24 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = webkit_web_view_get_uri (_tmp1_);
#line 24 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = soup_uri_new (_tmp2_);
#line 24 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = _tmp3_;
#line 24 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (_tmp1_);
#line 24 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	uri = _tmp4_;
#line 25 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp6_ = uri;
#line 25 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp7_ = _tmp6_->scheme;
#line 25 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (g_strcmp0 (_tmp7_, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REVERSE_CLIENT_ID) == 0) {
#line 401 "GoogleAuthenticator.c"
		const gchar* _tmp8_;
#line 25 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp8_ = self->priv->auth_code;
#line 25 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp5_ = _tmp8_ == NULL;
#line 407 "GoogleAuthenticator.c"
	} else {
#line 25 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp5_ = FALSE;
#line 411 "GoogleAuthenticator.c"
	}
#line 25 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (_tmp5_) {
#line 26 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_signal_emit (self, publishing_authenticator_shotwell_google_web_authentication_pane_signals[PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_ERROR_SIGNAL], 0);
#line 417 "GoogleAuthenticator.c"
	}
#line 29 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp9_ = self->priv->auth_code;
#line 29 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (_tmp9_ != NULL) {
#line 423 "GoogleAuthenticator.c"
		const gchar* _tmp10_;
#line 30 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp10_ = self->priv->auth_code;
#line 30 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_signal_emit (self, publishing_authenticator_shotwell_google_web_authentication_pane_signals[PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_AUTHORIZED_SIGNAL], 0, _tmp10_);
#line 429 "GoogleAuthenticator.c"
	}
#line 23 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	__vala_SoupURI_free0 (uri);
#line 433 "GoogleAuthenticator.c"
}


static guint8*
string_get_data (const gchar* self,
                 int* result_length1)
{
	guint8* result;
	guint8* res = NULL;
	gint res_length1;
	gint _res_size_;
	gint _tmp0_;
	gint _tmp1_;
	gint _tmp2_;
	guint8* _tmp3_;
	gint _tmp3__length1;
	guint8* _tmp4_;
	gint _tmp4__length1;
#line 1442 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1443 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	res = (guint8*) self;
#line 1443 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	res_length1 = -1;
#line 1443 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_res_size_ = res_length1;
#line 1444 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_tmp0_ = strlen (self);
#line 1444 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_tmp1_ = _tmp0_;
#line 1444 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	res_length1 = (gint) _tmp1_;
#line 1444 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_tmp2_ = res_length1;
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_tmp3_ = res;
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_tmp3__length1 = res_length1;
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_tmp4_ = _tmp3_;
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	_tmp4__length1 = _tmp3__length1;
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	if (result_length1) {
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
		*result_length1 = _tmp4__length1;
#line 480 "GoogleAuthenticator.c"
	}
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	result = _tmp4_;
#line 1445 "/usr/share/vala-0.40/vapi/glib-2.0.vapi"
	return result;
#line 486 "GoogleAuthenticator.c"
}


static guint8*
_vala_array_dup2 (guint8* self,
                  int length)
{
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return g_memdup (self, length * sizeof (guint8));
#line 496 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_web_authentication_pane_on_shotwell_auth_request_cb (PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* self,
                                                                                              WebKitURISchemeRequest* request)
{
	SoupURI* uri = NULL;
	const gchar* _tmp0_;
	SoupURI* _tmp1_;
	const gchar* _tmp2_;
	GHashTable* form_data = NULL;
	const gchar* _tmp3_;
	GHashTable* _tmp4_;
	gconstpointer _tmp5_;
	gchar* _tmp6_;
	gchar* response = NULL;
	gchar* _tmp7_;
	GMemoryInputStream* mins = NULL;
	guint8* _tmp8_;
	gint _tmp8__length1;
	guint8* _tmp9_;
	gint _tmp9__length1;
	guint8* _tmp10_;
	gint _tmp10__length1;
	GMemoryInputStream* _tmp11_;
#line 34 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_WEB_AUTHENTICATION_PANE (self));
#line 34 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (WEBKIT_IS_URI_SCHEME_REQUEST (request));
#line 35 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = webkit_uri_scheme_request_get_uri (request);
#line 35 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = soup_uri_new (_tmp0_);
#line 35 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	uri = _tmp1_;
#line 36 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = webkit_uri_scheme_request_get_uri (request);
#line 36 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:36: URI: %s", _tmp2_);
#line 37 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = uri->query;
#line 37 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = soup_form_decode (_tmp3_);
#line 37 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	form_data = _tmp4_;
#line 38 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp5_ = g_hash_table_lookup (form_data, "code");
#line 38 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp6_ = g_strdup ((const gchar*) _tmp5_);
#line 38 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->priv->auth_code);
#line 38 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->auth_code = _tmp6_;
#line 40 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp7_ = g_strdup ("");
#line 40 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	response = _tmp7_;
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp8_ = string_get_data (response, &_tmp8__length1);
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp9_ = _tmp8_;
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp9__length1 = _tmp8__length1;
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp10_ = (_tmp9_ != NULL) ? _vala_array_dup2 (_tmp9_, _tmp9__length1) : ((gpointer) _tmp9_);
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp10__length1 = _tmp9__length1;
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp11_ = (GMemoryInputStream*) g_memory_input_stream_new_from_data (_tmp10_, _tmp10__length1, NULL);
#line 41 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	mins = _tmp11_;
#line 42 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	webkit_uri_scheme_request_finish (request, G_TYPE_CHECK_INSTANCE_CAST (mins, g_input_stream_get_type (), GInputStream), (gint64) -1, "text/plain");
#line 34 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (mins);
#line 34 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (response);
#line 34 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_hash_table_unref0 (form_data);
#line 34 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	__vala_SoupURI_free0 (uri);
#line 579 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleWebAuthenticationPane*
publishing_authenticator_shotwell_google_web_authentication_pane_construct (GType object_type,
                                                                            const gchar* auth_sequence_start_url)
{
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane * self = NULL;
#line 47 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (auth_sequence_start_url != NULL, NULL);
#line 48 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = (PublishingAuthenticatorShotwellGoogleWebAuthenticationPane*) g_object_new (object_type, "login-uri", auth_sequence_start_url, NULL);
#line 47 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self;
#line 594 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleWebAuthenticationPane*
publishing_authenticator_shotwell_google_web_authentication_pane_new (const gchar* auth_sequence_start_url)
{
#line 47 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return publishing_authenticator_shotwell_google_web_authentication_pane_construct (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, auth_sequence_start_url);
#line 603 "GoogleAuthenticator.c"
}


gboolean
publishing_authenticator_shotwell_google_web_authentication_pane_is_cache_dirty (void)
{
	gboolean result = FALSE;
	gboolean _tmp0_;
#line 52 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = publishing_authenticator_shotwell_google_web_authentication_pane_cache_dirty;
#line 52 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	result = _tmp0_;
#line 52 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return result;
#line 618 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_web_authentication_pane_class_init (PublishingAuthenticatorShotwellGoogleWebAuthenticationPaneClass * klass)
{
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_web_authentication_pane_parent_class = g_type_class_peek_parent (klass);
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_type_class_add_private (klass, sizeof (PublishingAuthenticatorShotwellGoogleWebAuthenticationPanePrivate));
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	((GObjectClass *) klass)->constructed = (void (*) (GObject *)) publishing_authenticator_shotwell_google_web_authentication_pane_real_constructed;
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	((ShotwellPluginsCommonWebAuthenticationPaneClass *) klass)->on_page_load = (void (*) (ShotwellPluginsCommonWebAuthenticationPane *)) publishing_authenticator_shotwell_google_web_authentication_pane_real_on_page_load;
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	G_OBJECT_CLASS (klass)->finalize = publishing_authenticator_shotwell_google_web_authentication_pane_finalize;
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_web_authentication_pane_signals[PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_ERROR_SIGNAL] = g_signal_new ("error", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_web_authentication_pane_signals[PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_AUTHORIZED_SIGNAL] = g_signal_new ("authorized", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
#line 639 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_web_authentication_pane_instance_init (PublishingAuthenticatorShotwellGoogleWebAuthenticationPane * self)
{
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv = PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_WEB_AUTHENTICATION_PANE_GET_PRIVATE (self);
#line 12 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->auth_code = NULL;
#line 650 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_web_authentication_pane_finalize (GObject * obj)
{
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane * self;
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, PublishingAuthenticatorShotwellGoogleWebAuthenticationPane);
#line 12 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->priv->auth_code);
#line 10 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	G_OBJECT_CLASS (publishing_authenticator_shotwell_google_web_authentication_pane_parent_class)->finalize (obj);
#line 664 "GoogleAuthenticator.c"
}


GType
publishing_authenticator_shotwell_google_web_authentication_pane_get_type (void)
{
	static volatile gsize publishing_authenticator_shotwell_google_web_authentication_pane_type_id__volatile = 0;
	if (g_once_init_enter (&publishing_authenticator_shotwell_google_web_authentication_pane_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PublishingAuthenticatorShotwellGoogleWebAuthenticationPaneClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) publishing_authenticator_shotwell_google_web_authentication_pane_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PublishingAuthenticatorShotwellGoogleWebAuthenticationPane), 0, (GInstanceInitFunc) publishing_authenticator_shotwell_google_web_authentication_pane_instance_init, NULL };
		GType publishing_authenticator_shotwell_google_web_authentication_pane_type_id;
		publishing_authenticator_shotwell_google_web_authentication_pane_type_id = g_type_register_static (SHOTWELL_PLUGINS_COMMON_TYPE_WEB_AUTHENTICATION_PANE, "PublishingAuthenticatorShotwellGoogleWebAuthenticationPane", &g_define_type_info, 0);
		g_once_init_leave (&publishing_authenticator_shotwell_google_web_authentication_pane_type_id__volatile, publishing_authenticator_shotwell_google_web_authentication_pane_type_id);
	}
	return publishing_authenticator_shotwell_google_web_authentication_pane_type_id__volatile;
}


static gboolean
publishing_authenticator_shotwell_google_session_real_is_authenticated (PublishingRESTSupportSession* base)
{
	PublishingAuthenticatorShotwellGoogleSession * self;
	gboolean result = FALSE;
	const gchar* _tmp0_;
#line 61 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION, PublishingAuthenticatorShotwellGoogleSession);
#line 62 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->access_token;
#line 62 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	result = _tmp0_ != NULL;
#line 62 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return result;
#line 696 "GoogleAuthenticator.c"
}


void
publishing_authenticator_shotwell_google_session_deauthenticate (PublishingAuthenticatorShotwellGoogleSession* self)
{
#line 65 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_SESSION (self));
#line 66 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->access_token);
#line 66 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->access_token = NULL;
#line 67 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->refresh_token);
#line 67 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->refresh_token = NULL;
#line 68 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->expires_at = (gint64) -1;
#line 715 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleSession*
publishing_authenticator_shotwell_google_session_construct (GType object_type)
{
	PublishingAuthenticatorShotwellGoogleSession* self = NULL;
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = (PublishingAuthenticatorShotwellGoogleSession*) publishing_rest_support_session_construct (object_type, NULL);
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self;
#line 727 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleSession*
publishing_authenticator_shotwell_google_session_new (void)
{
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return publishing_authenticator_shotwell_google_session_construct (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION);
#line 736 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_session_class_init (PublishingAuthenticatorShotwellGoogleSessionClass * klass)
{
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_session_parent_class = g_type_class_peek_parent (klass);
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	((PublishingRESTSupportSessionClass *) klass)->finalize = publishing_authenticator_shotwell_google_session_finalize;
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	((PublishingRESTSupportSessionClass *) klass)->is_authenticated = (gboolean (*) (PublishingRESTSupportSession *)) publishing_authenticator_shotwell_google_session_real_is_authenticated;
#line 749 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_session_instance_init (PublishingAuthenticatorShotwellGoogleSession * self)
{
#line 57 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->access_token = NULL;
#line 58 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->refresh_token = NULL;
#line 59 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->expires_at = (gint64) -1;
#line 762 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_session_finalize (PublishingRESTSupportSession * obj)
{
	PublishingAuthenticatorShotwellGoogleSession * self;
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_SESSION, PublishingAuthenticatorShotwellGoogleSession);
#line 57 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->access_token);
#line 58 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->refresh_token);
#line 56 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	PUBLISHING_REST_SUPPORT_SESSION_CLASS (publishing_authenticator_shotwell_google_session_parent_class)->finalize (obj);
#line 778 "GoogleAuthenticator.c"
}


GType
publishing_authenticator_shotwell_google_session_get_type (void)
{
	static volatile gsize publishing_authenticator_shotwell_google_session_type_id__volatile = 0;
	if (g_once_init_enter (&publishing_authenticator_shotwell_google_session_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PublishingAuthenticatorShotwellGoogleSessionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) publishing_authenticator_shotwell_google_session_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PublishingAuthenticatorShotwellGoogleSession), 0, (GInstanceInitFunc) publishing_authenticator_shotwell_google_session_instance_init, NULL };
		GType publishing_authenticator_shotwell_google_session_type_id;
		publishing_authenticator_shotwell_google_session_type_id = g_type_register_static (PUBLISHING_REST_SUPPORT_TYPE_SESSION, "PublishingAuthenticatorShotwellGoogleSession", &g_define_type_info, 0);
		g_once_init_leave (&publishing_authenticator_shotwell_google_session_type_id__volatile, publishing_authenticator_shotwell_google_session_type_id);
	}
	return publishing_authenticator_shotwell_google_session_type_id__volatile;
}


PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction*
publishing_authenticator_shotwell_google_get_access_tokens_transaction_construct (GType object_type,
                                                                                  PublishingAuthenticatorShotwellGoogleSession* session,
                                                                                  const gchar* auth_code)
{
	PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction* self = NULL;
#line 75 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_SESSION (session), NULL);
#line 75 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (auth_code != NULL, NULL);
#line 76 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = (PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction*) publishing_rest_support_transaction_construct_with_endpoint_url (object_type, G_TYPE_CHECK_INSTANCE_CAST (session, PUBLISHING_REST_SUPPORT_TYPE_SESSION, PublishingRESTSupportSession), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GET_ACCESS_TOKENS_TRANSACTION_ENDPOINT_URL, PUBLISHING_REST_SUPPORT_HTTP_METHOD_POST);
#line 78 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "code", auth_code);
#line 79 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "client_id", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CLIENT_ID);
#line 80 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "client_secret", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CLIENT_SECRET);
#line 81 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "redirect_uri", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CALLBACK_URI);
#line 82 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "grant_type", "authorization_code");
#line 75 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self;
#line 820 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction*
publishing_authenticator_shotwell_google_get_access_tokens_transaction_new (PublishingAuthenticatorShotwellGoogleSession* session,
                                                                            const gchar* auth_code)
{
#line 75 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return publishing_authenticator_shotwell_google_get_access_tokens_transaction_construct (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GET_ACCESS_TOKENS_TRANSACTION, session, auth_code);
#line 830 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_get_access_tokens_transaction_class_init (PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionClass * klass)
{
#line 72 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_get_access_tokens_transaction_parent_class = g_type_class_peek_parent (klass);
#line 839 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_get_access_tokens_transaction_instance_init (PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction * self)
{
}


GType
publishing_authenticator_shotwell_google_get_access_tokens_transaction_get_type (void)
{
	static volatile gsize publishing_authenticator_shotwell_google_get_access_tokens_transaction_type_id__volatile = 0;
	if (g_once_init_enter (&publishing_authenticator_shotwell_google_get_access_tokens_transaction_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PublishingAuthenticatorShotwellGoogleGetAccessTokensTransactionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) publishing_authenticator_shotwell_google_get_access_tokens_transaction_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction), 0, (GInstanceInitFunc) publishing_authenticator_shotwell_google_get_access_tokens_transaction_instance_init, NULL };
		GType publishing_authenticator_shotwell_google_get_access_tokens_transaction_type_id;
		publishing_authenticator_shotwell_google_get_access_tokens_transaction_type_id = g_type_register_static (PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, "PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction", &g_define_type_info, 0);
		g_once_init_leave (&publishing_authenticator_shotwell_google_get_access_tokens_transaction_type_id__volatile, publishing_authenticator_shotwell_google_get_access_tokens_transaction_type_id);
	}
	return publishing_authenticator_shotwell_google_get_access_tokens_transaction_type_id__volatile;
}


PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction*
publishing_authenticator_shotwell_google_refresh_access_token_transaction_construct (GType object_type,
                                                                                     PublishingAuthenticatorShotwellGoogleSession* session)
{
	PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction* self = NULL;
	const gchar* _tmp0_;
#line 89 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_SESSION (session), NULL);
#line 90 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = (PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction*) publishing_rest_support_transaction_construct_with_endpoint_url (object_type, G_TYPE_CHECK_INSTANCE_CAST (session, PUBLISHING_REST_SUPPORT_TYPE_SESSION, PublishingRESTSupportSession), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_REFRESH_ACCESS_TOKEN_TRANSACTION_ENDPOINT_URL, PUBLISHING_REST_SUPPORT_HTTP_METHOD_POST);
#line 92 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "client_id", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CLIENT_ID);
#line 93 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "client_secret", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CLIENT_SECRET);
#line 94 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = session->refresh_token;
#line 94 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "refresh_token", _tmp0_);
#line 95 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_argument (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "grant_type", "refresh_token");
#line 89 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self;
#line 885 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction*
publishing_authenticator_shotwell_google_refresh_access_token_transaction_new (PublishingAuthenticatorShotwellGoogleSession* session)
{
#line 89 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return publishing_authenticator_shotwell_google_refresh_access_token_transaction_construct (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_REFRESH_ACCESS_TOKEN_TRANSACTION, session);
#line 894 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_refresh_access_token_transaction_class_init (PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionClass * klass)
{
#line 86 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_refresh_access_token_transaction_parent_class = g_type_class_peek_parent (klass);
#line 903 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_refresh_access_token_transaction_instance_init (PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction * self)
{
}


GType
publishing_authenticator_shotwell_google_refresh_access_token_transaction_get_type (void)
{
	static volatile gsize publishing_authenticator_shotwell_google_refresh_access_token_transaction_type_id__volatile = 0;
	if (g_once_init_enter (&publishing_authenticator_shotwell_google_refresh_access_token_transaction_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransactionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) publishing_authenticator_shotwell_google_refresh_access_token_transaction_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction), 0, (GInstanceInitFunc) publishing_authenticator_shotwell_google_refresh_access_token_transaction_instance_init, NULL };
		GType publishing_authenticator_shotwell_google_refresh_access_token_transaction_type_id;
		publishing_authenticator_shotwell_google_refresh_access_token_transaction_type_id = g_type_register_static (PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, "PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction", &g_define_type_info, 0);
		g_once_init_leave (&publishing_authenticator_shotwell_google_refresh_access_token_transaction_type_id__volatile, publishing_authenticator_shotwell_google_refresh_access_token_transaction_type_id);
	}
	return publishing_authenticator_shotwell_google_refresh_access_token_transaction_type_id__volatile;
}


PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction*
publishing_authenticator_shotwell_google_username_fetch_transaction_construct (GType object_type,
                                                                               PublishingAuthenticatorShotwellGoogleSession* session)
{
	PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction* self = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
#line 101 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_SESSION (session), NULL);
#line 102 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = (PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction*) publishing_rest_support_transaction_construct_with_endpoint_url (object_type, G_TYPE_CHECK_INSTANCE_CAST (session, PUBLISHING_REST_SUPPORT_TYPE_SESSION, PublishingRESTSupportSession), PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_USERNAME_FETCH_TRANSACTION_ENDPOINT_URL, PUBLISHING_REST_SUPPORT_HTTP_METHOD_GET);
#line 103 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = session->access_token;
#line 103 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = g_strconcat ("Bearer ", _tmp0_, NULL);
#line 103 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = _tmp1_;
#line 103 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_rest_support_transaction_add_header (G_TYPE_CHECK_INSTANCE_CAST (self, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "Authorization", _tmp2_);
#line 103 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp2_);
#line 101 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self;
#line 951 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction*
publishing_authenticator_shotwell_google_username_fetch_transaction_new (PublishingAuthenticatorShotwellGoogleSession* session)
{
#line 101 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return publishing_authenticator_shotwell_google_username_fetch_transaction_construct (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_USERNAME_FETCH_TRANSACTION, session);
#line 960 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_username_fetch_transaction_class_init (PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionClass * klass)
{
#line 99 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_username_fetch_transaction_parent_class = g_type_class_peek_parent (klass);
#line 969 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_username_fetch_transaction_instance_init (PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction * self)
{
}


GType
publishing_authenticator_shotwell_google_username_fetch_transaction_get_type (void)
{
	static volatile gsize publishing_authenticator_shotwell_google_username_fetch_transaction_type_id__volatile = 0;
	if (g_once_init_enter (&publishing_authenticator_shotwell_google_username_fetch_transaction_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PublishingAuthenticatorShotwellGoogleUsernameFetchTransactionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) publishing_authenticator_shotwell_google_username_fetch_transaction_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction), 0, (GInstanceInitFunc) publishing_authenticator_shotwell_google_username_fetch_transaction_instance_init, NULL };
		GType publishing_authenticator_shotwell_google_username_fetch_transaction_type_id;
		publishing_authenticator_shotwell_google_username_fetch_transaction_type_id = g_type_register_static (PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, "PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction", &g_define_type_info, 0);
		g_once_init_leave (&publishing_authenticator_shotwell_google_username_fetch_transaction_type_id__volatile, publishing_authenticator_shotwell_google_username_fetch_transaction_type_id);
	}
	return publishing_authenticator_shotwell_google_username_fetch_transaction_type_id__volatile;
}


static void
_g_free0_ (gpointer var)
{
#line 119 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	var = (g_free (var), NULL);
#line 998 "GoogleAuthenticator.c"
}


static void
_g_variant_unref0_ (gpointer var)
{
#line 119 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	(var == NULL) ? NULL : (var = (g_variant_unref (var), NULL));
#line 1007 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleGoogle*
publishing_authenticator_shotwell_google_google_construct (GType object_type,
                                                           const gchar* scope,
                                                           const gchar* welcome_message,
                                                           SpitPublishingPluginHost* host)
{
	PublishingAuthenticatorShotwellGoogleGoogle * self = NULL;
	SpitPublishingPluginHost* _tmp0_;
	GHashFunc _tmp1_;
	GEqualFunc _tmp2_;
	GHashTable* _tmp3_;
	gchar* _tmp4_;
	PublishingAuthenticatorShotwellGoogleSession* _tmp5_;
	gchar* _tmp6_;
#line 115 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (scope != NULL, NULL);
#line 115 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (welcome_message != NULL, NULL);
#line 115 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_val_if_fail (SPIT_PUBLISHING_IS_PLUGIN_HOST (host), NULL);
#line 115 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = (PublishingAuthenticatorShotwellGoogleGoogle*) g_object_new (object_type, NULL);
#line 118 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = _g_object_ref0 (host);
#line 118 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (self->priv->host);
#line 118 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->host = _tmp0_;
#line 119 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = g_str_hash;
#line 119 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = g_str_equal;
#line 119 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = g_hash_table_new_full (_tmp1_, _tmp2_, _g_free0_, _g_variant_unref0_);
#line 119 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_hash_table_unref0 (self->priv->params);
#line 119 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->params = _tmp3_;
#line 120 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = g_strdup (scope);
#line 120 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->priv->scope);
#line 120 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->scope = _tmp4_;
#line 121 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp5_ = publishing_authenticator_shotwell_google_session_new ();
#line 121 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_publishing_rest_support_session_unref0 (self->priv->session);
#line 121 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->session = _tmp5_;
#line 122 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp6_ = g_strdup (welcome_message);
#line 122 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->priv->welcome_message);
#line 122 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->welcome_message = _tmp6_;
#line 115 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self;
#line 1069 "GoogleAuthenticator.c"
}


PublishingAuthenticatorShotwellGoogleGoogle*
publishing_authenticator_shotwell_google_google_new (const gchar* scope,
                                                     const gchar* welcome_message,
                                                     SpitPublishingPluginHost* host)
{
#line 115 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return publishing_authenticator_shotwell_google_google_construct (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, scope, welcome_message, host);
#line 1080 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_real_authenticate (SpitPublishingAuthenticator* base)
{
	PublishingAuthenticatorShotwellGoogleGoogle * self;
	gchar* refresh_token = NULL;
	SpitPublishingPluginHost* _tmp0_;
	gchar* _tmp1_;
	gboolean _tmp2_ = FALSE;
	const gchar* _tmp3_;
#line 125 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogle);
#line 126 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->host;
#line 126 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = spit_host_interface_get_config_string (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, SPIT_TYPE_HOST_INTERFACE, SpitHostInterface), "refresh_token", NULL);
#line 126 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	refresh_token = _tmp1_;
#line 127 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = refresh_token;
#line 127 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (_tmp3_ != NULL) {
#line 1105 "GoogleAuthenticator.c"
		const gchar* _tmp4_;
#line 127 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp4_ = refresh_token;
#line 127 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp2_ = g_strcmp0 (_tmp4_, "") != 0;
#line 1111 "GoogleAuthenticator.c"
	} else {
#line 127 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp2_ = FALSE;
#line 1115 "GoogleAuthenticator.c"
	}
#line 127 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (_tmp2_) {
#line 1119 "GoogleAuthenticator.c"
		const gchar* _tmp5_;
#line 128 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp5_ = refresh_token;
#line 128 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		publishing_authenticator_shotwell_google_google_on_refresh_token_available (self, _tmp5_);
#line 129 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		publishing_authenticator_shotwell_google_google_do_exchange_refresh_token_for_access_token (self);
#line 130 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_free0 (refresh_token);
#line 130 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 1131 "GoogleAuthenticator.c"
	}
#line 134 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (publishing_authenticator_shotwell_google_web_authentication_pane_is_cache_dirty ()) {
#line 1135 "GoogleAuthenticator.c"
		SpitPublishingPluginHost* _tmp6_;
		SpitPublishingPluginHost* _tmp7_;
#line 135 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp6_ = self->priv->host;
#line 135 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_set_service_locked (_tmp6_, FALSE);
#line 137 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp7_ = self->priv->host;
#line 137 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_install_static_message_pane (_tmp7_, _ ("You have already logged in and out of a Google service during this Sho" \
"twell session.\n" \
"\n" \
"To continue publishing to Google services, quit and restart Shotwell, " \
"then try publishing again."), SPIT_PUBLISHING_PLUGIN_HOST_BUTTON_MODE_CANCEL);
#line 1146 "GoogleAuthenticator.c"
	} else {
#line 139 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		publishing_authenticator_shotwell_google_google_do_show_service_welcome_pane (self);
#line 1150 "GoogleAuthenticator.c"
	}
#line 125 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (refresh_token);
#line 1154 "GoogleAuthenticator.c"
}


static gboolean
publishing_authenticator_shotwell_google_google_real_can_logout (SpitPublishingAuthenticator* base)
{
	PublishingAuthenticatorShotwellGoogleGoogle * self;
	gboolean result = FALSE;
#line 143 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogle);
#line 144 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	result = TRUE;
#line 144 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return result;
#line 1169 "GoogleAuthenticator.c"
}


static gpointer
_g_hash_table_ref0 (gpointer self)
{
#line 148 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self ? g_hash_table_ref (self) : NULL;
#line 1178 "GoogleAuthenticator.c"
}


static GHashTable*
publishing_authenticator_shotwell_google_google_real_get_authentication_parameter (SpitPublishingAuthenticator* base)
{
	PublishingAuthenticatorShotwellGoogleGoogle * self;
	GHashTable* result = NULL;
	GHashTable* _tmp0_;
	GHashTable* _tmp1_;
#line 147 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogle);
#line 148 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->params;
#line 148 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = _g_hash_table_ref0 (_tmp0_);
#line 148 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	result = _tmp1_;
#line 148 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return result;
#line 1199 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_real_logout (SpitPublishingAuthenticator* base)
{
	PublishingAuthenticatorShotwellGoogleGoogle * self;
	PublishingAuthenticatorShotwellGoogleSession* _tmp0_;
	SpitPublishingPluginHost* _tmp1_;
#line 151 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogle);
#line 152 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->session;
#line 152 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_session_deauthenticate (_tmp0_);
#line 153 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = self->priv->host;
#line 153 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_host_interface_set_config_string (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, SPIT_TYPE_HOST_INTERFACE, SpitHostInterface), "refresh_token", "");
#line 1219 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_real_refresh (SpitPublishingAuthenticator* base)
{
	PublishingAuthenticatorShotwellGoogleGoogle * self;
#line 156 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogle);
#line 1229 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_web_auth_pane_authorized_publishing_authenticator_shotwell_google_web_authentication_pane_authorized (PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* _sender,
                                                                                                                                                          const gchar* auth_code,
                                                                                                                                                          gpointer self)
{
#line 174 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_web_auth_pane_authorized ((PublishingAuthenticatorShotwellGoogleGoogle*) self, auth_code);
#line 1240 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_do_hosted_web_authentication (PublishingAuthenticatorShotwellGoogleGoogle* self)
{
	gchar* user_authorization_url = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* _tmp27_;
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* _tmp28_;
	SpitPublishingPluginHost* _tmp29_;
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* _tmp30_;
#line 160 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 161 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:161: ACTION: running OAuth authentication flo" \
"w in hosted web pane.");
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = soup_uri_encode (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CALLBACK_URI, NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = _tmp0_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = g_strconcat ("https://accounts.google.com/o/oauth2/auth?" "response_type=code&" "client_id=" PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_OAUTH_CLIENT_ID "&" "redirect_uri=", _tmp1_, NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = _tmp2_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = g_strconcat (_tmp3_, "&", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp5_ = _tmp4_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp6_ = g_strconcat (_tmp5_, "scope=", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp7_ = _tmp6_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp8_ = self->priv->scope;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp9_ = soup_uri_encode (_tmp8_, NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp10_ = _tmp9_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp11_ = g_strconcat (_tmp7_, _tmp10_, NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp12_ = _tmp11_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp13_ = g_strconcat (_tmp12_, "+", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp14_ = _tmp13_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp15_ = soup_uri_encode ("https://www.googleapis.com/auth/userinfo.profile", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp16_ = _tmp15_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp17_ = g_strconcat (_tmp14_, _tmp16_, NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp18_ = _tmp17_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp19_ = g_strconcat (_tmp18_, "&", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp20_ = _tmp19_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp21_ = g_strconcat (_tmp20_, "state=connect&", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp22_ = _tmp21_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp23_ = g_strconcat (_tmp22_, "access_type=offline&", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp24_ = _tmp23_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp25_ = g_strconcat (_tmp24_, "approval_prompt=force", NULL);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp26_ = _tmp25_;
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp24_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp22_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp20_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp18_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp16_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp14_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp12_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp10_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp7_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp5_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp3_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp1_);
#line 163 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	user_authorization_url = _tmp26_;
#line 173 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp27_ = publishing_authenticator_shotwell_google_web_authentication_pane_new (user_authorization_url);
#line 173 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (self->priv->web_auth_pane);
#line 173 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->web_auth_pane = _tmp27_;
#line 174 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp28_ = self->priv->web_auth_pane;
#line 174 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_connect_object (_tmp28_, "authorized", (GCallback) _publishing_authenticator_shotwell_google_google_on_web_auth_pane_authorized_publishing_authenticator_shotwell_google_web_authentication_pane_authorized, self, 0);
#line 176 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp29_ = self->priv->host;
#line 176 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp30_ = self->priv->web_auth_pane;
#line 176 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_install_dialog_pane (_tmp29_, G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, SPIT_PUBLISHING_TYPE_DIALOG_PANE, SpitPublishingDialogPane), SPIT_PUBLISHING_PLUGIN_HOST_BUTTON_MODE_CANCEL);
#line 160 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (user_authorization_url);
#line 1381 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_web_auth_pane_authorized (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                             const gchar* auth_code)
{
	PublishingAuthenticatorShotwellGoogleWebAuthenticationPane* _tmp0_;
	guint _tmp1_;
	const gchar* _tmp2_;
#line 179 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 179 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (auth_code != NULL);
#line 180 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->web_auth_pane;
#line 180 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("authorized", PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_WEB_AUTHENTICATION_PANE, &_tmp1_, NULL, FALSE);
#line 180 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (_tmp0_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_web_auth_pane_authorized_publishing_authenticator_shotwell_google_web_authentication_pane_authorized, self);
#line 182 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = self->priv->scope;
#line 182 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:182: EVENT: user authorized scope %s with aut" \
"h_code %s", _tmp2_, auth_code);
#line 184 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_do_get_access_tokens (self, auth_code);
#line 1408 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete_publishing_rest_support_transaction_completed (PublishingRESTSupportTransaction* _sender,
                                                                                                                              gpointer self)
{
#line 193 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete ((PublishingAuthenticatorShotwellGoogleGoogle*) self, _sender);
#line 1418 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_get_access_tokens_error_publishing_rest_support_transaction_network_error (PublishingRESTSupportTransaction* _sender,
                                                                                                                               GError* err,
                                                                                                                               gpointer self)
{
#line 194 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_get_access_tokens_error ((PublishingAuthenticatorShotwellGoogleGoogle*) self, _sender, err);
#line 1429 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_do_get_access_tokens (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                      const gchar* auth_code)
{
	SpitPublishingPluginHost* _tmp0_;
	PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction* tokens_txn = NULL;
	PublishingAuthenticatorShotwellGoogleSession* _tmp1_;
	PublishingAuthenticatorShotwellGoogleGetAccessTokensTransaction* _tmp2_;
	GError * _inner_error_ = NULL;
#line 187 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 187 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (auth_code != NULL);
#line 188 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:188: ACTION: exchanging authorization code fo" \
"r access & refresh tokens");
#line 190 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->host;
#line 190 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_install_login_wait_pane (_tmp0_);
#line 192 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = self->priv->session;
#line 192 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = publishing_authenticator_shotwell_google_get_access_tokens_transaction_new (_tmp1_, auth_code);
#line 192 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	tokens_txn = _tmp2_;
#line 193 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (tokens_txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "completed", (GCallback) _publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete_publishing_rest_support_transaction_completed, self, 0);
#line 194 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (tokens_txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "network-error", (GCallback) _publishing_authenticator_shotwell_google_google_on_get_access_tokens_error_publishing_rest_support_transaction_network_error, self, 0);
#line 1462 "GoogleAuthenticator.c"
	{
#line 197 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		publishing_rest_support_transaction_execute (G_TYPE_CHECK_INSTANCE_CAST (tokens_txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), &_inner_error_);
#line 197 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 197 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			if (_inner_error_->domain == SPIT_PUBLISHING_PUBLISHING_ERROR) {
#line 1470 "GoogleAuthenticator.c"
				goto __catch3_spit_publishing_publishing_error;
			}
#line 197 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_publishing_rest_support_transaction_unref0 (tokens_txn);
#line 197 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 197 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_clear_error (&_inner_error_);
#line 197 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			return;
#line 1481 "GoogleAuthenticator.c"
		}
	}
	goto __finally3;
	__catch3_spit_publishing_publishing_error:
	{
		GError* err = NULL;
		SpitPublishingPluginHost* _tmp3_;
		GError* _tmp4_;
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		err = _inner_error_;
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_inner_error_ = NULL;
#line 199 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp3_ = self->priv->host;
#line 199 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp4_ = err;
#line 199 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_post_error (_tmp3_, _tmp4_);
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (err);
#line 1502 "GoogleAuthenticator.c"
	}
	__finally3:
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_publishing_rest_support_transaction_unref0 (tokens_txn);
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_clear_error (&_inner_error_);
#line 196 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 1515 "GoogleAuthenticator.c"
	}
#line 187 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_publishing_rest_support_transaction_unref0 (tokens_txn);
#line 1519 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                               PublishingRESTSupportTransaction* txn)
{
	guint _tmp0_;
	guint _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
#line 203 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 203 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_REST_SUPPORT_IS_TRANSACTION (txn));
#line 204 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("completed", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp0_, NULL, FALSE);
#line 204 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete_publishing_rest_support_transaction_completed, self);
#line 205 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("network-error", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp1_, NULL, FALSE);
#line 205 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_get_access_tokens_error_publishing_rest_support_transaction_network_error, self);
#line 207 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:207: %s", "EVENT: network transaction to exchange authorization code for access t" \
"okens " "completed successfully.");
#line 210 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = publishing_rest_support_transaction_get_response (txn);
#line 210 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = _tmp2_;
#line 210 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_do_extract_tokens (self, _tmp3_);
#line 210 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp3_);
#line 1553 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_get_access_tokens_error (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                            PublishingRESTSupportTransaction* txn,
                                                                            GError* err)
{
	guint _tmp0_;
	guint _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	SpitPublishingPluginHost* _tmp4_;
#line 213 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 213 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_REST_SUPPORT_IS_TRANSACTION (txn));
#line 215 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("completed", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp0_, NULL, FALSE);
#line 215 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_get_access_tokens_complete_publishing_rest_support_transaction_completed, self);
#line 216 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("network-error", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp1_, NULL, FALSE);
#line 216 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_get_access_tokens_error_publishing_rest_support_transaction_network_error, self);
#line 218 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = publishing_rest_support_transaction_get_response (txn);
#line 218 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = _tmp2_;
#line 218 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("EVENT: network transaction to exchange authorization code for access t" \
"okens " "failed; response = '%s'", _tmp3_);
#line 218 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp3_);
#line 221 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = self->priv->host;
#line 221 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_post_error (_tmp4_, err);
#line 1591 "GoogleAuthenticator.c"
}


static gpointer
_json_object_ref0 (gpointer self)
{
#line 237 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return self ? json_object_ref (self) : NULL;
#line 1600 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_do_extract_tokens (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                   const gchar* response_body)
{
	JsonParser* parser = NULL;
	JsonParser* _tmp0_;
	JsonObject* response_obj = NULL;
	JsonParser* _tmp9_;
	JsonNode* _tmp10_;
	JsonObject* _tmp11_;
	JsonObject* _tmp12_;
	gboolean _tmp13_ = FALSE;
	JsonObject* _tmp14_;
	JsonObject* _tmp19_;
	JsonObject* _tmp23_;
	JsonObject* _tmp29_;
	GError * _inner_error_ = NULL;
#line 224 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 224 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (response_body != NULL);
#line 225 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:225: ACTION: extracting OAuth tokens from bod" \
"y of server response");
#line 227 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = json_parser_new ();
#line 227 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	parser = _tmp0_;
#line 1631 "GoogleAuthenticator.c"
	{
		JsonParser* _tmp1_;
#line 230 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp1_ = parser;
#line 230 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		json_parser_load_from_data (_tmp1_, response_body, (gssize) -1, &_inner_error_);
#line 230 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1640 "GoogleAuthenticator.c"
			goto __catch4_g_error;
		}
	}
	goto __finally4;
	__catch4_g_error:
	{
		GError* err = NULL;
		SpitPublishingPluginHost* _tmp2_;
		GError* _tmp3_;
		const gchar* _tmp4_;
		gchar* _tmp5_;
		gchar* _tmp6_;
		GError* _tmp7_;
		GError* _tmp8_;
#line 229 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		err = _inner_error_;
#line 229 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_inner_error_ = NULL;
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp2_ = self->priv->host;
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp3_ = err;
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp4_ = _tmp3_->message;
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp5_ = g_strconcat ("Couldn't parse JSON response: ", _tmp4_, NULL);
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp6_ = _tmp5_;
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp7_ = g_error_new_literal (SPIT_PUBLISHING_PUBLISHING_ERROR, SPIT_PUBLISHING_PUBLISHING_ERROR_MALFORMED_RESPONSE, _tmp6_);
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp8_ = _tmp7_;
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_post_error (_tmp2_, _tmp8_);
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (_tmp8_);
#line 232 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_free0 (_tmp6_);
#line 234 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (err);
#line 234 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_object_unref0 (parser);
#line 234 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 1685 "GoogleAuthenticator.c"
	}
	__finally4:
#line 229 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 229 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_object_unref0 (parser);
#line 229 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 229 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_clear_error (&_inner_error_);
#line 229 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 1698 "GoogleAuthenticator.c"
	}
#line 237 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp9_ = parser;
#line 237 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp10_ = json_parser_get_root (_tmp9_);
#line 237 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp11_ = json_node_get_object (_tmp10_);
#line 237 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp12_ = _json_object_ref0 (_tmp11_);
#line 237 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	response_obj = _tmp12_;
#line 239 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp14_ = response_obj;
#line 239 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (!json_object_has_member (_tmp14_, "access_token")) {
#line 1714 "GoogleAuthenticator.c"
		JsonObject* _tmp15_;
#line 239 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp15_ = response_obj;
#line 239 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp13_ = !json_object_has_member (_tmp15_, "refresh_token");
#line 1720 "GoogleAuthenticator.c"
	} else {
#line 239 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp13_ = FALSE;
#line 1724 "GoogleAuthenticator.c"
	}
#line 239 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (_tmp13_) {
#line 1728 "GoogleAuthenticator.c"
		SpitPublishingPluginHost* _tmp16_;
		GError* _tmp17_;
		GError* _tmp18_;
#line 240 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp16_ = self->priv->host;
#line 240 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp17_ = g_error_new_literal (SPIT_PUBLISHING_PUBLISHING_ERROR, SPIT_PUBLISHING_PUBLISHING_ERROR_MALFORMED_RESPONSE, "neither access_token nor refresh_token not present in server response");
#line 240 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp18_ = _tmp17_;
#line 240 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_post_error (_tmp16_, _tmp18_);
#line 240 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (_tmp18_);
#line 242 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_json_object_unref0 (response_obj);
#line 242 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_object_unref0 (parser);
#line 242 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 1748 "GoogleAuthenticator.c"
	}
#line 245 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp19_ = response_obj;
#line 245 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (json_object_has_member (_tmp19_, "expires_in")) {
#line 1754 "GoogleAuthenticator.c"
		gint64 duration = 0LL;
		JsonObject* _tmp20_;
		gint64 abs_time = 0LL;
		gint64 _tmp21_;
		gint64 _tmp22_;
#line 246 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp20_ = response_obj;
#line 246 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		duration = json_object_get_int_member (_tmp20_, "expires_in");
#line 247 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp21_ = duration;
#line 247 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		abs_time = g_get_real_time () + ((_tmp21_ * 1000L) * 1000L);
#line 248 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp22_ = abs_time;
#line 248 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		publishing_authenticator_shotwell_google_google_on_expiry_time_avilable (self, _tmp22_);
#line 1772 "GoogleAuthenticator.c"
	}
#line 251 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp23_ = response_obj;
#line 251 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (json_object_has_member (_tmp23_, "refresh_token")) {
#line 1778 "GoogleAuthenticator.c"
		gchar* refresh_token = NULL;
		JsonObject* _tmp24_;
		const gchar* _tmp25_;
		gchar* _tmp26_;
		const gchar* _tmp27_;
#line 252 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp24_ = response_obj;
#line 252 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp25_ = json_object_get_string_member (_tmp24_, "refresh_token");
#line 252 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp26_ = g_strdup (_tmp25_);
#line 252 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		refresh_token = _tmp26_;
#line 254 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp27_ = refresh_token;
#line 254 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (g_strcmp0 (_tmp27_, "") != 0) {
#line 1796 "GoogleAuthenticator.c"
			const gchar* _tmp28_;
#line 255 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp28_ = refresh_token;
#line 255 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			publishing_authenticator_shotwell_google_google_on_refresh_token_available (self, _tmp28_);
#line 1802 "GoogleAuthenticator.c"
		}
#line 251 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_free0 (refresh_token);
#line 1806 "GoogleAuthenticator.c"
	}
#line 258 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp29_ = response_obj;
#line 258 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (json_object_has_member (_tmp29_, "access_token")) {
#line 1812 "GoogleAuthenticator.c"
		gchar* access_token = NULL;
		JsonObject* _tmp30_;
		const gchar* _tmp31_;
		gchar* _tmp32_;
		const gchar* _tmp33_;
#line 259 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp30_ = response_obj;
#line 259 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp31_ = json_object_get_string_member (_tmp30_, "access_token");
#line 259 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp32_ = g_strdup (_tmp31_);
#line 259 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		access_token = _tmp32_;
#line 261 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp33_ = access_token;
#line 261 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (g_strcmp0 (_tmp33_, "") != 0) {
#line 1830 "GoogleAuthenticator.c"
			const gchar* _tmp34_;
#line 262 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp34_ = access_token;
#line 262 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			publishing_authenticator_shotwell_google_google_on_access_token_available (self, _tmp34_);
#line 1836 "GoogleAuthenticator.c"
		}
#line 258 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_free0 (access_token);
#line 1840 "GoogleAuthenticator.c"
	}
#line 224 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_json_object_unref0 (response_obj);
#line 224 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (parser);
#line 1846 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_refresh_token_available (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                            const gchar* token)
{
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	GVariant* _tmp2_;
	PublishingAuthenticatorShotwellGoogleSession* _tmp3_;
	gchar* _tmp4_;
#line 266 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 266 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (token != NULL);
#line 267 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:267: EVENT: an OAuth refresh token has become" \
" available; token = '%s'.", token);
#line 268 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->params;
#line 268 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = g_strdup ("RefreshToken");
#line 268 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = g_variant_new_string (token);
#line 268 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_variant_ref_sink (_tmp2_);
#line 268 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
#line 270 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = self->priv->session;
#line 270 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = g_strdup (token);
#line 270 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp3_->refresh_token);
#line 270 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_->refresh_token = _tmp4_;
#line 1883 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_expiry_time_avilable (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                         gint64 abs_time)
{
	PublishingAuthenticatorShotwellGoogleSession* _tmp0_;
	GHashTable* _tmp1_;
	gchar* _tmp2_;
	GVariant* _tmp3_;
#line 273 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 274 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("EVENT: an OAuth access token expiry time became available; time = %'" G_GINT64_FORMAT "'.", abs_time);
#line 277 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->session;
#line 277 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_->expires_at = abs_time;
#line 278 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = self->priv->params;
#line 278 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = g_strdup ("ExpiryTime");
#line 278 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = g_variant_new_int64 (abs_time);
#line 278 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_variant_ref_sink (_tmp3_);
#line 278 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_hash_table_insert (_tmp1_, _tmp2_, _tmp3_);
#line 1913 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_access_token_available (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                           const gchar* token)
{
	PublishingAuthenticatorShotwellGoogleSession* _tmp0_;
	gchar* _tmp1_;
	GHashTable* _tmp2_;
	gchar* _tmp3_;
	GVariant* _tmp4_;
#line 282 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 282 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (token != NULL);
#line 283 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:283: EVENT: an OAuth access token has become " \
"available; token = '%s'.", token);
#line 285 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->session;
#line 285 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = g_strdup (token);
#line 285 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp0_->access_token);
#line 285 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_->access_token = _tmp1_;
#line 286 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = self->priv->params;
#line 286 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = g_strdup ("AccessToken");
#line 286 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = g_variant_new_string (token);
#line 286 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_variant_ref_sink (_tmp4_);
#line 286 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_hash_table_insert (_tmp2_, _tmp3_, _tmp4_);
#line 288 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_do_fetch_username (self);
#line 1952 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed_publishing_rest_support_transaction_completed (PublishingRESTSupportTransaction* _sender,
                                                                                                                                        gpointer self)
{
#line 298 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed ((PublishingAuthenticatorShotwellGoogleGoogle*) self, _sender);
#line 1962 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error_publishing_rest_support_transaction_network_error (PublishingRESTSupportTransaction* _sender,
                                                                                                                                        GError* err,
                                                                                                                                        gpointer self)
{
#line 299 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error ((PublishingAuthenticatorShotwellGoogleGoogle*) self, _sender, err);
#line 1973 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_do_fetch_username (PublishingAuthenticatorShotwellGoogleGoogle* self)
{
	SpitPublishingPluginHost* _tmp0_;
	SpitPublishingPluginHost* _tmp1_;
	PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction* txn = NULL;
	PublishingAuthenticatorShotwellGoogleSession* _tmp2_;
	PublishingAuthenticatorShotwellGoogleUsernameFetchTransaction* _tmp3_;
	GError * _inner_error_ = NULL;
#line 291 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 292 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:292: ACTION: running network transaction to f" \
"etch username.");
#line 294 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->host;
#line 294 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_install_login_wait_pane (_tmp0_);
#line 295 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = self->priv->host;
#line 295 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_set_service_locked (_tmp1_, TRUE);
#line 297 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = self->priv->session;
#line 297 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = publishing_authenticator_shotwell_google_username_fetch_transaction_new (_tmp2_);
#line 297 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	txn = _tmp3_;
#line 298 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "completed", (GCallback) _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed_publishing_rest_support_transaction_completed, self, 0);
#line 299 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "network-error", (GCallback) _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error_publishing_rest_support_transaction_network_error, self, 0);
#line 2008 "GoogleAuthenticator.c"
	{
#line 302 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		publishing_rest_support_transaction_execute (G_TYPE_CHECK_INSTANCE_CAST (txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), &_inner_error_);
#line 302 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2014 "GoogleAuthenticator.c"
			goto __catch5_g_error;
		}
	}
	goto __finally5;
	__catch5_g_error:
	{
		GError* err = NULL;
		SpitPublishingPluginHost* _tmp4_;
		GError* _tmp5_;
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		err = _inner_error_;
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_inner_error_ = NULL;
#line 304 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp4_ = self->priv->host;
#line 304 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp5_ = err;
#line 304 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_post_error (_tmp4_, _tmp5_);
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (err);
#line 2036 "GoogleAuthenticator.c"
	}
	__finally5:
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_publishing_rest_support_transaction_unref0 (txn);
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_clear_error (&_inner_error_);
#line 301 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 2049 "GoogleAuthenticator.c"
	}
#line 291 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_publishing_rest_support_transaction_unref0 (txn);
#line 2053 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                         PublishingRESTSupportTransaction* txn)
{
	guint _tmp0_;
	guint _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
#line 308 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 308 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_REST_SUPPORT_IS_TRANSACTION (txn));
#line 309 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("completed", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp0_, NULL, FALSE);
#line 309 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed_publishing_rest_support_transaction_completed, self);
#line 310 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("network-error", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp1_, NULL, FALSE);
#line 310 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error_publishing_rest_support_transaction_network_error, self);
#line 312 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:312: EVENT: username fetch transaction comple" \
"ted successfully.");
#line 314 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = publishing_rest_support_transaction_get_response (txn);
#line 314 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = _tmp2_;
#line 314 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_do_extract_username (self, _tmp3_);
#line 314 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp3_);
#line 2087 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                     PublishingRESTSupportTransaction* txn,
                                                                                     GError* err)
{
	guint _tmp0_;
	guint _tmp1_;
	SpitPublishingPluginHost* _tmp2_;
#line 317 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 317 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_REST_SUPPORT_IS_TRANSACTION (txn));
#line 319 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("completed", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp0_, NULL, FALSE);
#line 319 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_completed_publishing_rest_support_transaction_completed, self);
#line 320 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("network-error", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp1_, NULL, FALSE);
#line 320 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_fetch_username_transaction_error_publishing_rest_support_transaction_network_error, self);
#line 322 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:322: EVENT: username fetch transaction caused" \
" a network error");
#line 324 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = self->priv->host;
#line 324 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_post_error (_tmp2_, err);
#line 2117 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_do_extract_username (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                     const gchar* response_body)
{
	JsonParser* parser = NULL;
	JsonParser* _tmp0_;
	JsonObject* response_obj = NULL;
	JsonParser* _tmp9_;
	JsonNode* _tmp10_;
	JsonObject* _tmp11_;
	JsonObject* _tmp12_;
	JsonObject* _tmp13_;
	JsonObject* _tmp22_;
	PublishingAuthenticatorShotwellGoogleSession* _tmp31_;
	SpitPublishingPluginHost* _tmp32_;
	PublishingAuthenticatorShotwellGoogleSession* _tmp33_;
	const gchar* _tmp34_;
	GError * _inner_error_ = NULL;
#line 327 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 327 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (response_body != NULL);
#line 328 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:328: ACTION: extracting username from body of" \
" server response");
#line 330 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = json_parser_new ();
#line 330 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	parser = _tmp0_;
#line 2149 "GoogleAuthenticator.c"
	{
		JsonParser* _tmp1_;
#line 333 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp1_ = parser;
#line 333 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		json_parser_load_from_data (_tmp1_, response_body, (gssize) -1, &_inner_error_);
#line 333 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 2158 "GoogleAuthenticator.c"
			goto __catch6_g_error;
		}
	}
	goto __finally6;
	__catch6_g_error:
	{
		GError* err = NULL;
		SpitPublishingPluginHost* _tmp2_;
		GError* _tmp3_;
		const gchar* _tmp4_;
		gchar* _tmp5_;
		gchar* _tmp6_;
		GError* _tmp7_;
		GError* _tmp8_;
#line 332 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		err = _inner_error_;
#line 332 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_inner_error_ = NULL;
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp2_ = self->priv->host;
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp3_ = err;
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp4_ = _tmp3_->message;
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp5_ = g_strconcat ("Couldn't parse JSON response: ", _tmp4_, NULL);
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp6_ = _tmp5_;
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp7_ = g_error_new_literal (SPIT_PUBLISHING_PUBLISHING_ERROR, SPIT_PUBLISHING_PUBLISHING_ERROR_MALFORMED_RESPONSE, _tmp6_);
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp8_ = _tmp7_;
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_post_error (_tmp2_, _tmp8_);
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (_tmp8_);
#line 335 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_free0 (_tmp6_);
#line 337 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (err);
#line 337 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_object_unref0 (parser);
#line 337 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 2203 "GoogleAuthenticator.c"
	}
	__finally6:
#line 332 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 332 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_object_unref0 (parser);
#line 332 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 332 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_clear_error (&_inner_error_);
#line 332 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 2216 "GoogleAuthenticator.c"
	}
#line 340 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp9_ = parser;
#line 340 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp10_ = json_parser_get_root (_tmp9_);
#line 340 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp11_ = json_node_get_object (_tmp10_);
#line 340 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp12_ = _json_object_ref0 (_tmp11_);
#line 340 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	response_obj = _tmp12_;
#line 342 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp13_ = response_obj;
#line 342 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (json_object_has_member (_tmp13_, "name")) {
#line 2232 "GoogleAuthenticator.c"
		gchar* username = NULL;
		JsonObject* _tmp14_;
		const gchar* _tmp15_;
		gchar* _tmp16_;
		const gchar* _tmp17_;
#line 343 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp14_ = response_obj;
#line 343 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp15_ = json_object_get_string_member (_tmp14_, "name");
#line 343 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp16_ = g_strdup (_tmp15_);
#line 343 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		username = _tmp16_;
#line 345 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp17_ = username;
#line 345 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (g_strcmp0 (_tmp17_, "") != 0) {
#line 2250 "GoogleAuthenticator.c"
			GHashTable* _tmp18_;
			gchar* _tmp19_;
			const gchar* _tmp20_;
			GVariant* _tmp21_;
#line 346 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp18_ = self->priv->params;
#line 346 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp19_ = g_strdup ("UserName");
#line 346 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp20_ = username;
#line 346 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp21_ = g_variant_new_string (_tmp20_);
#line 346 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_variant_ref_sink (_tmp21_);
#line 346 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_hash_table_insert (_tmp18_, _tmp19_, _tmp21_);
#line 2267 "GoogleAuthenticator.c"
		}
#line 342 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_free0 (username);
#line 2271 "GoogleAuthenticator.c"
	}
#line 349 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp22_ = response_obj;
#line 349 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (json_object_has_member (_tmp22_, "access_token")) {
#line 2277 "GoogleAuthenticator.c"
		gchar* access_token = NULL;
		JsonObject* _tmp23_;
		const gchar* _tmp24_;
		gchar* _tmp25_;
		const gchar* _tmp26_;
#line 350 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp23_ = response_obj;
#line 350 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp24_ = json_object_get_string_member (_tmp23_, "access_token");
#line 350 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp25_ = g_strdup (_tmp24_);
#line 350 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		access_token = _tmp25_;
#line 352 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp26_ = access_token;
#line 352 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (g_strcmp0 (_tmp26_, "") != 0) {
#line 2295 "GoogleAuthenticator.c"
			GHashTable* _tmp27_;
			gchar* _tmp28_;
			const gchar* _tmp29_;
			GVariant* _tmp30_;
#line 353 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp27_ = self->priv->params;
#line 353 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp28_ = g_strdup ("AccessToken");
#line 353 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp29_ = access_token;
#line 353 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_tmp30_ = g_variant_new_string (_tmp29_);
#line 353 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_variant_ref_sink (_tmp30_);
#line 353 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_hash_table_insert (_tmp27_, _tmp28_, _tmp30_);
#line 2312 "GoogleAuthenticator.c"
		}
#line 349 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_free0 (access_token);
#line 2316 "GoogleAuthenticator.c"
	}
#line 358 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp31_ = self->priv->session;
#line 358 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_vala_assert (publishing_rest_support_session_is_authenticated (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, PUBLISHING_REST_SUPPORT_TYPE_SESSION, PublishingRESTSupportSession)), "session.is_authenticated()");
#line 359 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp32_ = self->priv->host;
#line 359 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp33_ = self->priv->session;
#line 359 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp34_ = _tmp33_->refresh_token;
#line 359 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_host_interface_set_config_string (G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, SPIT_TYPE_HOST_INTERFACE, SpitHostInterface), "refresh_token", _tmp34_);
#line 361 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_emit_by_name (G_TYPE_CHECK_INSTANCE_CAST (self, SPIT_PUBLISHING_TYPE_AUTHENTICATOR, SpitPublishingAuthenticator), "authenticated");
#line 327 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_json_object_unref0 (response_obj);
#line 327 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (parser);
#line 2336 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed_publishing_rest_support_transaction_completed (PublishingRESTSupportTransaction* _sender,
                                                                                                                                              gpointer self)
{
#line 372 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed ((PublishingAuthenticatorShotwellGoogleGoogle*) self, _sender);
#line 2346 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error_publishing_rest_support_transaction_network_error (PublishingRESTSupportTransaction* _sender,
                                                                                                                                              GError* err,
                                                                                                                                              gpointer self)
{
#line 373 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error ((PublishingAuthenticatorShotwellGoogleGoogle*) self, _sender, err);
#line 2357 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_do_exchange_refresh_token_for_access_token (PublishingAuthenticatorShotwellGoogleGoogle* self)
{
	SpitPublishingPluginHost* _tmp0_;
	PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction* txn = NULL;
	PublishingAuthenticatorShotwellGoogleSession* _tmp1_;
	PublishingAuthenticatorShotwellGoogleRefreshAccessTokenTransaction* _tmp2_;
	GError * _inner_error_ = NULL;
#line 365 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 366 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:366: ACTION: exchanging OAuth refresh token f" \
"or OAuth access token.");
#line 368 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->host;
#line 368 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_install_login_wait_pane (_tmp0_);
#line 370 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = self->priv->session;
#line 370 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = publishing_authenticator_shotwell_google_refresh_access_token_transaction_new (_tmp1_);
#line 370 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	txn = _tmp2_;
#line 372 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "completed", (GCallback) _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed_publishing_rest_support_transaction_completed, self, 0);
#line 373 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), "network-error", (GCallback) _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error_publishing_rest_support_transaction_network_error, self, 0);
#line 2387 "GoogleAuthenticator.c"
	{
#line 376 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		publishing_rest_support_transaction_execute (G_TYPE_CHECK_INSTANCE_CAST (txn, PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, PublishingRESTSupportTransaction), &_inner_error_);
#line 376 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 376 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			if (_inner_error_->domain == SPIT_PUBLISHING_PUBLISHING_ERROR) {
#line 2395 "GoogleAuthenticator.c"
				goto __catch7_spit_publishing_publishing_error;
			}
#line 376 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			_publishing_rest_support_transaction_unref0 (txn);
#line 376 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 376 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			g_clear_error (&_inner_error_);
#line 376 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
			return;
#line 2406 "GoogleAuthenticator.c"
		}
	}
	goto __finally7;
	__catch7_spit_publishing_publishing_error:
	{
		GError* err = NULL;
		SpitPublishingPluginHost* _tmp3_;
		GError* _tmp4_;
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		err = _inner_error_;
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_inner_error_ = NULL;
#line 378 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp3_ = self->priv->host;
#line 378 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp4_ = err;
#line 378 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_publishing_plugin_host_post_error (_tmp3_, _tmp4_);
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_g_error_free0 (err);
#line 2427 "GoogleAuthenticator.c"
	}
	__finally7:
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_publishing_rest_support_transaction_unref0 (txn);
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_clear_error (&_inner_error_);
#line 375 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 2440 "GoogleAuthenticator.c"
	}
#line 365 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_publishing_rest_support_transaction_unref0 (txn);
#line 2444 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                               PublishingRESTSupportTransaction* txn)
{
	guint _tmp0_;
	guint _tmp1_;
	PublishingAuthenticatorShotwellGoogleSession* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
#line 382 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 382 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_REST_SUPPORT_IS_TRANSACTION (txn));
#line 384 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("completed", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp0_, NULL, FALSE);
#line 384 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed_publishing_rest_support_transaction_completed, self);
#line 385 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("network-error", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp1_, NULL, FALSE);
#line 385 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error_publishing_rest_support_transaction_network_error, self);
#line 387 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:387: EVENT: refresh access token transaction " \
"completed successfully.");
#line 389 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = self->priv->session;
#line 389 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (publishing_rest_support_session_is_authenticated (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, PUBLISHING_REST_SUPPORT_TYPE_SESSION, PublishingRESTSupportSession))) {
#line 390 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 2477 "GoogleAuthenticator.c"
	}
#line 392 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp3_ = publishing_rest_support_transaction_get_response (txn);
#line 392 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp4_ = _tmp3_;
#line 392 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_do_extract_tokens (self, _tmp4_);
#line 392 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (_tmp4_);
#line 2487 "GoogleAuthenticator.c"
}


static gboolean
___lambda4_ (PublishingAuthenticatorShotwellGoogleGoogle* self)
{
	gboolean result = FALSE;
#line 408 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_authenticator_authenticate (G_TYPE_CHECK_INSTANCE_CAST (self, SPIT_PUBLISHING_TYPE_AUTHENTICATOR, SpitPublishingAuthenticator));
#line 408 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	result = FALSE;
#line 408 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return result;
#line 2501 "GoogleAuthenticator.c"
}


static gboolean
____lambda4__gsource_func (gpointer self)
{
	gboolean result;
	result = ___lambda4_ ((PublishingAuthenticatorShotwellGoogleGoogle*) self);
#line 408 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	return result;
#line 2512 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error (PublishingAuthenticatorShotwellGoogleGoogle* self,
                                                                                           PublishingRESTSupportTransaction* txn,
                                                                                           GError* err)
{
	guint _tmp0_;
	guint _tmp1_;
	PublishingAuthenticatorShotwellGoogleSession* _tmp2_;
	gboolean _tmp3_ = FALSE;
	SpitPublishingPluginHost* _tmp5_;
#line 395 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 395 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_REST_SUPPORT_IS_TRANSACTION (txn));
#line 397 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("completed", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp0_, NULL, FALSE);
#line 397 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_completed_publishing_rest_support_transaction_completed, self);
#line 398 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_parse_name ("network-error", PUBLISHING_REST_SUPPORT_TYPE_TRANSACTION, &_tmp1_, NULL, FALSE);
#line 398 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_signal_handlers_disconnect_matched (txn, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _publishing_authenticator_shotwell_google_google_on_refresh_access_token_transaction_error_publishing_rest_support_transaction_network_error, self);
#line 400 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:400: EVENT: refresh access token transaction " \
"caused a network error.");
#line 402 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp2_ = self->priv->session;
#line 402 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (publishing_rest_support_session_is_authenticated (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, PUBLISHING_REST_SUPPORT_TYPE_SESSION, PublishingRESTSupportSession))) {
#line 403 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		return;
#line 2546 "GoogleAuthenticator.c"
	}
#line 404 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (publishing_rest_support_transaction_get_status_code (txn) == ((guint) SOUP_STATUS_BAD_REQUEST)) {
#line 404 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp3_ = TRUE;
#line 2552 "GoogleAuthenticator.c"
	} else {
#line 405 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp3_ = publishing_rest_support_transaction_get_status_code (txn) == ((guint) SOUP_STATUS_UNAUTHORIZED);
#line 2556 "GoogleAuthenticator.c"
	}
#line 404 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	if (_tmp3_) {
#line 2560 "GoogleAuthenticator.c"
		SpitPublishingPluginHost* _tmp4_;
#line 407 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		_tmp4_ = self->priv->host;
#line 407 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		spit_host_interface_set_config_string (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, SPIT_TYPE_HOST_INTERFACE, SpitHostInterface), "refresh_token", "");
#line 408 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
		g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ____lambda4__gsource_func, g_object_ref (self), g_object_unref);
#line 2568 "GoogleAuthenticator.c"
	}
#line 411 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp5_ = self->priv->host;
#line 411 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_post_error (_tmp5_, err);
#line 2574 "GoogleAuthenticator.c"
}


static void
_publishing_authenticator_shotwell_google_google_on_service_welcome_login_spit_publishing_login_callback (gpointer self)
{
#line 417 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_on_service_welcome_login ((PublishingAuthenticatorShotwellGoogleGoogle*) self);
#line 2583 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_do_show_service_welcome_pane (PublishingAuthenticatorShotwellGoogleGoogle* self)
{
	SpitPublishingPluginHost* _tmp0_;
	const gchar* _tmp1_;
#line 414 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 415 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:415: ACTION: showing service welcome pane.");
#line 417 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp0_ = self->priv->host;
#line 417 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_tmp1_ = self->priv->welcome_message;
#line 417 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	spit_publishing_plugin_host_install_welcome_pane (_tmp0_, _tmp1_, _publishing_authenticator_shotwell_google_google_on_service_welcome_login_spit_publishing_login_callback, self);
#line 2602 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_on_service_welcome_login (PublishingAuthenticatorShotwellGoogleGoogle* self)
{
#line 420 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_return_if_fail (PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_IS_GOOGLE (self));
#line 421 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_debug ("GoogleAuthenticator.vala:421: EVENT: user clicked 'Login' in welcome p" \
"ane.");
#line 423 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_do_hosted_web_authentication (self);
#line 2615 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_class_init (PublishingAuthenticatorShotwellGoogleGoogleClass * klass)
{
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_parent_class = g_type_class_peek_parent (klass);
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	g_type_class_add_private (klass, sizeof (PublishingAuthenticatorShotwellGoogleGooglePrivate));
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	G_OBJECT_CLASS (klass)->finalize = publishing_authenticator_shotwell_google_google_finalize;
#line 2628 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_spit_publishing_authenticator_interface_init (SpitPublishingAuthenticatorIface * iface)
{
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	publishing_authenticator_shotwell_google_google_spit_publishing_authenticator_parent_iface = g_type_interface_peek_parent (iface);
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	iface->authenticate = (void (*) (SpitPublishingAuthenticator *)) publishing_authenticator_shotwell_google_google_real_authenticate;
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	iface->can_logout = (gboolean (*) (SpitPublishingAuthenticator *)) publishing_authenticator_shotwell_google_google_real_can_logout;
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	iface->get_authentication_parameter = (GHashTable* (*) (SpitPublishingAuthenticator *)) publishing_authenticator_shotwell_google_google_real_get_authentication_parameter;
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	iface->logout = (void (*) (SpitPublishingAuthenticator *)) publishing_authenticator_shotwell_google_google_real_logout;
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	iface->refresh = (void (*) (SpitPublishingAuthenticator *)) publishing_authenticator_shotwell_google_google_real_refresh;
#line 2647 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_instance_init (PublishingAuthenticatorShotwellGoogleGoogle * self)
{
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv = PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_GOOGLE_GET_PRIVATE (self);
#line 108 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->scope = NULL;
#line 109 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->host = NULL;
#line 110 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->params = NULL;
#line 111 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->web_auth_pane = NULL;
#line 112 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->session = NULL;
#line 113 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self->priv->welcome_message = NULL;
#line 2668 "GoogleAuthenticator.c"
}


static void
publishing_authenticator_shotwell_google_google_finalize (GObject * obj)
{
	PublishingAuthenticatorShotwellGoogleGoogle * self;
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PUBLISHING_AUTHENTICATOR_SHOTWELL_GOOGLE_TYPE_GOOGLE, PublishingAuthenticatorShotwellGoogleGoogle);
#line 108 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->priv->scope);
#line 109 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (self->priv->host);
#line 110 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_hash_table_unref0 (self->priv->params);
#line 111 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_object_unref0 (self->priv->web_auth_pane);
#line 112 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_publishing_rest_support_session_unref0 (self->priv->session);
#line 113 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	_g_free0 (self->priv->welcome_message);
#line 107 "/home/jens/Source/shotwell/plugins/authenticator/shotwell/GoogleAuthenticator.vala"
	G_OBJECT_CLASS (publishing_authenticator_shotwell_google_google_parent_class)->finalize (obj);
#line 2692 "GoogleAuthenticator.c"
}


GType
publishing_authenticator_shotwell_google_google_get_type (void)
{
	static volatile gsize publishing_authenticator_shotwell_google_google_type_id__volatile = 0;
	if (g_once_init_enter (&publishing_authenticator_shotwell_google_google_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (PublishingAuthenticatorShotwellGoogleGoogleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) publishing_authenticator_shotwell_google_google_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PublishingAuthenticatorShotwellGoogleGoogle), 0, (GInstanceInitFunc) publishing_authenticator_shotwell_google_google_instance_init, NULL };
		static const GInterfaceInfo spit_publishing_authenticator_info = { (GInterfaceInitFunc) publishing_authenticator_shotwell_google_google_spit_publishing_authenticator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType publishing_authenticator_shotwell_google_google_type_id;
		publishing_authenticator_shotwell_google_google_type_id = g_type_register_static (G_TYPE_OBJECT, "PublishingAuthenticatorShotwellGoogleGoogle", &g_define_type_info, 0);
		g_type_add_interface_static (publishing_authenticator_shotwell_google_google_type_id, SPIT_PUBLISHING_TYPE_AUTHENTICATOR, &spit_publishing_authenticator_info);
		g_once_init_leave (&publishing_authenticator_shotwell_google_google_type_id__volatile, publishing_authenticator_shotwell_google_google_type_id);
	}
	return publishing_authenticator_shotwell_google_google_type_id__volatile;
}