summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2011-05-27 13:55:12 -0400
committerDavid Zeuthen <davidz@redhat.com>2011-05-27 13:55:12 -0400
commit8aae0af0a6b77327f9015b52b609dd2c680996bd (patch)
treee0266c87b59dd0976dfdf6f9126d5dffc5775855
parentd8f3227b1f5f0e62713a697c2a0d34671d0edcbe (diff)
Consolidate properties used for identifying an account
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r--data/dbus-interfaces.xml43
-rw-r--r--doc/goa-docs.xml1
-rw-r--r--doc/goa-sections.txt13
-rw-r--r--src/daemon/goadaemon.c48
-rw-r--r--src/goabackend/goafacebookprovider.c44
-rw-r--r--src/goabackend/goagoogleprovider.c26
-rw-r--r--src/goabackend/goaoauth2provider.c111
-rw-r--r--src/goabackend/goaoauth2provider.h9
-rw-r--r--src/goabackend/goaoauthprovider.c59
-rw-r--r--src/goabackend/goaoauthprovider.h5
-rw-r--r--src/goabackend/goaprovider.c13
-rw-r--r--src/goabackend/goatwitterprovider.c75
-rw-r--r--src/goabackend/goayahooprovider.c43
-rw-r--r--src/panel/goapanelaccountsmodel.c14
-rw-r--r--src/panel/goapanelaccountsmodel.h1
15 files changed, 198 insertions, 307 deletions
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
index 0de4a5e..b091efd 100644
--- a/data/dbus-interfaces.xml
+++ b/data/dbus-interfaces.xml
@@ -63,12 +63,27 @@
-->
<property name="AttentionNeeded" type="b" access="read"/>
- <!-- Name: A human-readable description for the account.
-
- This property may change if the user e.g. renames the
+ <!-- Identity:
+ A string that uniquely identifies the account at the
+ provider.
+
+ Note that this may be the same string for different kinds of
+ providers (for example, if the user is using the same
+ email-address for several providers) - use
+ #org.gnome.OnlineAccounts.Account:Id to uniquely identify the
account.
- -->
- <property name="Name" type="s" access="read"/>
+
+ This string might not be suitable for presentation in an user
+ interface - use
+ #org.gnome.OnlineAccounts.Account:PresentationIdentity instead.
+ -->
+ <property name="Identity" type="s" access="read"/>
+
+ <!-- PresentationIdentity:
+ Like the #org.gnome.OnlineAccounts.Account:Identity property but
+ suitable for presentation in an user interface.
+ -->
+ <property name="PresentationIdentity" type="s" access="read"/>
<!--
Remove:
@@ -122,9 +137,6 @@
<arg name="access_token" type="s" direction="out"/>
<arg name="expires_in" type="i" direction="out"/>
</method>
-
- <!-- Identity: The identity that was authenticated. -->
- <property name="Identity" type="s" access="read"/>
</interface>
<!--
@@ -158,9 +170,6 @@
<!-- ConsumerSecret: The consumer secret. -->
<property name="ConsumerSecret" type="s" access="read"/>
-
- <!-- Identity: The identity that was authenticated. -->
- <property name="Identity" type="s" access="read"/>
</interface>
<!--
@@ -200,17 +209,19 @@
<!--
AddAccount:
- @type: The type of account to create. See the #org.gnome.OnlineAccounts:Type property for known types.
- @name: The human readable name of the account (cf. the #org.gnome.OnlineAccounts.Account:Name property).
- @details: Details about the account. See each interface (e.g. #org.gnome.OnlineAccounts.GoogleAccount) for details of what other elements to include.
+ @provider: The account provider. See the #org.gnome.OnlineAccounts.Account:ProviderType property for known providers.
+ @identity: The identity of the account (cf. the #org.gnome.OnlineAccounts.Account:Identity property).
+ @presentation_identity: The identity of the account that is suitable for display in an user interface (cf. the #org.gnome.OnlineAccounts.Account:PresentationIdentity property).
+ @details: Extra key/value pairs to set.
@account_object_path: The object path of the created account.
Creates a new account. Note that this does not create an
account at the remote service.
-->
<method name="AddAccount">
- <arg name="type" type="s" direction="in"/>
- <arg name="name" type="s" direction="in"/>
+ <arg name="provider" type="s" direction="in"/>
+ <arg name="identity" type="s" direction="in"/>
+ <arg name="presentation_identity" type="s" direction="in"/>
<arg name="details" type="a{ss}" direction="in"/>
<arg name="account_object_path" type="o" direction="out"/>
</method>
diff --git a/doc/goa-docs.xml b/doc/goa-docs.xml
index 4cbe935..1a506bd 100644
--- a/doc/goa-docs.xml
+++ b/doc/goa-docs.xml
@@ -144,7 +144,6 @@
</chapter>
<chapter>
<title>Providers</title>
- <xi:include href="xml/goagenericmailprovider.xml"/>
<xi:include href="xml/goagoogleprovider.xml"/>
<xi:include href="xml/goafacebookprovider.xml"/>
<xi:include href="xml/goayahooprovider.xml"/>
diff --git a/doc/goa-sections.txt b/doc/goa-sections.txt
index b246dde..eaa5e22 100644
--- a/doc/goa-sections.txt
+++ b/doc/goa-sections.txt
@@ -110,8 +110,10 @@ goa_account_get_id
goa_account_set_id
goa_account_get_attention_needed
goa_account_set_attention_needed
-goa_account_get_name
-goa_account_set_name
+goa_account_get_identity
+goa_account_set_identity
+goa_account_get_presentation_identity
+goa_account_set_presentation_identity
goa_account_get_keyfile_group
goa_account_set_keyfile_group
goa_account_get_keyfile_path
@@ -164,13 +166,10 @@ goa_account_skeleton_get_type
GoaOAuth2Based
GoaOAuth2BasedIface
goa_oauth2_based_interface_info
-goa_oauth2_based_override_properties
goa_oauth2_based_call_get_access_token
goa_oauth2_based_call_get_access_token_finish
goa_oauth2_based_call_get_access_token_sync
goa_oauth2_based_complete_get_access_token
-goa_oauth2_based_set_identity
-goa_oauth2_based_get_identity
GoaOAuth2BasedProxy
GoaOAuth2BasedProxyClass
goa_oauth2_based_proxy_new
@@ -216,8 +215,6 @@ goa_oauth_based_call_get_access_token
goa_oauth_based_call_get_access_token_finish
goa_oauth_based_call_get_access_token_sync
goa_oauth_based_complete_get_access_token
-goa_oauth_based_get_identity
-goa_oauth_based_set_identity
goa_oauth_based_get_consumer_key
goa_oauth_based_set_consumer_key
goa_oauth_based_get_consumer_secret
@@ -348,6 +345,7 @@ goa_oauth2_provider_get_client_id
goa_oauth2_provider_get_client_secret
goa_oauth2_provider_build_authorization_uri
goa_oauth2_provider_get_use_external_browser
+goa_oauth2_provider_add_account_key_values
goa_oauth2_provider_get_identity_sync
goa_oauth2_provider_get_access_token_sync
<SUBSECTION Standard>
@@ -374,6 +372,7 @@ goa_oauth_provider_get_consumer_key
goa_oauth_provider_get_consumer_secret
goa_oauth_provider_build_authorization_uri
goa_oauth_provider_get_use_external_browser
+goa_oauth_provider_add_account_key_values
goa_oauth_provider_get_identity_sync
goa_oauth_provider_get_access_token_sync
<SUBSECTION Standard>
diff --git a/src/daemon/goadaemon.c b/src/daemon/goadaemon.c
index ece4dff..45d232b 100644
--- a/src/daemon/goadaemon.c
+++ b/src/daemon/goadaemon.c
@@ -70,8 +70,9 @@ static void on_file_monitor_changed (GFileMonitor *monitor,
static gboolean on_manager_handle_add_account (GoaManager *object,
GDBusMethodInvocation *invocation,
- const gchar *type,
- const gchar *name,
+ const gchar *provider,
+ const gchar *identity,
+ const gchar *presentation_identity,
GVariant *details,
gpointer user_data);
@@ -412,7 +413,8 @@ update_account_object (GoaDaemon *daemon,
GoaAccount *account;
GoaProvider *provider;
gboolean ret;
- gchar *name;
+ gchar *identity;
+ gchar *presentation_identity;
gchar *type;
GError *error;
@@ -422,14 +424,15 @@ update_account_object (GoaDaemon *daemon,
g_return_val_if_fail (key_file != NULL, FALSE);
ret = FALSE;
- name = NULL;
+ identity = NULL;
type = NULL;
account = NULL;
goa_debug ("updating %s %d", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)), just_added);
- type = g_key_file_get_string (key_file, group, "Type", NULL);
- name = g_key_file_get_string (key_file, group, "Name", NULL);
+ type = g_key_file_get_string (key_file, group, "Provider", NULL);
+ identity = g_key_file_get_string (key_file, group, "Identity", NULL);
+ presentation_identity = g_key_file_get_string (key_file, group, "PresentationIdentity", NULL);
if (just_added)
{
account = goa_account_skeleton_new ();
@@ -444,7 +447,8 @@ update_account_object (GoaDaemon *daemon,
goa_account_set_keyfile_path (account, path);
goa_account_set_keyfile_group (account, group);
goa_account_set_provider_type (account, type);
- goa_account_set_name (account, name);
+ goa_account_set_identity (account, identity);
+ goa_account_set_presentation_identity (account, presentation_identity);
provider = goa_provider_get_for_provider_type (type);
if (provider == NULL)
@@ -471,7 +475,7 @@ update_account_object (GoaDaemon *daemon,
g_object_unref (provider);
g_object_unref (account);
g_free (type);
- g_free (name);
+ g_free (identity);
return ret;
}
@@ -729,8 +733,9 @@ generate_new_id (GoaDaemon *daemon)
static gboolean
on_manager_handle_add_account (GoaManager *manager,
GDBusMethodInvocation *invocation,
- const gchar *type,
- const gchar *name,
+ const gchar *provider,
+ const gchar *identity,
+ const gchar *presentation_identity,
GVariant *details,
gpointer user_data)
{
@@ -791,8 +796,9 @@ on_manager_handle_add_account (GoaManager *manager,
id = generate_new_id (daemon);
group = g_strdup_printf ("Account %s", id);
- g_key_file_set_string (key_file, group, "Type", type);
- g_key_file_set_string (key_file, group, "Name", name);
+ g_key_file_set_string (key_file, group, "Provider", provider);
+ g_key_file_set_string (key_file, group, "Identity", identity);
+ g_key_file_set_string (key_file, group, "PresentationIdentity", presentation_identity);
g_variant_iter_init (&iter, details);
while (g_variant_iter_next (&iter, "{&s&s}", &key, &value))
@@ -986,7 +992,6 @@ on_account_handle_remove (GoaAccount *account,
GKeyFile *key_file;
gchar *path;
gchar *group;
- gchar *name;
gchar *data;
gsize length;
GError *error;
@@ -994,15 +999,8 @@ on_account_handle_remove (GoaAccount *account,
path = NULL;
group = NULL;
key_file = NULL;
- name = NULL;
data = NULL;
- if (g_strcmp0 (goa_account_get_name (account), name) == 0)
- {
- goa_account_complete_remove (account, invocation);
- goto out;
- }
-
/* update key-file - right now we only support removing the account
* if the entry is in ~/.config/goa-1.0/accounts.conf
*/
@@ -1024,15 +1022,6 @@ on_account_handle_remove (GoaAccount *account,
group = g_strdup_printf ("Account %s", goa_account_get_id (account));
error = NULL;
- name = g_key_file_get_string (key_file, group, "Name", &error);
- if (name == NULL)
- {
- g_dbus_method_invocation_return_gerror (invocation, error);
- g_error_free (error);
- goto out;
- }
-
- error = NULL;
if (!g_key_file_remove_group (key_file, group, &error))
{
g_dbus_method_invocation_return_gerror (invocation, error);
@@ -1068,7 +1057,6 @@ on_account_handle_remove (GoaAccount *account,
out:
g_free (data);
- g_free (name);
if (key_file != NULL)
g_key_file_free (key_file);
g_free (group);
diff --git a/src/goabackend/goafacebookprovider.c b/src/goabackend/goafacebookprovider.c
index ba37182..fb34acb 100644
--- a/src/goabackend/goafacebookprovider.c
+++ b/src/goabackend/goafacebookprovider.c
@@ -124,7 +124,7 @@ get_client_secret (GoaOAuth2Provider *provider)
static gchar *
get_identity_sync (GoaOAuth2Provider *provider,
const gchar *access_token,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error)
{
@@ -134,14 +134,14 @@ get_identity_sync (GoaOAuth2Provider *provider,
JsonObject *json_object;
gchar *ret;
gchar *id;
- gchar *name;
+ gchar *presentation_identity;
ret = NULL;
proxy = NULL;
call = NULL;
parser = NULL;
id = NULL;
- name = NULL;
+ presentation_identity = NULL;
/* TODO: cancellable */
@@ -174,7 +174,7 @@ get_identity_sync (GoaOAuth2Provider *provider,
}
json_object = json_node_get_object (json_parser_get_root (parser));
- id = g_strdup (json_object_get_string_member (json_object, "username"));
+ id = g_strdup (json_object_get_string_member (json_object, "id"));
if (id == NULL)
{
g_set_error (error,
@@ -183,8 +183,8 @@ get_identity_sync (GoaOAuth2Provider *provider,
_("Didn't find username member in JSON data"));
goto out;
}
- name = g_strdup (json_object_get_string_member (json_object, "name"));
- if (name == NULL)
+ presentation_identity = g_strdup (json_object_get_string_member (json_object, "username"));
+ if (presentation_identity == NULL)
{
g_set_error (error,
GOA_ERROR,
@@ -195,15 +195,15 @@ get_identity_sync (GoaOAuth2Provider *provider,
ret = id;
id = NULL;
- if (out_name != NULL)
+ if (out_presentation_identity != NULL)
{
- *out_name = name;
- name = NULL;
+ *out_presentation_identity = presentation_identity;
+ presentation_identity = NULL;
}
out:
g_free (id);
- g_free (name);
+ g_free (presentation_identity);
if (call != NULL)
g_object_unref (call);
if (proxy != NULL)
@@ -221,13 +221,7 @@ build_object (GoaProvider *provider,
const gchar *group,
GError **error)
{
- GoaAccount *account;
gboolean ret;
- gchar *user_name;
-
- user_name = NULL;
- account = NULL;
- ret = FALSE;
/* Chain up */
if (!GOA_PROVIDER_CLASS (goa_facebook_provider_parent_class)->build_object (provider,
@@ -237,25 +231,9 @@ build_object (GoaProvider *provider,
error))
goto out;
- account = goa_object_get_account (GOA_OBJECT (object));
-
- user_name = g_key_file_get_string (key_file, group, "Identity", NULL);
- if (user_name == NULL)
- {
- g_set_error (error,
- GOA_ERROR,
- GOA_ERROR_FAILED,
- "Invalid identity %s for id %s",
- user_name,
- goa_account_get_id (account));
- goto out;
- }
-
ret = TRUE;
out:
- if (account != NULL)
- g_object_unref (account);
return ret;
}
@@ -277,7 +255,7 @@ show_account (GoaProvider *provider,
/* Chain up */
GOA_PROVIDER_CLASS (goa_facebook_provider_parent_class)->show_account (provider, client, object, vbox, table);
- goa_util_add_row_editable_label_from_keyfile (table, object, _("User Name"), "Identity", FALSE);
+ goa_util_add_row_editable_label_from_keyfile (table, object, _("User Name"), "PresentationIdentity", FALSE);
}
/* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
index 544244d..d66acb9 100644
--- a/src/goabackend/goagoogleprovider.c
+++ b/src/goabackend/goagoogleprovider.c
@@ -150,7 +150,7 @@ static gchar *
get_identity_sync (GoaOAuthProvider *provider,
const gchar *access_token,
const gchar *access_token_secret,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error)
{
@@ -227,8 +227,8 @@ get_identity_sync (GoaOAuthProvider *provider,
ret = email;
email = NULL;
- if (out_name != NULL)
- *out_name = g_strdup (ret); /* for now: use email as name */
+ if (out_presentation_identity != NULL)
+ *out_presentation_identity = g_strdup (ret); /* for now: use email as presentation identity */
out:
g_free (email);
@@ -253,12 +253,10 @@ build_object (GoaProvider *provider,
GoaCalendar *calendar;
GoaContacts *contacts;
gboolean ret;
- gchar *email_address;
gboolean mail_enabled;
gboolean calendar_enabled;
gboolean contacts_enabled;
- email_address = NULL;
account = NULL;
mail = NULL;
calendar = NULL;
@@ -275,18 +273,7 @@ build_object (GoaProvider *provider,
account = goa_object_get_account (GOA_OBJECT (object));
- email_address = g_key_file_get_string (key_file, group, "Identity", NULL);
- if (email_address == NULL /* || !is_valid_email_address () */)
- {
- g_set_error (error,
- GOA_ERROR,
- GOA_ERROR_FAILED,
- "Invalid identity %s for id %s",
- email_address,
- goa_account_get_id (account));
- goto out;
- }
-
+ /* Email */
mail = goa_object_get_mail (GOA_OBJECT (object));
mail_enabled = g_key_file_get_boolean (key_file, group, "MailEnabled", NULL);
if (mail_enabled)
@@ -295,7 +282,7 @@ build_object (GoaProvider *provider,
{
mail = goa_mail_skeleton_new ();
g_object_set (G_OBJECT (mail),
- "email-address", email_address,
+ "email-address", goa_account_get_identity (account),
"imap-host", "imap.gmail.com",
"imap-user-name", "",
"imap-use-tls", TRUE,
@@ -312,6 +299,7 @@ build_object (GoaProvider *provider,
goa_object_skeleton_set_mail (object, NULL);
}
+ /* Calendar */
calendar = goa_object_get_calendar (GOA_OBJECT (object));
calendar_enabled = g_key_file_get_boolean (key_file, group, "CalendarEnabled", NULL);
if (calendar_enabled)
@@ -328,6 +316,7 @@ build_object (GoaProvider *provider,
goa_object_skeleton_set_calendar (object, NULL);
}
+ /* Contacts */
contacts = goa_object_get_contacts (GOA_OBJECT (object));
contacts_enabled = g_key_file_get_boolean (key_file, group, "ContactsEnabled", NULL);
if (contacts_enabled)
@@ -348,7 +337,6 @@ build_object (GoaProvider *provider,
ret = TRUE;
out:
- g_free (email_address);
if (contacts != NULL)
g_object_unref (contacts);
if (calendar != NULL)
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
index f7bb50d..5200389 100644
--- a/src/goabackend/goaoauth2provider.c
+++ b/src/goabackend/goaoauth2provider.c
@@ -118,6 +118,33 @@ goa_oauth2_provider_get_use_external_browser (GoaOAuth2Provider *provider)
/* ---------------------------------------------------------------------------------------------------- */
+static void
+goa_oauth2_provider_add_account_key_values_default (GoaOAuth2Provider *provider,
+ GVariantBuilder *builder)
+{
+ /* do nothing */
+}
+
+/**
+ * goa_oauth2_provider_add_account_key_values:
+ * @provider: A #GoaProvider.
+ * @builder: A #GVariantBuilder for a <literal>a{ss}</literal> variant.
+ *
+ * Hook for implementations to add key/value pairs to the key-file
+ * when creating an account.
+ *
+ * This is a virtual method where the default implementation does nothing.
+ */
+void
+goa_oauth2_provider_add_account_key_values (GoaOAuth2Provider *provider,
+ GVariantBuilder *builder)
+{
+ g_return_if_fail (GOA_IS_OAUTH2_PROVIDER (provider));
+ return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->add_account_key_values (provider, builder);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
static gchar *
goa_oauth2_provider_build_authorization_uri_default (GoaOAuth2Provider *provider,
const gchar *authorization_uri,
@@ -312,7 +339,7 @@ goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider)
* goa_oauth2_provider_get_identity_sync:
* @provider: A #GoaOAuth2Provider.
* @access_token: A valid OAuth 2.0 access token.
- * @out_name: (out): Return location for name or %NULL.
+ * @out_presentation_identity: (out): Return location for presentation identity or %NULL.
* @cancellable: (allow-none): A #GCancellable or %NULL.
* @error: Return location for @error or %NULL.
*
@@ -320,13 +347,9 @@ goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider)
* @access_token.
*
* The identity is needed because all authentication happens out of
- * band. The only requirement is that the returned identity is unique
- * - for example, for #GoaGoogleProvider the returned identity
- * is the email address, for #GoaFacebookProvider it's the user
- * name. In addition to the identity, an implementation also returns a
- * <emphasis>name</emphasis> that is more suitable for presentation
- * (the identity could be a GUID for example) and doesn't have to be
- * unique.
+ * band. In addition to the identity, an implementation also returns a
+ * <emphasis>presentation identity</emphasis> that is more suitable
+ * for presentation (the identity could be a GUID for example).
*
* The calling thread is blocked while the identity is obtained.
*
@@ -336,7 +359,7 @@ goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider)
gchar *
goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider,
const gchar *access_token,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error)
{
@@ -344,7 +367,7 @@ goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider,
g_return_val_if_fail (access_token != NULL, NULL);
g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
- return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, out_name, cancellable, error);
+ return GOA_OAUTH2_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, out_presentation_identity, cancellable, error);
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -506,7 +529,7 @@ typedef struct
gchar *refresh_token;
gchar *identity;
- gchar *name;
+ gchar *presentation_identity;
} IdentifyData;
static gboolean
@@ -582,7 +605,7 @@ get_tokens_and_identity (GoaOAuth2Provider *provider,
gint *out_access_token_expires_in,
gchar **out_refresh_token,
gchar **out_identity,
- gchar **out_name,
+ gchar **out_presentation_identity,
GError **error)
{
gboolean ret;
@@ -729,7 +752,7 @@ get_tokens_and_identity (GoaOAuth2Provider *provider,
/* TODO: run in worker thread */
data.identity = goa_oauth2_provider_get_identity_sync (provider,
data.access_token,
- &data.name,
+ &data.presentation_identity,
NULL, /* TODO: GCancellable */
error);
if (data.identity == NULL)
@@ -754,8 +777,8 @@ get_tokens_and_identity (GoaOAuth2Provider *provider,
*out_refresh_token = g_strdup (data.refresh_token);
if (out_identity != NULL)
*out_identity = g_strdup (data.identity);
- if (out_name != NULL)
- *out_name = g_strdup (data.name);
+ if (out_presentation_identity != NULL)
+ *out_presentation_identity = g_strdup (data.presentation_identity);
}
else
{
@@ -764,7 +787,7 @@ get_tokens_and_identity (GoaOAuth2Provider *provider,
}
g_free (data.identity);
- g_free (data.name);
+ g_free (data.presentation_identity);
g_free (url);
g_free (data.authorization_code);
@@ -838,7 +861,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider,
gint access_token_expires_in;
gchar *refresh_token;
gchar *identity;
- gchar *name;
+ gchar *presentation_identity;
GList *accounts;
GList *l;
AddData data;
@@ -855,7 +878,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider,
access_token = NULL;
refresh_token = NULL;
identity = NULL;
- name = NULL;
+ presentation_identity = NULL;
accounts = NULL;
memset (&data, '\0', sizeof (AddData));
@@ -869,7 +892,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider,
&access_token_expires_in,
&refresh_token,
&identity,
- &name,
+ &presentation_identity,
&data.error))
goto out;
@@ -893,7 +916,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider,
goa_provider_get_provider_type (GOA_PROVIDER (provider))) != 0)
continue;
- identity_from_object = goa_oauth2_based_get_identity (oauth2_based);
+ identity_from_object = goa_account_get_identity (account);
if (g_strcmp0 (identity_from_object, identity) == 0)
{
g_set_error (&data.error,
@@ -909,11 +932,13 @@ goa_oauth2_provider_add_account (GoaProvider *_provider,
* can create a proxy for the new object) so run the mainloop while
* waiting for this to complete
*/
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
+ goa_oauth2_provider_add_account_key_values (provider, &builder);
goa_manager_call_add_account (goa_client_get_manager (client),
goa_provider_get_provider_type (GOA_PROVIDER (provider)),
- name, /* Name */
- g_variant_new_parsed ("{'Identity': %s}",
- identity),
+ identity,
+ presentation_identity,
+ g_variant_builder_end (&builder),
NULL, /* GCancellable* */
(GAsyncReadyCallback) add_account_cb,
&data);
@@ -954,7 +979,7 @@ goa_oauth2_provider_add_account (GoaProvider *_provider,
g_list_foreach (accounts, (GFunc) g_object_unref, NULL);
g_list_free (accounts);
g_free (identity);
- g_free (name);
+ g_free (presentation_identity);
g_free (refresh_token);
g_free (access_token);
g_free (authorization_code);
@@ -1012,11 +1037,11 @@ goa_oauth2_provider_refresh_account (GoaProvider *_provider,
&access_token_expires_in,
&refresh_token,
&identity,
- NULL, /* out_name */
+ NULL, /* out_presentation_identity */
error))
goto out;
- existing_identity = goa_oauth2_based_get_identity (goa_object_peek_oauth2_based (object));
+ existing_identity = goa_account_get_identity (goa_object_peek_account (object));
if (g_strcmp0 (identity, existing_identity) != 0)
{
g_set_error (error,
@@ -1303,9 +1328,6 @@ goa_oauth2_provider_build_object (GoaProvider *provider,
GError **error)
{
GoaOAuth2Based *oauth2_based;
- gchar *identity;
-
- identity = NULL;
oauth2_based = goa_object_get_oauth2_based (GOA_OBJECT (object));
if (oauth2_based != NULL)
@@ -1321,20 +1343,8 @@ goa_oauth2_provider_build_object (GoaProvider *provider,
G_CALLBACK (on_handle_get_access_token),
NULL);
- identity = g_key_file_get_string (key_file, group, "Identity", NULL);
- if (identity == NULL)
- {
- g_set_error (error,
- GOA_ERROR,
- GOA_ERROR_FAILED,
- "No Identity key");
- goto out;
- }
- goa_oauth2_based_set_identity (oauth2_based, identity);
-
out:
g_object_unref (oauth2_based);
- g_free (identity);
return TRUE;
}
@@ -1361,19 +1371,19 @@ goa_oauth2_provider_ensure_credentials_sync (GoaProvider *_provider,
again:
access_token = goa_oauth2_provider_get_access_token_sync (provider,
- object,
- force_refresh,
- &access_token_expires_in,
- cancellable,
- error);
+ object,
+ force_refresh,
+ &access_token_expires_in,
+ cancellable,
+ error);
if (access_token == NULL)
goto out;
identity = goa_oauth2_provider_get_identity_sync (provider,
- access_token,
- NULL, /* out_name */
- cancellable,
- error);
+ access_token,
+ NULL, /* out_presentation_identity */
+ cancellable,
+ error);
if (identity == NULL)
{
/* OK, try again, with forcing the locally cached credentials to be refreshed */
@@ -1421,6 +1431,7 @@ goa_oauth2_provider_class_init (GoaOAuth2ProviderClass *klass)
klass->build_authorization_uri = goa_oauth2_provider_build_authorization_uri_default;
klass->get_use_external_browser = goa_oauth2_provider_get_use_external_browser_default;
+ klass->add_account_key_values = goa_oauth2_provider_add_account_key_values_default;
}
/* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/goabackend/goaoauth2provider.h b/src/goabackend/goaoauth2provider.h
index 7c489f2..67c3523 100644
--- a/src/goabackend/goaoauth2provider.h
+++ b/src/goabackend/goaoauth2provider.h
@@ -67,6 +67,7 @@ struct _GoaOAuth2Provider
* @get_identity_sync: Virtual function for goa_oauth2_provider_get_identity_sync().
* @build_authorization_uri: Virtual function for goa_oauth2_provider_build_authorization_uri().
* @get_use_external_browser: Virtual function for goa_oauth2_provider_get_use_external_browser().
+ * @add_account_key_values: Virtual function for goa_oauth2_provider_add_account_key_values().
*
* Class structure for #GoaOAuth2Provider.
*/
@@ -83,7 +84,7 @@ struct _GoaOAuth2ProviderClass
const gchar *(*get_client_secret) (GoaOAuth2Provider *provider);
gchar *(*get_identity_sync) (GoaOAuth2Provider *provider,
const gchar *access_token,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error);
@@ -94,6 +95,8 @@ struct _GoaOAuth2ProviderClass
const gchar *escaped_client_id,
const gchar *escaped_scope);
gboolean (*get_use_external_browser) (GoaOAuth2Provider *provider);
+ void (*add_account_key_values) (GoaOAuth2Provider *provider,
+ GVariantBuilder *builder);
/*< private >*/
/* Padding for future expansion */
@@ -109,7 +112,7 @@ const gchar *goa_oauth2_provider_get_client_id (GoaOAuth2Provider *p
const gchar *goa_oauth2_provider_get_client_secret (GoaOAuth2Provider *provider);
gchar *goa_oauth2_provider_get_identity_sync (GoaOAuth2Provider *provider,
const gchar *access_token,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error);
gchar *goa_oauth2_provider_get_access_token_sync (GoaOAuth2Provider *provider,
@@ -124,6 +127,8 @@ gchar *goa_oauth2_provider_build_authorization_uri (GoaOAuth2Provider *p
const gchar *escaped_client_id,
const gchar *escaped_scope);
gboolean goa_oauth2_provider_get_use_external_browser (GoaOAuth2Provider *provider);
+void goa_oauth2_provider_add_account_key_values (GoaOAuth2Provider *provider,
+ GVariantBuilder *builder);
G_END_DECLS
diff --git a/src/goabackend/goaoauthprovider.c b/src/goabackend/goaoauthprovider.c
index 05e5fd7..352a54a 100644
--- a/src/goabackend/goaoauthprovider.c
+++ b/src/goabackend/goaoauthprovider.c
@@ -385,7 +385,7 @@ goa_oauth_provider_get_callback_uri (GoaOAuthProvider *provider)
* @provider: A #GoaOAuthProvider.
* @access_token: A valid OAuth 1.0 access token.
* @access_token_secret: The valid secret for @access_token.
- * @out_name: (out): Return location for name or %NULL.
+ * @out_presentation_identity: (out): Return location for presentation identity or %NULL.
* @cancellable: (allow-none): A #GCancellable or %NULL.
* @error: Return location for error or %NULL.
*
@@ -393,13 +393,9 @@ goa_oauth_provider_get_callback_uri (GoaOAuthProvider *provider)
* @access_token_secret.
*
* The identity is needed because all authentication happens out of
- * band. The only requirement is that the returned identity is unique
- * - for example, for #GoaGoogleProvider the returned identity
- * is the email address, for #GoaFacebookProvider it's the user
- * name. In addition to the identity, an implementation also returns a
- * <emphasis>name</emphasis> in @out_name that is more suitable for
- * presentation (the identity could be a GUID for example) and doesn't
- * have to be unique.
+ * band. In addition to the identity, an implementation also returns a
+ * <emphasis>presentation identity</emphasis> that is more suitable
+ * for presentation (the identity could be a GUID for example).
*
* The calling thread is blocked while the identity is obtained.
*
@@ -413,7 +409,7 @@ gchar *
goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider,
const gchar *access_token,
const gchar *access_token_secret,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error)
{
@@ -421,7 +417,7 @@ goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider,
g_return_val_if_fail (access_token != NULL, NULL);
g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
- return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, access_token_secret, out_name, cancellable, error);
+ return GOA_OAUTH_PROVIDER_GET_CLASS (provider)->get_identity_sync (provider, access_token, access_token_secret, out_presentation_identity, cancellable, error);
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -546,7 +542,7 @@ typedef struct
gchar *oauth_verifier;
gchar *identity;
- gchar *name;
+ gchar *presentation_identity;
gchar *request_token;
gchar *request_token_secret;
@@ -622,7 +618,7 @@ get_tokens_and_identity (GoaOAuthProvider *provider,
gchar **out_session_handle,
gint *out_session_handle_expires_in,
gchar **out_identity,
- gchar **out_name,
+ gchar **out_presentation_identity,
GError **error)
{
gboolean ret;
@@ -827,7 +823,7 @@ get_tokens_and_identity (GoaOAuthProvider *provider,
data.identity = goa_oauth_provider_get_identity_sync (provider,
data.access_token,
data.access_token_secret,
- &data.name,
+ &data.presentation_identity,
NULL, /* TODO: GCancellable */
&data.error);
if (data.identity == NULL)
@@ -857,8 +853,8 @@ get_tokens_and_identity (GoaOAuthProvider *provider,
*out_session_handle_expires_in = data.session_handle_expires_in;
if (out_identity != NULL)
*out_identity = g_strdup (data.identity);
- if (out_name != NULL)
- *out_name = g_strdup (data.name);
+ if (out_presentation_identity != NULL)
+ *out_presentation_identity = g_strdup (data.presentation_identity);
}
else
{
@@ -866,7 +862,7 @@ get_tokens_and_identity (GoaOAuthProvider *provider,
g_propagate_error (error, data.error);
}
- g_free (data.name);
+ g_free (data.presentation_identity);
g_free (data.identity);
g_free (url);
@@ -947,7 +943,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider,
gchar *session_handle;
gint session_handle_expires_in;
gchar *identity;
- gchar *name;
+ gchar *presentation_identity;
GList *accounts;
GList *l;
AddData data;
@@ -964,7 +960,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider,
access_token_secret = NULL;
session_handle = NULL;
identity = NULL;
- name = NULL;
+ presentation_identity = NULL;
accounts = NULL;
memset (&data, '\0', sizeof (AddData));
@@ -979,7 +975,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider,
&session_handle,
&session_handle_expires_in,
&identity,
- &name,
+ &presentation_identity,
&data.error))
goto out;
@@ -1003,7 +999,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider,
goa_provider_get_provider_type (GOA_PROVIDER (provider))) != 0)
continue;
- identity_from_object = goa_oauth_based_get_identity (oauth_based);
+ identity_from_object = goa_account_get_identity (account);
if (g_strcmp0 (identity_from_object, identity) == 0)
{
g_set_error (&data.error,
@@ -1020,11 +1016,11 @@ goa_oauth_provider_add_account (GoaProvider *_provider,
* waiting for this to complete
*/
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
- g_variant_builder_add (&builder, "{ss}", "Identity", identity);
goa_oauth_provider_add_account_key_values (provider, &builder);
goa_manager_call_add_account (goa_client_get_manager (client),
goa_provider_get_provider_type (GOA_PROVIDER (provider)),
- name, /* Name */
+ identity,
+ presentation_identity,
g_variant_builder_end (&builder),
NULL, /* GCancellable* */
(GAsyncReadyCallback) add_account_cb,
@@ -1069,7 +1065,7 @@ goa_oauth_provider_add_account (GoaProvider *_provider,
g_list_foreach (accounts, (GFunc) g_object_unref, NULL);
g_list_free (accounts);
g_free (identity);
- g_free (name);
+ g_free (presentation_identity);
g_free (access_token);
g_free (access_token_secret);
g_free (session_handle);
@@ -1129,11 +1125,11 @@ goa_oauth_provider_refresh_account (GoaProvider *_provider,
&session_handle,
&session_handle_expires_in,
&identity,
- NULL, /* out_name */
+ NULL, /* out_presentation_identity */
error))
goto out;
- existing_identity = goa_oauth_based_get_identity (goa_object_peek_oauth_based (object));
+ existing_identity = goa_account_get_identity (goa_object_peek_account (object));
if (g_strcmp0 (identity, existing_identity) != 0)
{
g_set_error (error,
@@ -1462,17 +1458,6 @@ goa_oauth_provider_build_object (GoaProvider *provider,
G_CALLBACK (on_handle_get_access_token),
NULL);
- identity = g_key_file_get_string (key_file, group, "Identity", NULL);
- if (identity == NULL)
- {
- g_set_error (error,
- GOA_ERROR,
- GOA_ERROR_FAILED,
- "No Identity key");
- goto out;
- }
- goa_oauth_based_set_identity (oauth_based, identity);
-
out:
g_object_unref (oauth_based);
g_free (identity);
@@ -1516,7 +1501,7 @@ goa_oauth_provider_ensure_credentials_sync (GoaProvider *_provider,
identity = goa_oauth_provider_get_identity_sync (provider,
access_token,
access_token_secret,
- NULL, /* out_name */
+ NULL, /* out_presentation_identity */
cancellable,
error);
if (identity == NULL)
diff --git a/src/goabackend/goaoauthprovider.h b/src/goabackend/goaoauthprovider.h
index 876dacb..fbadfa7 100644
--- a/src/goabackend/goaoauthprovider.h
+++ b/src/goabackend/goaoauthprovider.h
@@ -69,6 +69,7 @@ struct _GoaOAuthProvider
* @build_authorization_uri: Virtual function for goa_oauth_provider_build_authorization_uri().
* @get_use_external_browser: Virtual function for goa_oauth_provider_get_use_external_browser().
* @get_request_uri_params: Virtual function for goa_oauth_provider_get_request_uri_params().
+ * @add_account_key_values: Virtual function for goa_oauth_provider_add_account_key_values().
*
* Class structure for #GoaOAuthProvider.
*/
@@ -87,7 +88,7 @@ struct _GoaOAuthProviderClass
gchar *(*get_identity_sync) (GoaOAuthProvider *provider,
const gchar *access_token,
const gchar *access_token_secret,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error);
@@ -116,7 +117,7 @@ const gchar *goa_oauth_provider_get_callback_uri (GoaOAuthProvider *pro
gchar *goa_oauth_provider_get_identity_sync (GoaOAuthProvider *provider,
const gchar *access_token,
const gchar *access_token_secret,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error);
gchar *goa_oauth_provider_get_access_token_sync (GoaOAuthProvider *provider,
diff --git a/src/goabackend/goaprovider.c b/src/goabackend/goaprovider.c
index 072e380..e6fbe4c 100644
--- a/src/goabackend/goaprovider.c
+++ b/src/goabackend/goaprovider.c
@@ -231,10 +231,10 @@ goa_provider_refresh_account (GoaProvider *provider,
* Method used to add widgets in the control panel for the account
* represented by @object.
*
- * This is a virtual method with an implementation that adds widgets
- * for editing the name and the icon. A subclass should chain up
- * (before adding their own widgets to @vbox and @table) if they want
- * to expose such functionality.
+ * This is a virtual method with an implementation that (currently)
+ * does nothing. A subclass should chain up (before adding their own
+ * widgets to @vbox and @table) if they want to expose such
+ * functionality.
*/
void
goa_provider_show_account (GoaProvider *provider,
@@ -261,10 +261,7 @@ goa_provider_show_account_real (GoaProvider *provider,
GtkBox *vbox,
GtkTable *table)
{
- GtkWidget *elabel;
- elabel = goa_util_add_row_editable_label_from_keyfile (table, object, NULL, "Name", TRUE);
- goa_editable_label_set_scale (GOA_EDITABLE_LABEL (elabel), 1.2);
- goa_editable_label_set_weight (GOA_EDITABLE_LABEL (elabel), 700);
+ /* For now, don't do anything */
}
/* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/goabackend/goatwitterprovider.c b/src/goabackend/goatwitterprovider.c
index 52681ec..4d9ed18 100644
--- a/src/goabackend/goatwitterprovider.c
+++ b/src/goabackend/goatwitterprovider.c
@@ -95,28 +95,6 @@ get_request_uri (GoaOAuthProvider *provider)
return "https://api.twitter.com/oauth/request_token";
}
-static gchar **
-get_request_uri_params (GoaOAuthProvider *provider)
-{
- return NULL;
- GPtrArray *p;
- p = g_ptr_array_new ();
- g_ptr_array_add (p, g_strdup ("xoauth_displayname"));
- g_ptr_array_add (p, g_strdup ("GNOME"));
-
- g_ptr_array_add (p, g_strdup ("scope"));
- g_ptr_array_add (p, g_strdup (
- /* Display email address: cf. https://sites.twitter.com/site/oauthgoog/Home/emaildisplayscope */
- "https://www.twitterapis.com/auth/userinfo#email "
- /* IMAP, SMTP access: http://code.twitter.com/apis/gmail/oauth/protocol.html */
- "https://mail.twitter.com/ "
- /* Calendar data API: http://code.twitter.com/apis/calendar/data/2.0/developers_guide.html */
- "https://www.twitter.com/calendar/feeds"));
- g_ptr_array_add (p, NULL);
- return (gchar **) g_ptr_array_free (p, FALSE);
-}
-
-
static const gchar *
get_authorization_uri (GoaOAuthProvider *provider)
{
@@ -141,7 +119,7 @@ static gchar *
get_identity_sync (GoaOAuthProvider *provider,
const gchar *access_token,
const gchar *access_token_secret,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error)
{
@@ -151,14 +129,14 @@ get_identity_sync (GoaOAuthProvider *provider,
JsonObject *json_object;
gchar *ret;
gchar *id;
- gchar *name;
+ gchar *presentation_identity;
ret = NULL;
proxy = NULL;
call = NULL;
parser = NULL;
id = NULL;
- name = NULL;
+ presentation_identity = NULL;
/* TODO: cancellable */
@@ -204,8 +182,8 @@ get_identity_sync (GoaOAuthProvider *provider,
_("Didn't find id_str member in JSON data"));
goto out;
}
- name = g_strdup (json_object_get_string_member (json_object, "screen_name"));
- if (name == NULL)
+ presentation_identity = g_strdup (json_object_get_string_member (json_object, "screen_name"));
+ if (presentation_identity == NULL)
{
g_set_error (error,
GOA_ERROR,
@@ -216,15 +194,15 @@ get_identity_sync (GoaOAuthProvider *provider,
ret = id;
id = NULL;
- if (out_name != NULL)
+ if (out_presentation_identity != NULL)
{
- *out_name = name;
- name = NULL;
+ *out_presentation_identity = presentation_identity;
+ presentation_identity = NULL;
}
out:
g_free (id);
- g_free (name);
+ g_free (presentation_identity);
if (call != NULL)
g_object_unref (call);
if (proxy != NULL)
@@ -241,42 +219,20 @@ build_object (GoaProvider *provider,
const gchar *group,
GError **error)
{
- GoaAccount *account;
gboolean ret;
- gchar *id;
-
- id = NULL;
- account = NULL;
ret = FALSE;
/* Chain up */
if (!GOA_PROVIDER_CLASS (goa_twitter_provider_parent_class)->build_object (provider,
- object,
- key_file,
- group,
- error))
+ object,
+ key_file,
+ group,
+ error))
goto out;
- account = goa_object_get_account (GOA_OBJECT (object));
-
- id = g_key_file_get_string (key_file, group, "Identity", NULL);
- if (id == NULL)
- {
- g_set_error (error,
- GOA_ERROR,
- GOA_ERROR_FAILED,
- "Invalid identity %s for id %s",
- id,
- goa_account_get_id (account));
- goto out;
- }
-
ret = TRUE;
out:
- g_free (id);
- if (account != NULL)
- g_object_unref (account);
return ret;
}
@@ -300,9 +256,7 @@ show_account (GoaProvider *provider,
{
/* Chain up */
GOA_PROVIDER_CLASS (goa_twitter_provider_parent_class)->show_account (provider, client, object, vbox, table);
-
- /* TODO: look up screenname from account number */
- goa_util_add_row_editable_label_from_keyfile (table, object, _("Account Number"), "Identity", FALSE);
+ goa_util_add_row_editable_label_from_keyfile (table, object, _("User Name"), "PresentationIdentity", FALSE);
}
/* ---------------------------------------------------------------------------------------------------- */
@@ -329,7 +283,6 @@ goa_twitter_provider_class_init (GoaTwitterProviderClass *klass)
oauth_class->get_consumer_key = get_consumer_key;
oauth_class->get_consumer_secret = get_consumer_secret;
oauth_class->get_request_uri = get_request_uri;
- oauth_class->get_request_uri_params = get_request_uri_params;
oauth_class->get_authorization_uri = get_authorization_uri;
oauth_class->get_token_uri = get_token_uri;
oauth_class->get_callback_uri = get_callback_uri;
diff --git a/src/goabackend/goayahooprovider.c b/src/goabackend/goayahooprovider.c
index f62ea4f..37d4c71 100644
--- a/src/goabackend/goayahooprovider.c
+++ b/src/goabackend/goayahooprovider.c
@@ -119,7 +119,7 @@ static gchar *
get_identity_sync (GoaOAuthProvider *provider,
const gchar *access_token,
const gchar *access_token_secret,
- gchar **out_name,
+ gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error)
{
@@ -130,14 +130,14 @@ get_identity_sync (GoaOAuthProvider *provider,
JsonObject *json_data_object;
gchar *ret;
gchar *guid;
- gchar *name;
+ gchar *presentation_identity;
ret = NULL;
proxy = NULL;
call = NULL;
parser = NULL;
guid = NULL;
- name = NULL;
+ presentation_identity = NULL;
/* TODO: cancellable */
@@ -195,7 +195,7 @@ get_identity_sync (GoaOAuthProvider *provider,
goto out;
}
- /* OK, got the GUID, now get the name via http://developer.yahoo.com/social/rest_api_guide/usercard-resource.html */
+ /* OK, got the GUID, now get the presentation_identity via http://developer.yahoo.com/social/rest_api_guide/usercard-resource.html */
g_object_unref (proxy);
g_object_unref (call);
proxy = oauth_proxy_new_with_token (goa_oauth_provider_get_consumer_key (provider),
@@ -245,8 +245,8 @@ get_identity_sync (GoaOAuthProvider *provider,
goto out;
}
- name = g_strdup (json_object_get_string_member (json_data_object, "nickname"));
- if (name == NULL)
+ presentation_identity = g_strdup (json_object_get_string_member (json_data_object, "nickname"));
+ if (presentation_identity == NULL)
{
g_set_error (error,
GOA_ERROR,
@@ -257,14 +257,14 @@ get_identity_sync (GoaOAuthProvider *provider,
ret = guid;
guid = NULL;
- if (out_name != NULL)
+ if (out_presentation_identity != NULL)
{
- *out_name = name;
- name = NULL;
+ *out_presentation_identity = presentation_identity;
+ presentation_identity = NULL;
}
out:
- g_free (name);
+ g_free (presentation_identity);
g_free (guid);
if (call != NULL)
g_object_unref (call);
@@ -282,12 +282,8 @@ build_object (GoaProvider *provider,
const gchar *group,
GError **error)
{
- GoaAccount *account;
gboolean ret;
- gchar *guid;
- guid = NULL;
- account = NULL;
ret = FALSE;
/* Chain up */
@@ -298,26 +294,9 @@ build_object (GoaProvider *provider,
error))
goto out;
- account = goa_object_get_account (GOA_OBJECT (object));
-
- guid = g_key_file_get_string (key_file, group, "Identity", NULL);
- if (guid == NULL)
- {
- g_set_error (error,
- GOA_ERROR,
- GOA_ERROR_FAILED,
- "Invalid identity %s for id %s",
- guid,
- goa_account_get_id (account));
- goto out;
- }
-
ret = TRUE;
out:
- g_free (guid);
- if (account != NULL)
- g_object_unref (account);
return ret;
}
@@ -340,7 +319,7 @@ show_account (GoaProvider *provider,
GOA_PROVIDER_CLASS (goa_yahoo_provider_parent_class)->show_account (provider, client, object, vbox, table);
/* TODO: look up email address / screenname from GUID */
- goa_util_add_row_editable_label_from_keyfile (table, object, _("GUID"), "Identity", FALSE);
+ goa_util_add_row_editable_label_from_keyfile (table, object, _("Name"), "PresentationIdentity", FALSE);
}
/* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/panel/goapanelaccountsmodel.c b/src/panel/goapanelaccountsmodel.c
index 76393d0..7f2dfc7 100644
--- a/src/panel/goapanelaccountsmodel.c
+++ b/src/panel/goapanelaccountsmodel.c
@@ -134,11 +134,10 @@ goa_panel_accounts_model_constructed (GObject *object)
GType types[GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS];
types[0] = G_TYPE_STRING;
- types[1] = G_TYPE_STRING;
- types[2] = GOA_TYPE_OBJECT;
- types[3] = G_TYPE_BOOLEAN;
- types[4] = G_TYPE_STRING;
- G_STATIC_ASSERT (5 == GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS);
+ types[1] = GOA_TYPE_OBJECT;
+ types[2] = G_TYPE_BOOLEAN;
+ types[3] = G_TYPE_STRING;
+ G_STATIC_ASSERT (4 == GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS);
gtk_list_store_set_column_types (GTK_LIST_STORE (model),
GOA_PANEL_ACCOUNTS_MODEL_N_COLUMNS,
types);
@@ -332,12 +331,11 @@ set_values (GoaPanelAccountsModel *model,
markup = g_strdup_printf ("<b>%s</b>\n"
"<small><span foreground=\"#555555\">%s</span></small>",
- goa_account_get_name (account),
- provider_name);
+ provider_name,
+ goa_account_get_presentation_identity (account));
gtk_list_store_set (GTK_LIST_STORE (model),
iter,
- GOA_PANEL_ACCOUNTS_MODEL_COLUMN_NAME, goa_account_get_name (account),
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_SORT_KEY, goa_account_get_id (account),
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_OBJECT, object,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ATTENTION_NEEDED, goa_account_get_attention_needed (account),
diff --git a/src/panel/goapanelaccountsmodel.h b/src/panel/goapanelaccountsmodel.h
index afc4ab5..aa99235 100644
--- a/src/panel/goapanelaccountsmodel.h
+++ b/src/panel/goapanelaccountsmodel.h
@@ -37,7 +37,6 @@ typedef struct _GoaPanelAccountsModel GoaPanelAccountsModel;
enum
{
- GOA_PANEL_ACCOUNTS_MODEL_COLUMN_NAME,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_SORT_KEY,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_OBJECT,
GOA_PANEL_ACCOUNTS_MODEL_COLUMN_ATTENTION_NEEDED,