[frogr] Add support for OAuth tokens in FrogrAccount and FrogrConfig
- From: Mario Sanchez Prada <msanchez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [frogr] Add support for OAuth tokens in FrogrAccount and FrogrConfig
- Date: Wed, 4 Apr 2012 14:17:01 +0000 (UTC)
commit b3a2031f2103d0c4256598b4203fb4908b3323b8
Author: Mario Sanchez Prada <msanchez igalia com>
Date: Wed Apr 4 15:50:03 2012 +0200
Add support for OAuth tokens in FrogrAccount and FrogrConfig
src/frogr-account.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++++
src/frogr-account.h | 12 ++++++
src/frogr-config.c | 26 ++++++++++++-
src/frogr-controller.c | 2 +-
4 files changed, 135 insertions(+), 2 deletions(-)
---
diff --git a/src/frogr-account.c b/src/frogr-account.c
index d2b0d4d..6eba65b 100644
--- a/src/frogr-account.c
+++ b/src/frogr-account.c
@@ -35,6 +35,8 @@ typedef struct _FrogrAccountPrivate FrogrAccountPrivate;
struct _FrogrAccountPrivate
{
gchar *token;
+ gchar *oauth_token;
+ gchar *oauth_token_secret;
gchar *permissions;
gchar *id;
gchar *username;
@@ -53,6 +55,8 @@ struct _FrogrAccountPrivate
enum {
PROP_0,
PROP_TOKEN,
+ PROP_OAUTH_TOKEN,
+ PROP_OAUTH_TOKEN_SECRET,
PROP_PERMISSIONS,
PROP_ID,
PROP_USERNAME,
@@ -81,6 +85,14 @@ _frogr_account_set_property (GObject *object,
frogr_account_set_token (self, g_value_get_string (value));
break;
+ case PROP_OAUTH_TOKEN:
+ frogr_account_set_oauth_token (self, g_value_get_string (value));
+ break;
+
+ case PROP_OAUTH_TOKEN_SECRET:
+ frogr_account_set_oauth_token_secret (self, g_value_get_string (value));
+ break;
+
case PROP_PERMISSIONS:
frogr_account_set_permissions (self, g_value_get_string (value));
break;
@@ -136,6 +148,14 @@ _frogr_account_get_property (GObject *object,
g_value_set_string (value, priv->token);
break;
+ case PROP_OAUTH_TOKEN:
+ g_value_set_string (value, priv->oauth_token);
+ break;
+
+ case PROP_OAUTH_TOKEN_SECRET:
+ g_value_set_string (value, priv->oauth_token_secret);
+ break;
+
case PROP_PERMISSIONS:
g_value_set_string (value, priv->permissions);
break;
@@ -183,6 +203,8 @@ _frogr_account_finalize (GObject *object)
FrogrAccountPrivate *priv = FROGR_ACCOUNT_GET_PRIVATE (object);
g_free (priv->token);
+ g_free (priv->oauth_token);
+ g_free (priv->oauth_token_secret);
g_free (priv->permissions);
g_free (priv->id);
g_free (priv->username);
@@ -209,6 +231,20 @@ frogr_account_class_init (FrogrAccountClass *klass)
G_PARAM_READWRITE);
g_object_class_install_property (obj_class, PROP_TOKEN, pspec);
+ pspec = g_param_spec_string ("oauth-token",
+ "oauth-token",
+ "OAuth API authentication token",
+ "",
+ G_PARAM_READWRITE);
+ g_object_class_install_property (obj_class, PROP_OAUTH_TOKEN, pspec);
+
+ pspec = g_param_spec_string ("oauth-token-secret",
+ "oauth-token-secret",
+ "OAuth API authentication token secret",
+ "",
+ G_PARAM_READWRITE);
+ g_object_class_install_property (obj_class, PROP_OAUTH_TOKEN_SECRET, pspec);
+
pspec = g_param_spec_string ("permissions",
"permissions",
"Permissions granted for the account",
@@ -281,6 +317,8 @@ frogr_account_init (FrogrAccount *self)
{
FrogrAccountPrivate *priv = FROGR_ACCOUNT_GET_PRIVATE (self);
priv->token = NULL;
+ priv->oauth_token = NULL;
+ priv->oauth_token_secret = NULL;
priv->permissions = NULL;
priv->id = NULL;
priv->username = NULL;
@@ -308,6 +346,15 @@ frogr_account_new_with_token (const gchar *token)
NULL));
}
+FrogrAccount*
+frogr_account_new_with_oauth_tokens (const gchar *token, const gchar *token_secret)
+{
+ return FROGR_ACCOUNT (g_object_new (FROGR_TYPE_ACCOUNT,
+ "oauth-token", token,
+ "oauth-token-secret", token_secret,
+ NULL));
+}
+
const gchar *
frogr_account_get_token (FrogrAccount *self)
{
@@ -333,6 +380,56 @@ frogr_account_set_token (FrogrAccount *self,
}
const gchar*
+frogr_account_get_oauth_token (FrogrAccount *self)
+{
+ FrogrAccountPrivate *priv = NULL;
+
+ g_return_val_if_fail (FROGR_IS_ACCOUNT (self), NULL);
+
+ priv = FROGR_ACCOUNT_GET_PRIVATE (self);
+ return priv->oauth_token;
+}
+
+
+void
+frogr_account_set_oauth_token (FrogrAccount *self,
+ const gchar *token)
+{
+ FrogrAccountPrivate *priv = NULL;
+
+ g_return_if_fail (FROGR_IS_ACCOUNT (self));
+
+ priv = FROGR_ACCOUNT_GET_PRIVATE (self);
+ g_free (priv->oauth_token);
+ priv->oauth_token = g_strdup (token);
+}
+
+
+const gchar*
+frogr_account_get_oauth_token_secret (FrogrAccount *self)
+{
+ FrogrAccountPrivate *priv = NULL;
+
+ g_return_val_if_fail (FROGR_IS_ACCOUNT (self), NULL);
+
+ priv = FROGR_ACCOUNT_GET_PRIVATE (self);
+ return priv->oauth_token_secret;
+}
+
+void
+frogr_account_set_oauth_token_secret (FrogrAccount *self,
+ const gchar *token_secret)
+{
+ FrogrAccountPrivate *priv = NULL;
+
+ g_return_if_fail (FROGR_IS_ACCOUNT (self));
+
+ priv = FROGR_ACCOUNT_GET_PRIVATE (self);
+ g_free (priv->oauth_token_secret);
+ priv->oauth_token_secret = g_strdup (token_secret);
+}
+
+const gchar*
frogr_account_get_permissions (FrogrAccount *self)
{
FrogrAccountPrivate *priv = NULL;
diff --git a/src/frogr-account.h b/src/frogr-account.h
index f91f072..affbbf4 100644
--- a/src/frogr-account.h
+++ b/src/frogr-account.h
@@ -57,11 +57,23 @@ FrogrAccount* frogr_account_new (void);
FrogrAccount* frogr_account_new_with_token (const gchar *token);
+FrogrAccount* frogr_account_new_with_oauth_tokens (const gchar *token, const gchar *token_secret);
+
const gchar* frogr_account_get_token (FrogrAccount *self);
void frogr_account_set_token (FrogrAccount *self,
const gchar *token);
+const gchar* frogr_account_get_oauth_token (FrogrAccount *self);
+
+void frogr_account_set_oauth_token (FrogrAccount *self,
+ const gchar *token);
+
+const gchar* frogr_account_get_oauth_token_secret (FrogrAccount *self);
+
+void frogr_account_set_oauth_token_secret (FrogrAccount *self,
+ const gchar *token_secret);
+
const gchar* frogr_account_get_permissions (FrogrAccount *self);
void frogr_account_set_permissions (FrogrAccount *self,
diff --git a/src/frogr-config.c b/src/frogr-config.c
index cde65b9..b7ab800 100644
--- a/src/frogr-config.c
+++ b/src/frogr-config.c
@@ -584,6 +584,20 @@ _load_account_xml (FrogrAccount *faccount,
frogr_account_set_token (faccount, (gchar *)content);
}
+ if (xmlStrcmp (node->name, (const xmlChar*) "oauth-token") == 0)
+ {
+ content = xmlNodeGetContent (node);
+ if (content != NULL && content[0] != '\0')
+ frogr_account_set_oauth_token (faccount, (gchar *)content);
+ }
+
+ if (xmlStrcmp (node->name, (const xmlChar*) "oauth-token-secret") == 0)
+ {
+ content = xmlNodeGetContent (node);
+ if (content != NULL && content[0] != '\0')
+ frogr_account_set_oauth_token_secret (faccount, (gchar *)content);
+ }
+
if (xmlStrcmp (node->name, (const xmlChar*) "permissions") == 0)
{
content = xmlNodeGetContent (node);
@@ -746,7 +760,17 @@ _save_account_xml (FrogrAccount *faccount, xmlNodePtr parent)
node = xmlNewNode (NULL, (const xmlChar*) "account");
if (faccount) {
- _xml_add_string_child (node, "token", frogr_account_get_token (faccount));
+ const gchar *token = NULL;
+
+ if ((token = frogr_account_get_token (faccount)))
+ _xml_add_string_child (node, "token", token);
+
+ if ((token = frogr_account_get_oauth_token (faccount)))
+ _xml_add_string_child (node, "oauth-token", token);
+
+ if ((token = frogr_account_get_oauth_token_secret (faccount)))
+ _xml_add_string_child (node, "oauth-token-secret", token);
+
_xml_add_string_child (node, "permissions", frogr_account_get_permissions (faccount));
_xml_add_string_child (node, "id", frogr_account_get_id (faccount));
_xml_add_string_child (node, "username", frogr_account_get_username (faccount));
diff --git a/src/frogr-controller.c b/src/frogr-controller.c
index 75be64a..36edd66 100644
--- a/src/frogr-controller.c
+++ b/src/frogr-controller.c
@@ -500,7 +500,7 @@ _complete_auth_cb (GObject *object, GAsyncResult *result, gpointer data)
FrogrAccount *account = NULL;
/* Set and save the auth token and the settings to disk */
- account = frogr_account_new_with_token (auth_token->token);
+ account = frogr_account_new_with_oauth_tokens (auth_token->token, auth_token->token_secret);
frogr_account_set_id (account, auth_token->nsid);
frogr_account_set_username (account, auth_token->username);
frogr_account_set_fullname (account, auth_token->fullname);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]