[empathy: 12/65] Update for the new tp-spec API



commit 2f63c0828065d86239a6ff6ebbb8b07ddc929046
Author: Cosimo Cecchi <cosimo cecchi collabora co uk>
Date:   Mon Aug 9 12:27:47 2010 +0200

    Update for the new tp-spec API

 libempathy/empathy-tls-certificate.c |   70 +++++++++++++++++++++++++++++++---
 libempathy/empathy-tls-certificate.h |    3 +-
 2 files changed, 66 insertions(+), 7 deletions(-)
---
diff --git a/libempathy/empathy-tls-certificate.c b/libempathy/empathy-tls-certificate.c
index 84103fc..01ae25c 100644
--- a/libempathy/empathy-tls-certificate.c
+++ b/libempathy/empathy-tls-certificate.c
@@ -295,16 +295,16 @@ empathy_tls_certificate_class_init (EmpathyTLSCertificateClass *klass)
 
   pspec = g_param_spec_uint ("state", "State",
       "The state of this certificate.",
-      EMP_TLS_CERTIFICATE_STATE_NONE, NUM_EMP_TLS_CERTIFICATE_STATES -1,
-      EMP_TLS_CERTIFICATE_STATE_NONE,
+      EMP_TLS_CERTIFICATE_STATE_PENDING, NUM_EMP_TLS_CERTIFICATE_STATES -1,
+      EMP_TLS_CERTIFICATE_STATE_PENDING,
       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
   g_object_class_install_property (oclass, PROP_STATE, pspec);
 
   pspec = g_param_spec_uint ("reject-reason", "Reject reason",
       "The reason why this certificate was rejected.",
-      EMP_TLS_CERTIFICATE_REJECT_REASON_NONE,
+      EMP_TLS_CERTIFICATE_REJECT_REASON_UNKNOWN,
       NUM_EMP_TLS_CERTIFICATE_REJECT_REASONS -1,
-      EMP_TLS_CERTIFICATE_REJECT_REASON_NONE,
+      EMP_TLS_CERTIFICATE_REJECT_REASON_UNKNOWN,
       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
   g_object_class_install_property (oclass, PROP_REJECT_REASON, pspec);      
 }
@@ -333,6 +333,54 @@ cert_proxy_reject_cb (TpProxy *proxy,
     DEBUG ("Error was %s", error->message);
 }
 
+static const gchar *
+reject_reason_get_dbus_error (EmpTLSCertificateRejectReason reason)
+{
+  const gchar *retval = NULL;
+
+  switch (reason)
+    {
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_UNKNOWN:
+      retval = tp_error_get_dbus_name (TP_ERROR_CERT_INVALID);
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_UNTRUSTED:
+      retval = tp_error_get_dbus_name (TP_ERROR_CERT_UNTRUSTED);
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_EXPIRED:
+      retval = tp_error_get_dbus_name (TP_ERROR_CERT_EXPIRED);
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_NOT_ACTIVATED:
+      retval = tp_error_get_dbus_name (TP_ERROR_CERT_NOT_ACTIVATED);
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_FINGERPRINT_MISMATCH:
+      retval = tp_error_get_dbus_name (TP_ERROR_CERT_FINGERPRINT_MISMATCH);
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_HOSTNAME_MISMATCH:
+      retval = tp_error_get_dbus_name (TP_ERROR_CERT_HOSTNAME_MISMATCH);
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_SELF_SIGNED:
+      retval = tp_error_get_dbus_name (TP_ERROR_CERT_SELF_SIGNED);
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_REVOKED:
+      /* FIXME */
+      retval = "org.freedesktop.Telepathy.Error.Cert.Revoked";
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_INSECURE:
+      /* FIXME */
+      retval = "org.freedesktop.Telepathy.Error.Cert.Insecure";
+      break;
+    case EMP_TLS_CERTIFICATE_REJECT_REASON_LIMIT_EXCEEDED:
+      /* FIXME */
+      retval = "org.freedesktop.Telepathy.Error.Cert.LimitExceeded";
+      break;
+    default:
+      g_assert_not_reached ();
+      break;
+    }
+
+  return retval;
+}
+
 void
 empathy_tls_certificate_new_async (const gchar *bus_name,
     const gchar *object_path,
@@ -380,14 +428,24 @@ empathy_tls_certificate_accept (EmpathyTLSCertificate *self)
 
 void
 empathy_tls_certificate_reject (EmpathyTLSCertificate *self,
-    EmpTLSCertificateRejectReason reason)
+    EmpTLSCertificateRejectReason reason,
+    gboolean user_requested)
 {
+  GHashTable *details;
+  const gchar *dbus_error;
   EmpathyTLSCertificatePriv *priv = GET_PRIV (self);
 
   g_assert (EMPATHY_IS_TLS_CERTIFICATE (self));
 
   DEBUG ("Rejecting TLS certificate with reason %u", reason);
 
+  dbus_error = reject_reason_get_dbus_error (reason);
+  details = tp_asv_new ("user-requested", G_TYPE_BOOLEAN, user_requested,
+      NULL);
+
   emp_cli_authentication_tls_certificate_call_reject (priv->proxy,
-      -1, reason, cert_proxy_reject_cb, NULL, NULL, G_OBJECT (self));
+      -1, reason, dbus_error, details,
+      cert_proxy_reject_cb, NULL, NULL, G_OBJECT (self));
+
+  g_hash_table_unref (details);
 }
diff --git a/libempathy/empathy-tls-certificate.h b/libempathy/empathy-tls-certificate.h
index 4731340..c79c26a 100644
--- a/libempathy/empathy-tls-certificate.h
+++ b/libempathy/empathy-tls-certificate.h
@@ -68,7 +68,8 @@ EmpathyTLSCertificate * empathy_tls_certificate_new_finish (GAsyncResult * res,
 
 void empathy_tls_certificate_accept (EmpathyTLSCertificate *self);
 void empathy_tls_certificate_reject (EmpathyTLSCertificate *self,
-    EmpTLSCertificateRejectReason reason);
+    EmpTLSCertificateRejectReason reason,
+    gboolean user_requested);
 
 G_END_DECLS
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]