[arch-commits] Commit in gnome-online-accounts/repos (12 files)

Jan de Groot jgc at nymeria.archlinux.org
Wed Sep 18 21:59:16 UTC 2013


    Date: Wednesday, September 18, 2013 @ 23:59:16
  Author: jgc
Revision: 194581

archrelease: copy trunk to gnome-unstable-i686, gnome-unstable-x86_64

Added:
  gnome-online-accounts/repos/gnome-unstable-i686/
  gnome-online-accounts/repos/gnome-unstable-i686/PKGBUILD
    (from rev 194580, gnome-online-accounts/trunk/PKGBUILD)
  gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-1.patch
    (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch)
  gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-2.patch
    (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch)
  gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-3.patch
    (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch)
  gnome-online-accounts/repos/gnome-unstable-i686/gnome-online-accounts.install
    (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install)
  gnome-online-accounts/repos/gnome-unstable-x86_64/
  gnome-online-accounts/repos/gnome-unstable-x86_64/PKGBUILD
    (from rev 194580, gnome-online-accounts/trunk/PKGBUILD)
  gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-1.patch
    (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch)
  gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-2.patch
    (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch)
  gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-3.patch
    (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch)
  gnome-online-accounts/repos/gnome-unstable-x86_64/gnome-online-accounts.install
    (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install)

--------------------------------------------------------------+
 gnome-unstable-i686/PKGBUILD                                 |   29 
 gnome-unstable-i686/drop-google-password-interface-1.patch   |   39 +
 gnome-unstable-i686/drop-google-password-interface-2.patch   |   74 ++
 gnome-unstable-i686/drop-google-password-interface-3.patch   |  296 ++++++++++
 gnome-unstable-i686/gnome-online-accounts.install            |   11 
 gnome-unstable-x86_64/PKGBUILD                               |   29 
 gnome-unstable-x86_64/drop-google-password-interface-1.patch |   39 +
 gnome-unstable-x86_64/drop-google-password-interface-2.patch |   74 ++
 gnome-unstable-x86_64/drop-google-password-interface-3.patch |  296 ++++++++++
 gnome-unstable-x86_64/gnome-online-accounts.install          |   11 
 10 files changed, 898 insertions(+)

Copied: gnome-online-accounts/repos/gnome-unstable-i686/PKGBUILD (from rev 194580, gnome-online-accounts/trunk/PKGBUILD)
===================================================================
--- gnome-unstable-i686/PKGBUILD	                        (rev 0)
+++ gnome-unstable-i686/PKGBUILD	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,29 @@
+# $Id$
+# Maintainer: Ionut Biru <ibiru at archlinux.org>
+
+pkgname=gnome-online-accounts
+pkgver=3.9.92
+pkgrel=1
+pkgdesc="GNOME service to access online accounts"
+arch=(i686 x86_64)
+url="http://www.gnome.org"
+license=('GPL')
+depends=('webkitgtk' 'json-glib' 'libnotify' 'rest' 'hicolor-icon-theme' 'libsecret' 'telepathy-glib')
+makedepends=('intltool' 'libxslt' 'gobject-introspection' 'docbook-xsl')
+options=(!libtool)
+install=$pkgname.install
+source=(http://download.gnome.org/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz)
+sha256sums=('a482564306bd0ffe1cfa43ab1c73dd63b82ce5a5a32870cff2c6636cef4c216e')
+
+build() {
+  cd $pkgname-$pkgver
+  ./configure --prefix=/usr --libexec=/usr/lib/gnome-online-accounts
+  make
+}
+
+package() {
+  cd $pkgname-$pkgver
+  make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:

Copied: gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-1.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch)
===================================================================
--- gnome-unstable-i686/drop-google-password-interface-1.patch	                        (rev 0)
+++ gnome-unstable-i686/drop-google-password-interface-1.patch	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,39 @@
+From 9182fb378614abb2ff0245fe71a753f22eaaa906 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Tue, 11 Jun 2013 14:58:21 +0000
+Subject: google: Bump credentials generation
+
+Access to the following were turned on in the Google APIs Console:
+ - Calendar API
+ - Google Calendar CalDAV API
+ - Google Contacts CardDAV API
+
+Of these, only the last two are new. We were already requesting the
+scope for Calendar API, but looks like the APIs Console is the way
+to go now. Interestingly the APIs Console does not list all the other
+services that we are interested in, or it is does but is not obvious
+to me.
+
+In any case we need access to their new CalDAV API which works with
+OAuth2 because that would let us work with 2-factor authenticated
+accounts again.
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+     https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
+index 8271711..79f5f73 100644
+--- a/src/goabackend/goagoogleprovider.c
++++ b/src/goabackend/goagoogleprovider.c
+@@ -148,7 +148,7 @@ get_scope (GoaOAuth2Provider *provider)
+ static guint
+ get_credentials_generation (GoaProvider *provider)
+ {
+-  return 3;
++  return 4;
+ }
+ 
+ static const gchar *
+

Copied: gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-2.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch)
===================================================================
--- gnome-unstable-i686/drop-google-password-interface-2.patch	                        (rev 0)
+++ gnome-unstable-i686/drop-google-password-interface-2.patch	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,74 @@
+From a0fd4cd595bd0fe6eb4015ea9050170319b16546 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Wed, 19 Jun 2013 15:04:38 +0000
+Subject: google: Export CalDAV and CardDAV endpoints
+
+According to:
+https://developers.google.com/google-apps/calendar/caldav/v2/guide/
+https://developers.google.com/google-apps/carddav/
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+     https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
+index 79f5f73..740c08e 100644
+--- a/src/goabackend/goagoogleprovider.c
++++ b/src/goabackend/goagoogleprovider.c
+@@ -385,6 +385,7 @@ build_object (GoaProvider         *provider,
+   gboolean contacts_enabled;
+   gboolean chat_enabled;
+   gboolean documents_enabled;
++  const gchar *email_address;
+ 
+   account = NULL;
+   mail = NULL;
+@@ -419,6 +420,7 @@ build_object (GoaProvider         *provider,
+     }
+ 
+   account = goa_object_get_account (GOA_OBJECT (object));
++  email_address = goa_account_get_identity (account);
+ 
+   /* Email */
+   mail = goa_object_get_mail (GOA_OBJECT (object));
+@@ -427,8 +429,6 @@ build_object (GoaProvider         *provider,
+     {
+       if (mail == NULL)
+         {
+-          const gchar *email_address;
+-          email_address = goa_account_get_identity (account);
+           mail = goa_mail_skeleton_new ();
+           g_object_set (G_OBJECT (mail),
+                         "email-address",   email_address,
+@@ -457,8 +457,19 @@ build_object (GoaProvider         *provider,
+     {
+       if (calendar == NULL)
+         {
++          gchar *uri_caldav;
++
++          uri_caldav = g_strconcat ("https://apidata.googleusercontent.com/caldav/v2/",
++                                    email_address,
++                                    "/user",
++                                    NULL);
++
+           calendar = goa_calendar_skeleton_new ();
++          g_object_set (G_OBJECT (calendar),
++                        "uri", uri_caldav,
++                        NULL);
+           goa_object_skeleton_set_calendar (object, calendar);
++          g_free (uri_caldav);
+         }
+     }
+   else
+@@ -475,6 +486,9 @@ build_object (GoaProvider         *provider,
+       if (contacts == NULL)
+         {
+           contacts = goa_contacts_skeleton_new ();
++          g_object_set (G_OBJECT (contacts),
++                        "uri", "https://www.googleapis.com/.well-known/carddav",
++                        NULL);
+           goa_object_skeleton_set_contacts (object, contacts);
+         }
+     }
+

Copied: gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-3.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch)
===================================================================
--- gnome-unstable-i686/drop-google-password-interface-3.patch	                        (rev 0)
+++ gnome-unstable-i686/drop-google-password-interface-3.patch	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,296 @@
+From 365a5a92909fce8dcdd851b5a2b9caf34e0da926 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Fri, 28 Jun 2013 12:22:07 +0000
+Subject: google: Don't offer a PasswordBased interface
+
+This was a temporary measure back when Google did not support OAuth2
+for CalDAV. Now that they do, we can drop this.
+
+In any case, the workaround didn't work with accounts using 2-factor
+authentication. This will make those people happy.
+
+This reverts 89c335479c1bb8409af8296c99ffea602a28b71f
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+     https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+Index: gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c
+===================================================================
+--- gnome-online-accounts-3.8.2.orig/src/goabackend/goagoogleprovider.c	2013-07-10 13:29:35.381448621 -0400
++++ gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c	2013-07-10 13:29:35.377448621 -0400
+@@ -32,8 +32,6 @@
+ #include "goaprovider-priv.h"
+ #include "goaoauth2provider.h"
+ #include "goagoogleprovider.h"
+-#include "goahttpclient.h"
+-#include "goautils.h"
+ 
+ /**
+  * GoaGoogleProvider:
+@@ -71,8 +69,6 @@
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static const gchar *CALDAV_ENDPOINT = "https://www.google.com/calendar/dav/%s/events/";
+-
+ static const gchar *
+ get_provider_type (GoaProvider *_provider)
+ {
+@@ -310,48 +306,8 @@
+   return ret;
+ }
+ 
+-static gboolean
+-is_password_node (GoaOAuth2Provider *provider, WebKitDOMHTMLInputElement *element)
+-{
+-  gboolean ret;
+-  gchar *element_type;
+-  gchar *id;
+-  gchar *name;
+-
+-  element_type = NULL;
+-  id = NULL;
+-  name = NULL;
+-
+-  ret = FALSE;
+-
+-  g_object_get (element, "type", &element_type, NULL);
+-  if (g_strcmp0 (element_type, "password") != 0)
+-    goto out;
+-
+-  id = webkit_dom_html_element_get_id (WEBKIT_DOM_HTML_ELEMENT (element));
+-  if (g_strcmp0 (id, "Passwd") != 0)
+-    goto out;
+-
+-  name = webkit_dom_html_input_element_get_name (element);
+-  if (g_strcmp0 (name, "Passwd") != 0)
+-    goto out;
+-
+-  ret = TRUE;
+-
+- out:
+-  g_free (element_type);
+-  g_free (id);
+-  g_free (name);
+-  return ret;
+-}
+-
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static gboolean on_handle_get_password (GoaPasswordBased      *interface,
+-                                        GDBusMethodInvocation *invocation,
+-                                        const gchar           *id,
+-                                        gpointer               user_data);
+-
+ static gboolean
+ build_object (GoaProvider         *provider,
+               GoaObjectSkeleton   *object,
+@@ -367,7 +323,6 @@
+   GoaContacts *contacts;
+   GoaChat *chat;
+   GoaDocuments *documents;
+-  GoaPasswordBased *password_based;
+   gboolean ret;
+   gboolean mail_enabled;
+   gboolean calendar_enabled;
+@@ -394,20 +349,6 @@
+                                                                             error))
+     goto out;
+ 
+-  password_based = goa_object_get_password_based (GOA_OBJECT (object));
+-  if (password_based == NULL)
+-    {
+-      password_based = goa_password_based_skeleton_new ();
+-      /* Ensure D-Bus method invocations run in their own thread */
+-      g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (password_based),
+-                                           G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD);
+-      goa_object_skeleton_set_password_based (object, password_based);
+-      g_signal_connect (password_based,
+-                        "handle-get-password",
+-                        G_CALLBACK (on_handle_get_password),
+-                        NULL);
+-    }
+-
+   account = goa_object_get_account (GOA_OBJECT (object));
+   email_address = goa_account_get_identity (account);
+ 
+@@ -567,103 +508,6 @@
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+ static gboolean
+-ensure_credentials_sync (GoaProvider   *provider,
+-                         GoaObject     *object,
+-                         gint          *out_expires_in,
+-                         GCancellable  *cancellable,
+-                         GError       **error)
+-{
+-  GVariant *credentials;
+-  GoaAccount *account;
+-  GoaHttpClient *http_client;
+-  gboolean ret;
+-  const gchar *username;
+-  gchar *password;
+-  gchar *uri_caldav;
+-
+-  credentials = NULL;
+-  http_client = NULL;
+-  password = NULL;
+-  uri_caldav = NULL;
+-
+-  ret = FALSE;
+-
+-  /* Chain up */
+-  if (!GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->ensure_credentials_sync (provider,
+-                                                                                       object,
+-                                                                                       out_expires_in,
+-                                                                                       cancellable,
+-                                                                                       error))
+-    goto out;
+-
+-  credentials = goa_utils_lookup_credentials_sync (provider,
+-                                                   object,
+-                                                   cancellable,
+-                                                   error);
+-  if (credentials == NULL)
+-    {
+-      if (error != NULL)
+-        {
+-          (*error)->domain = GOA_ERROR;
+-          (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
+-        }
+-      goto out;
+-    }
+-
+-  account = goa_object_peek_account (object);
+-  username = goa_account_get_presentation_identity (account);
+-  uri_caldav = g_strdup_printf (CALDAV_ENDPOINT, username);
+-
+-  if (!g_variant_lookup (credentials, "password", "s", &password))
+-    {
+-      if (error != NULL)
+-        {
+-          *error = g_error_new (GOA_ERROR,
+-                                GOA_ERROR_NOT_AUTHORIZED,
+-                                _("Did not find password with identity `%s' in credentials"),
+-                                username);
+-        }
+-      goto out;
+-    }
+-
+-  http_client = goa_http_client_new ();
+-  ret = goa_http_client_check_sync (http_client,
+-                                    uri_caldav,
+-                                    username,
+-                                    password,
+-                                    FALSE,
+-                                    cancellable,
+-                                    error);
+-  if (!ret)
+-    {
+-      if (error != NULL)
+-        {
+-          g_prefix_error (error,
+-                          /* Translators: the first %s is the username
+-                           * (eg., debarshi.ray at gmail.com or rishi), and the
+-                           * (%s, %d) is the error domain and code.
+-                           */
+-                          _("Invalid password with username `%s' (%s, %d): "),
+-                          username,
+-                          g_quark_to_string ((*error)->domain),
+-                          (*error)->code);
+-          (*error)->domain = GOA_ERROR;
+-          (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
+-        }
+-      goto out;
+-    }
+-
+- out:
+-  g_clear_object (&http_client);
+-  g_free (password);
+-  g_free (uri_caldav);
+-  g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
+-  return ret;
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-static gboolean
+ get_use_mobile_browser (GoaOAuth2Provider *provider)
+ {
+   return TRUE;
+@@ -744,7 +588,6 @@
+   provider_class->get_provider_name          = get_provider_name;
+   provider_class->get_provider_group         = get_provider_group;
+   provider_class->build_object               = build_object;
+-  provider_class->ensure_credentials_sync    = ensure_credentials_sync;
+   provider_class->show_account               = show_account;
+   provider_class->get_credentials_generation = get_credentials_generation;
+ 
+@@ -758,65 +601,7 @@
+   oauth2_class->get_scope                 = get_scope;
+   oauth2_class->is_deny_node              = is_deny_node;
+   oauth2_class->is_identity_node          = is_identity_node;
+-  oauth2_class->is_password_node          = is_password_node;
+   oauth2_class->get_token_uri             = get_token_uri;
+   oauth2_class->get_use_mobile_browser    = get_use_mobile_browser;
+   oauth2_class->add_account_key_values    = add_account_key_values;
+ }
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-/* runs in a thread dedicated to handling @invocation */
+-static gboolean
+-on_handle_get_password (GoaPasswordBased      *interface,
+-                        GDBusMethodInvocation *invocation,
+-                        const gchar           *id, /* unused */
+-                        gpointer               user_data)
+-{
+-  GoaObject *object;
+-  GoaAccount *account;
+-  GoaProvider *provider;
+-  GError *error;
+-  GVariant *credentials;
+-  const gchar *identity;
+-  gchar *password;
+-
+-  /* TODO: maybe log what app is requesting access */
+-
+-  password = NULL;
+-  credentials = NULL;
+-
+-  object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface)));
+-  account = goa_object_peek_account (object);
+-  identity = goa_account_get_identity (account);
+-  provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account));
+-
+-  error = NULL;
+-  credentials = goa_utils_lookup_credentials_sync (provider,
+-                                                   object,
+-                                                   NULL, /* GCancellable* */
+-                                                   &error);
+-  if (credentials == NULL)
+-    {
+-      g_dbus_method_invocation_take_error (invocation, error);
+-      goto out;
+-    }
+-
+-  if (!g_variant_lookup (credentials, "password", "s", &password))
+-    {
+-      g_dbus_method_invocation_return_error (invocation,
+-                                             GOA_ERROR,
+-                                             GOA_ERROR_FAILED, /* TODO: more specific */
+-                                             _("Did not find password with identity `%s' in credentials"),
+-                                             identity);
+-      goto out;
+-    }
+-
+-  goa_password_based_complete_get_password (interface, invocation, password);
+-
+- out:
+-  g_free (password);
+-  g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
+-  g_object_unref (provider);
+-  return TRUE; /* invocation was handled */
+-}

Copied: gnome-online-accounts/repos/gnome-unstable-i686/gnome-online-accounts.install (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install)
===================================================================
--- gnome-unstable-i686/gnome-online-accounts.install	                        (rev 0)
+++ gnome-unstable-i686/gnome-online-accounts.install	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,11 @@
+post_install () {
+    gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
+}
+
+post_upgrade() {
+    post_install
+}
+
+post_remove() {
+    post_install
+}

Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/PKGBUILD (from rev 194580, gnome-online-accounts/trunk/PKGBUILD)
===================================================================
--- gnome-unstable-x86_64/PKGBUILD	                        (rev 0)
+++ gnome-unstable-x86_64/PKGBUILD	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,29 @@
+# $Id$
+# Maintainer: Ionut Biru <ibiru at archlinux.org>
+
+pkgname=gnome-online-accounts
+pkgver=3.9.92
+pkgrel=1
+pkgdesc="GNOME service to access online accounts"
+arch=(i686 x86_64)
+url="http://www.gnome.org"
+license=('GPL')
+depends=('webkitgtk' 'json-glib' 'libnotify' 'rest' 'hicolor-icon-theme' 'libsecret' 'telepathy-glib')
+makedepends=('intltool' 'libxslt' 'gobject-introspection' 'docbook-xsl')
+options=(!libtool)
+install=$pkgname.install
+source=(http://download.gnome.org/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz)
+sha256sums=('a482564306bd0ffe1cfa43ab1c73dd63b82ce5a5a32870cff2c6636cef4c216e')
+
+build() {
+  cd $pkgname-$pkgver
+  ./configure --prefix=/usr --libexec=/usr/lib/gnome-online-accounts
+  make
+}
+
+package() {
+  cd $pkgname-$pkgver
+  make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:

Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-1.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch)
===================================================================
--- gnome-unstable-x86_64/drop-google-password-interface-1.patch	                        (rev 0)
+++ gnome-unstable-x86_64/drop-google-password-interface-1.patch	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,39 @@
+From 9182fb378614abb2ff0245fe71a753f22eaaa906 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Tue, 11 Jun 2013 14:58:21 +0000
+Subject: google: Bump credentials generation
+
+Access to the following were turned on in the Google APIs Console:
+ - Calendar API
+ - Google Calendar CalDAV API
+ - Google Contacts CardDAV API
+
+Of these, only the last two are new. We were already requesting the
+scope for Calendar API, but looks like the APIs Console is the way
+to go now. Interestingly the APIs Console does not list all the other
+services that we are interested in, or it is does but is not obvious
+to me.
+
+In any case we need access to their new CalDAV API which works with
+OAuth2 because that would let us work with 2-factor authenticated
+accounts again.
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+     https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
+index 8271711..79f5f73 100644
+--- a/src/goabackend/goagoogleprovider.c
++++ b/src/goabackend/goagoogleprovider.c
+@@ -148,7 +148,7 @@ get_scope (GoaOAuth2Provider *provider)
+ static guint
+ get_credentials_generation (GoaProvider *provider)
+ {
+-  return 3;
++  return 4;
+ }
+ 
+ static const gchar *
+

Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-2.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch)
===================================================================
--- gnome-unstable-x86_64/drop-google-password-interface-2.patch	                        (rev 0)
+++ gnome-unstable-x86_64/drop-google-password-interface-2.patch	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,74 @@
+From a0fd4cd595bd0fe6eb4015ea9050170319b16546 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Wed, 19 Jun 2013 15:04:38 +0000
+Subject: google: Export CalDAV and CardDAV endpoints
+
+According to:
+https://developers.google.com/google-apps/calendar/caldav/v2/guide/
+https://developers.google.com/google-apps/carddav/
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+     https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
+index 79f5f73..740c08e 100644
+--- a/src/goabackend/goagoogleprovider.c
++++ b/src/goabackend/goagoogleprovider.c
+@@ -385,6 +385,7 @@ build_object (GoaProvider         *provider,
+   gboolean contacts_enabled;
+   gboolean chat_enabled;
+   gboolean documents_enabled;
++  const gchar *email_address;
+ 
+   account = NULL;
+   mail = NULL;
+@@ -419,6 +420,7 @@ build_object (GoaProvider         *provider,
+     }
+ 
+   account = goa_object_get_account (GOA_OBJECT (object));
++  email_address = goa_account_get_identity (account);
+ 
+   /* Email */
+   mail = goa_object_get_mail (GOA_OBJECT (object));
+@@ -427,8 +429,6 @@ build_object (GoaProvider         *provider,
+     {
+       if (mail == NULL)
+         {
+-          const gchar *email_address;
+-          email_address = goa_account_get_identity (account);
+           mail = goa_mail_skeleton_new ();
+           g_object_set (G_OBJECT (mail),
+                         "email-address",   email_address,
+@@ -457,8 +457,19 @@ build_object (GoaProvider         *provider,
+     {
+       if (calendar == NULL)
+         {
++          gchar *uri_caldav;
++
++          uri_caldav = g_strconcat ("https://apidata.googleusercontent.com/caldav/v2/",
++                                    email_address,
++                                    "/user",
++                                    NULL);
++
+           calendar = goa_calendar_skeleton_new ();
++          g_object_set (G_OBJECT (calendar),
++                        "uri", uri_caldav,
++                        NULL);
+           goa_object_skeleton_set_calendar (object, calendar);
++          g_free (uri_caldav);
+         }
+     }
+   else
+@@ -475,6 +486,9 @@ build_object (GoaProvider         *provider,
+       if (contacts == NULL)
+         {
+           contacts = goa_contacts_skeleton_new ();
++          g_object_set (G_OBJECT (contacts),
++                        "uri", "https://www.googleapis.com/.well-known/carddav",
++                        NULL);
+           goa_object_skeleton_set_contacts (object, contacts);
+         }
+     }
+

Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-3.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch)
===================================================================
--- gnome-unstable-x86_64/drop-google-password-interface-3.patch	                        (rev 0)
+++ gnome-unstable-x86_64/drop-google-password-interface-3.patch	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,296 @@
+From 365a5a92909fce8dcdd851b5a2b9caf34e0da926 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Fri, 28 Jun 2013 12:22:07 +0000
+Subject: google: Don't offer a PasswordBased interface
+
+This was a temporary measure back when Google did not support OAuth2
+for CalDAV. Now that they do, we can drop this.
+
+In any case, the workaround didn't work with accounts using 2-factor
+authentication. This will make those people happy.
+
+This reverts 89c335479c1bb8409af8296c99ffea602a28b71f
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+     https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+Index: gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c
+===================================================================
+--- gnome-online-accounts-3.8.2.orig/src/goabackend/goagoogleprovider.c	2013-07-10 13:29:35.381448621 -0400
++++ gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c	2013-07-10 13:29:35.377448621 -0400
+@@ -32,8 +32,6 @@
+ #include "goaprovider-priv.h"
+ #include "goaoauth2provider.h"
+ #include "goagoogleprovider.h"
+-#include "goahttpclient.h"
+-#include "goautils.h"
+ 
+ /**
+  * GoaGoogleProvider:
+@@ -71,8 +69,6 @@
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static const gchar *CALDAV_ENDPOINT = "https://www.google.com/calendar/dav/%s/events/";
+-
+ static const gchar *
+ get_provider_type (GoaProvider *_provider)
+ {
+@@ -310,48 +306,8 @@
+   return ret;
+ }
+ 
+-static gboolean
+-is_password_node (GoaOAuth2Provider *provider, WebKitDOMHTMLInputElement *element)
+-{
+-  gboolean ret;
+-  gchar *element_type;
+-  gchar *id;
+-  gchar *name;
+-
+-  element_type = NULL;
+-  id = NULL;
+-  name = NULL;
+-
+-  ret = FALSE;
+-
+-  g_object_get (element, "type", &element_type, NULL);
+-  if (g_strcmp0 (element_type, "password") != 0)
+-    goto out;
+-
+-  id = webkit_dom_html_element_get_id (WEBKIT_DOM_HTML_ELEMENT (element));
+-  if (g_strcmp0 (id, "Passwd") != 0)
+-    goto out;
+-
+-  name = webkit_dom_html_input_element_get_name (element);
+-  if (g_strcmp0 (name, "Passwd") != 0)
+-    goto out;
+-
+-  ret = TRUE;
+-
+- out:
+-  g_free (element_type);
+-  g_free (id);
+-  g_free (name);
+-  return ret;
+-}
+-
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static gboolean on_handle_get_password (GoaPasswordBased      *interface,
+-                                        GDBusMethodInvocation *invocation,
+-                                        const gchar           *id,
+-                                        gpointer               user_data);
+-
+ static gboolean
+ build_object (GoaProvider         *provider,
+               GoaObjectSkeleton   *object,
+@@ -367,7 +323,6 @@
+   GoaContacts *contacts;
+   GoaChat *chat;
+   GoaDocuments *documents;
+-  GoaPasswordBased *password_based;
+   gboolean ret;
+   gboolean mail_enabled;
+   gboolean calendar_enabled;
+@@ -394,20 +349,6 @@
+                                                                             error))
+     goto out;
+ 
+-  password_based = goa_object_get_password_based (GOA_OBJECT (object));
+-  if (password_based == NULL)
+-    {
+-      password_based = goa_password_based_skeleton_new ();
+-      /* Ensure D-Bus method invocations run in their own thread */
+-      g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (password_based),
+-                                           G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD);
+-      goa_object_skeleton_set_password_based (object, password_based);
+-      g_signal_connect (password_based,
+-                        "handle-get-password",
+-                        G_CALLBACK (on_handle_get_password),
+-                        NULL);
+-    }
+-
+   account = goa_object_get_account (GOA_OBJECT (object));
+   email_address = goa_account_get_identity (account);
+ 
+@@ -567,103 +508,6 @@
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+ static gboolean
+-ensure_credentials_sync (GoaProvider   *provider,
+-                         GoaObject     *object,
+-                         gint          *out_expires_in,
+-                         GCancellable  *cancellable,
+-                         GError       **error)
+-{
+-  GVariant *credentials;
+-  GoaAccount *account;
+-  GoaHttpClient *http_client;
+-  gboolean ret;
+-  const gchar *username;
+-  gchar *password;
+-  gchar *uri_caldav;
+-
+-  credentials = NULL;
+-  http_client = NULL;
+-  password = NULL;
+-  uri_caldav = NULL;
+-
+-  ret = FALSE;
+-
+-  /* Chain up */
+-  if (!GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->ensure_credentials_sync (provider,
+-                                                                                       object,
+-                                                                                       out_expires_in,
+-                                                                                       cancellable,
+-                                                                                       error))
+-    goto out;
+-
+-  credentials = goa_utils_lookup_credentials_sync (provider,
+-                                                   object,
+-                                                   cancellable,
+-                                                   error);
+-  if (credentials == NULL)
+-    {
+-      if (error != NULL)
+-        {
+-          (*error)->domain = GOA_ERROR;
+-          (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
+-        }
+-      goto out;
+-    }
+-
+-  account = goa_object_peek_account (object);
+-  username = goa_account_get_presentation_identity (account);
+-  uri_caldav = g_strdup_printf (CALDAV_ENDPOINT, username);
+-
+-  if (!g_variant_lookup (credentials, "password", "s", &password))
+-    {
+-      if (error != NULL)
+-        {
+-          *error = g_error_new (GOA_ERROR,
+-                                GOA_ERROR_NOT_AUTHORIZED,
+-                                _("Did not find password with identity `%s' in credentials"),
+-                                username);
+-        }
+-      goto out;
+-    }
+-
+-  http_client = goa_http_client_new ();
+-  ret = goa_http_client_check_sync (http_client,
+-                                    uri_caldav,
+-                                    username,
+-                                    password,
+-                                    FALSE,
+-                                    cancellable,
+-                                    error);
+-  if (!ret)
+-    {
+-      if (error != NULL)
+-        {
+-          g_prefix_error (error,
+-                          /* Translators: the first %s is the username
+-                           * (eg., debarshi.ray at gmail.com or rishi), and the
+-                           * (%s, %d) is the error domain and code.
+-                           */
+-                          _("Invalid password with username `%s' (%s, %d): "),
+-                          username,
+-                          g_quark_to_string ((*error)->domain),
+-                          (*error)->code);
+-          (*error)->domain = GOA_ERROR;
+-          (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
+-        }
+-      goto out;
+-    }
+-
+- out:
+-  g_clear_object (&http_client);
+-  g_free (password);
+-  g_free (uri_caldav);
+-  g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
+-  return ret;
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-static gboolean
+ get_use_mobile_browser (GoaOAuth2Provider *provider)
+ {
+   return TRUE;
+@@ -744,7 +588,6 @@
+   provider_class->get_provider_name          = get_provider_name;
+   provider_class->get_provider_group         = get_provider_group;
+   provider_class->build_object               = build_object;
+-  provider_class->ensure_credentials_sync    = ensure_credentials_sync;
+   provider_class->show_account               = show_account;
+   provider_class->get_credentials_generation = get_credentials_generation;
+ 
+@@ -758,65 +601,7 @@
+   oauth2_class->get_scope                 = get_scope;
+   oauth2_class->is_deny_node              = is_deny_node;
+   oauth2_class->is_identity_node          = is_identity_node;
+-  oauth2_class->is_password_node          = is_password_node;
+   oauth2_class->get_token_uri             = get_token_uri;
+   oauth2_class->get_use_mobile_browser    = get_use_mobile_browser;
+   oauth2_class->add_account_key_values    = add_account_key_values;
+ }
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-/* runs in a thread dedicated to handling @invocation */
+-static gboolean
+-on_handle_get_password (GoaPasswordBased      *interface,
+-                        GDBusMethodInvocation *invocation,
+-                        const gchar           *id, /* unused */
+-                        gpointer               user_data)
+-{
+-  GoaObject *object;
+-  GoaAccount *account;
+-  GoaProvider *provider;
+-  GError *error;
+-  GVariant *credentials;
+-  const gchar *identity;
+-  gchar *password;
+-
+-  /* TODO: maybe log what app is requesting access */
+-
+-  password = NULL;
+-  credentials = NULL;
+-
+-  object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface)));
+-  account = goa_object_peek_account (object);
+-  identity = goa_account_get_identity (account);
+-  provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account));
+-
+-  error = NULL;
+-  credentials = goa_utils_lookup_credentials_sync (provider,
+-                                                   object,
+-                                                   NULL, /* GCancellable* */
+-                                                   &error);
+-  if (credentials == NULL)
+-    {
+-      g_dbus_method_invocation_take_error (invocation, error);
+-      goto out;
+-    }
+-
+-  if (!g_variant_lookup (credentials, "password", "s", &password))
+-    {
+-      g_dbus_method_invocation_return_error (invocation,
+-                                             GOA_ERROR,
+-                                             GOA_ERROR_FAILED, /* TODO: more specific */
+-                                             _("Did not find password with identity `%s' in credentials"),
+-                                             identity);
+-      goto out;
+-    }
+-
+-  goa_password_based_complete_get_password (interface, invocation, password);
+-
+- out:
+-  g_free (password);
+-  g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
+-  g_object_unref (provider);
+-  return TRUE; /* invocation was handled */
+-}

Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/gnome-online-accounts.install (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install)
===================================================================
--- gnome-unstable-x86_64/gnome-online-accounts.install	                        (rev 0)
+++ gnome-unstable-x86_64/gnome-online-accounts.install	2013-09-18 21:59:16 UTC (rev 194581)
@@ -0,0 +1,11 @@
+post_install () {
+    gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
+}
+
+post_upgrade() {
+    post_install
+}
+
+post_remove() {
+    post_install
+}




More information about the arch-commits mailing list