CamelService: Add "password" property.
authorMatthew Barnes <mbarnes@redhat.com>
Sun, 25 Sep 2011 19:40:05 +0000 (15:40 -0400)
committerMatthew Barnes <mbarnes@redhat.com>
Mon, 26 Sep 2011 13:37:26 +0000 (09:37 -0400)
This is meant to be an alternative to caching passwords in CamelURLs.

camel/camel-service.c
camel/camel-service.h
docs/reference/camel/camel-sections.txt
docs/reference/camel/tmpl/camel-service.sgml

index a366ee9..01f501f 100644 (file)
@@ -60,6 +60,7 @@ struct _CamelServicePrivate {
        gchar *user_data_dir;
        gchar *user_cache_dir;
        gchar *uid;
+       gchar *password;
 
        GCancellable *connect_op;
        CamelServiceConnectionStatus status;
@@ -75,6 +76,7 @@ struct _AsyncContext {
 enum {
        PROP_0,
        PROP_DISPLAY_NAME,
+       PROP_PASSWORD,
        PROP_PROVIDER,
        PROP_SESSION,
        PROP_SETTINGS,
@@ -236,6 +238,12 @@ service_set_property (GObject *object,
                                g_value_get_string (value));
                        return;
 
+               case PROP_PASSWORD:
+                       camel_service_set_password (
+                               CAMEL_SERVICE (object),
+                               g_value_get_string (value));
+                       return;
+
                case PROP_PROVIDER:
                        service_set_provider (
                                CAMEL_SERVICE (object),
@@ -283,6 +291,12 @@ service_get_property (GObject *object,
                                CAMEL_SERVICE (object)));
                        return;
 
+               case PROP_PASSWORD:
+                       g_value_set_string (
+                               value, camel_service_get_password (
+                               CAMEL_SERVICE (object)));
+                       return;
+
                case PROP_PROVIDER:
                        g_value_set_pointer (
                                value, camel_service_get_provider (
@@ -357,6 +371,7 @@ service_finalize (GObject *object)
        g_free (priv->user_data_dir);
        g_free (priv->user_cache_dir);
        g_free (priv->uid);
+       g_free (priv->password);
 
        g_static_rec_mutex_free (&priv->connect_lock);
        g_static_mutex_free (&priv->connect_op_lock);
@@ -609,6 +624,18 @@ camel_service_class_init (CamelServiceClass *class)
 
        g_object_class_install_property (
                object_class,
+               PROP_PASSWORD,
+               g_param_spec_string (
+                       "password",
+                       "Password",
+                       "The password for the service",
+                       NULL,
+                       G_PARAM_READWRITE |
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_STATIC_STRINGS));
+
+       g_object_class_install_property (
+               object_class,
                PROP_PROVIDER,
                g_param_spec_pointer (
                        "provider",
@@ -774,6 +801,48 @@ camel_service_set_display_name (CamelService *service,
 }
 
 /**
+ * camel_service_get_password:
+ * @service: a #CamelService
+ *
+ * Returns the password for @service.  Some SASL mechanisms use this
+ * when attempting to authenticate.
+ *
+ * Returns: the password for @service
+ *
+ * Since: 3.4
+ **/
+const gchar *
+camel_service_get_password (CamelService *service)
+{
+       g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL);
+
+       return service->priv->password;
+}
+
+/**
+ * camel_service_set_password:
+ * @service: a #CamelService
+ * @password: the password for @service
+ *
+ * Sets the password for @service.  Use this function to cache the password
+ * in memory after obtaining it through camel_session_get_password().  Some
+ * SASL mechanisms use this when attempting to authenticate.
+ *
+ * Since: 3.4
+ **/
+void
+camel_service_set_password (CamelService *service,
+                            const gchar *password)
+{
+       g_return_if_fail (CAMEL_IS_SERVICE (service));
+
+       g_free (service->priv->password);
+       service->priv->password = g_strdup (password);
+
+       g_object_notify (G_OBJECT (service), "password");
+}
+
+/**
  * camel_service_get_user_data_dir:
  * @service: a #CamelService
  *
index 0784dde..c072998 100644 (file)
@@ -148,6 +148,9 @@ GQuark              camel_service_error_quark       (void) G_GNUC_CONST;
 const gchar *  camel_service_get_display_name  (CamelService *service);
 void           camel_service_set_display_name  (CamelService *service,
                                                 const gchar *display_name);
+const gchar *  camel_service_get_password      (CamelService *service);
+void           camel_service_set_password      (CamelService *service,
+                                                const gchar *password);
 const gchar *  camel_service_get_user_data_dir (CamelService *service);
 const gchar *  camel_service_get_user_cache_dir
                                                (CamelService *service);
index 14d69f3..a2b9899 100644 (file)
@@ -1954,6 +1954,8 @@ CamelServiceConnectionStatus
 CamelServiceAuthType
 camel_service_get_display_name
 camel_service_set_display_name
+camel_service_get_password
+camel_service_set_password
 camel_service_get_user_data_dir
 camel_service_get_name
 camel_service_get_provider
@@ -2184,7 +2186,6 @@ CAMEL_STORE_INFO_FOLDER_UNKNOWN
 CamelStoreSummaryFlags
 camel_store_summary_new
 camel_store_summary_set_filename
-camel_store_summary_set_uri_base
 camel_store_summary_load
 camel_store_summary_save
 camel_store_summary_header_load
index db5c5c7..f9d6c93 100644 (file)
@@ -31,6 +31,11 @@ CamelService
 
 </para>
 
+<!-- ##### ARG CamelService:password ##### -->
+<para>
+
+</para>
+
 <!-- ##### ARG CamelService:provider ##### -->
 <para>
 
@@ -112,6 +117,24 @@ CamelService
 @display_name: 
 
 
+<!-- ##### FUNCTION camel_service_get_password ##### -->
+<para>
+
+</para>
+
+@service: 
+@Returns: 
+
+
+<!-- ##### FUNCTION camel_service_set_password ##### -->
+<para>
+
+</para>
+
+@service: 
+@password: 
+
+
 <!-- ##### FUNCTION camel_service_get_user_data_dir ##### -->
 <para>