[frogr] Add support for OAuth tokens in FrogrAccount and FrogrConfig



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]