[evolution-ews] Bug #674321 - Support for password expiration information
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] Bug #674321 - Support for password expiration information
- Date: Fri, 10 Aug 2012 06:26:31 +0000 (UTC)
commit 813b8812751cf2c90ed2f0bb3e14f8133a54998f
Author: Vibha Yadav <yvibha suse com>
Date: Fri Aug 10 08:25:38 2012 +0200
Bug #674321 - Support for password expiration information
src/server/e-ews-connection.c | 137 +++++++++++++++++++++++++++++++++++++++++
src/server/e-ews-connection.h | 22 +++++++
src/server/e-ews-message.c | 6 ++
src/server/e-ews-message.h | 5 +-
src/server/e-soap-message.c | 4 +-
5 files changed, 171 insertions(+), 3 deletions(-)
---
diff --git a/src/server/e-ews-connection.c b/src/server/e-ews-connection.c
index ac346b0..aa46f28 100644
--- a/src/server/e-ews-connection.c
+++ b/src/server/e-ews-connection.c
@@ -7179,3 +7179,140 @@ e_ews_connection_set_folder_permissions_sync (EEwsConnection *cnc,
return success;
}
+
+static void
+get_password_expiration_response_cb (ESoapResponse *response,
+ GSimpleAsyncResult *simple)
+{
+ EwsAsyncData *async_data;
+ ESoapParameter *param;
+ gchar *exp_date;
+ GError *error = NULL;
+
+ async_data = g_simple_async_result_get_op_res_gpointer (simple);
+
+ param = e_soap_response_get_first_parameter_by_name (
+ response, "PasswordExpirationDate", &error);
+
+ /* Sanity check */
+ g_return_if_fail (
+ (param != NULL && error == NULL) ||
+ (param == NULL && error != NULL));
+
+ if (error != NULL) {
+ g_simple_async_result_take_error (simple, error);
+ return;
+ }
+
+ exp_date = e_soap_parameter_get_string_value (param);
+
+ async_data->items = g_slist_append (async_data->items, exp_date);
+}
+
+/**
+ * e_ews_connection_get_password_expiration
+ * @cnc:
+ * @pri:
+ * @mail_id: mail is for which password expiration is requested
+ * @cb:
+ * @cancellable:
+ * @user_data:
+ **/
+void
+e_ews_connection_get_password_expiration (EEwsConnection *cnc,
+ gint pri,
+ const gchar *mail_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ ESoapMessage *msg;
+ GSimpleAsyncResult *simple;
+ EwsAsyncData *async_data;
+
+ msg = e_ews_message_new_with_header (cnc->priv->uri, "GetPasswordExpirationDate", NULL, NULL, EWS_EXCHANGE_2010_SP2);
+ e_ews_message_write_string_parameter (msg, "MailboxSmtpAddress", NULL, mail_id ? mail_id : cnc->priv->email);
+ e_ews_message_write_footer (msg);
+
+ simple = g_simple_async_result_new (
+ G_OBJECT (cnc), callback, user_data,
+ e_ews_connection_get_password_expiration);
+
+ async_data = g_new0 (EwsAsyncData, 1);
+ g_simple_async_result_set_op_res_gpointer (
+ simple, async_data, (GDestroyNotify) async_data_free);
+
+ e_ews_connection_queue_request (
+ cnc, msg, get_password_expiration_response_cb,
+ pri, cancellable, simple);
+
+ g_object_unref (simple);
+}
+
+gboolean
+e_ews_connection_get_password_expiration_finish (EEwsConnection *cnc,
+ GAsyncResult *result,
+ gchar **exp_date,
+ GError **error)
+{
+ GSimpleAsyncResult *simple;
+ EwsAsyncData *async_data;
+
+ g_return_val_if_fail (exp_date != NULL, FALSE);
+ g_return_val_if_fail (
+ g_simple_async_result_is_valid (
+ result, G_OBJECT (cnc), e_ews_connection_get_password_expiration),
+ FALSE);
+
+ simple = G_SIMPLE_ASYNC_RESULT (result);
+ async_data = g_simple_async_result_get_op_res_gpointer (simple);
+
+ if (g_simple_async_result_propagate_error (simple, error))
+ return FALSE;
+
+ g_return_val_if_fail (async_data->items != NULL, FALSE);
+
+ *exp_date = async_data->items->data;
+ g_slist_free (async_data->items);
+
+ return TRUE;
+}
+
+/**
+ * e_ews_connection_get_password_expiration_sync
+ * @cnc:
+ * @pri:
+ * @mail_id: mail id for which password expiration is requested
+ * @cancellable:
+ * @error:
+ **/
+gboolean
+e_ews_connection_get_password_expiration_sync (EEwsConnection *cnc,
+ gint pri,
+ const gchar *mail_id,
+ gchar **exp_date,
+ GCancellable *cancellable,
+ GError **error)
+{
+ EAsyncClosure *closure;
+ GAsyncResult *result;
+ gboolean success;
+
+ g_return_val_if_fail (E_IS_EWS_CONNECTION (cnc), FALSE);
+ g_return_val_if_fail (exp_date != NULL, FALSE);
+
+ closure = e_async_closure_new ();
+
+ e_ews_connection_get_password_expiration (
+ cnc, pri, mail_id, cancellable,
+ e_async_closure_callback, closure);
+
+ result = e_async_closure_wait (closure);
+
+ success = e_ews_connection_get_password_expiration_finish (
+ cnc, result, exp_date, error);
+
+ e_async_closure_free (closure);
+
+ return success;
+}
diff --git a/src/server/e-ews-connection.h b/src/server/e-ews-connection.h
index b510c57..269f710 100644
--- a/src/server/e-ews-connection.h
+++ b/src/server/e-ews-connection.h
@@ -909,6 +909,28 @@ gboolean e_ews_connection_set_folder_permissions_sync
GCancellable *cancellable,
GError **error);
+void e_ews_connection_get_password_expiration
+ (EEwsConnection *cnc,
+ gint pri,
+ const gchar *mail_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_ews_connection_get_password_expiration_finish
+ (EEwsConnection *cnc,
+ GAsyncResult *result,
+ gchar **exp_date,
+ GError **error);
+
+gboolean e_ews_connection_get_password_expiration_sync
+ (EEwsConnection *cnc,
+ gint pri,
+ const gchar *mail_id,
+ gchar **exp_date,
+ GCancellable *cancellable,
+ GError **error);
+
G_END_DECLS
#endif
diff --git a/src/server/e-ews-message.c b/src/server/e-ews-message.c
index c7222a7..f1077aa 100644
--- a/src/server/e-ews-message.c
+++ b/src/server/e-ews-message.c
@@ -58,6 +58,12 @@ e_ews_message_new_with_header (const gchar *uri,
/* server info */
if (server_info == EWS_EXCHANGE_2007_SP1)
server_ver = "Exchange2007_SP1";
+ else if (server_info == EWS_EXCHANGE_2010)
+ server_ver = "Exchange2010";
+ else if (server_info == EWS_EXCHANGE_2010_SP1)
+ server_ver = "Exchange2010_SP1";
+ else if (server_info == EWS_EXCHANGE_2010_SP2)
+ server_ver = "Exchange2010_SP2";
else
server_ver = "Exchange2007";
diff --git a/src/server/e-ews-message.h b/src/server/e-ews-message.h
index ed2ec7b..c616706 100644
--- a/src/server/e-ews-message.h
+++ b/src/server/e-ews-message.h
@@ -30,7 +30,10 @@ G_BEGIN_DECLS
typedef enum {
EWS_EXCHANGE_2007,
- EWS_EXCHANGE_2007_SP1
+ EWS_EXCHANGE_2007_SP1,
+ EWS_EXCHANGE_2010,
+ EWS_EXCHANGE_2010_SP1,
+ EWS_EXCHANGE_2010_SP2
} EwsServerVersion;
ESoapMessage * e_ews_message_new_with_header (const gchar *uri,
diff --git a/src/server/e-soap-message.c b/src/server/e-soap-message.c
index 31c2115..d3e63e1 100644
--- a/src/server/e-soap-message.c
+++ b/src/server/e-soap-message.c
@@ -468,7 +468,7 @@ e_soap_message_start_envelope (ESoapMessage *msg)
(const xmlChar *) "SOAP-ENC");
xmlNewNs (
msg->priv->doc->xmlRootNode,
- (const xmlChar *) "http://www.w3.org/1999/XMLSchema",
+ (const xmlChar *) "http://www.w3.org/2001/XMLSchema",
(const xmlChar *) "xsd");
xmlNewNs (
msg->priv->doc->xmlRootNode,
@@ -476,7 +476,7 @@ e_soap_message_start_envelope (ESoapMessage *msg)
(const xmlChar *) "SOAP-ENV");
msg->priv->xsi_ns = xmlNewNs (
msg->priv->doc->xmlRootNode,
- (const xmlChar *) "http://www.w3.org/1999/XMLSchema-instance",
+ (const xmlChar *) "http://www.w3.org/2001/XMLSchema-instance",
(const xmlChar *) "xsi");
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]