From e9107ba36333eabf5518cee7c6658eb96fdf2cb0 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Tue, 1 Mar 2016 23:59:11 -0500 Subject: [PATCH] packages/excorporate: Improve exco-get-meetings-for-day * packages/excorporate/excorporate.el (exco-get-meetings-for-day): Add RequestVersion header to FindItem request. Use soap-operation-arity to calculate how many nil arguments to send. --- packages/excorporate/excorporate.el | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/excorporate/excorporate.el b/packages/excorporate/excorporate.el index 8168dd38b..6051fdd62 100644 --- a/packages/excorporate/excorporate.el +++ b/packages/excorporate/excorporate.el @@ -708,7 +708,12 @@ arguments, IDENTIFIER and the server's response." identifier "FindItem" `(;; Main arguments. - ((Traversal . "Shallow") + (;; RequestVersion is usually overridden by a fixed value in + ;; the WSDL (the RequestServerVersion element); provide the + ;; maximally-compatible Exchange2007 if the fixed value isn't + ;; present. + (RequestVersion (Version . "Exchange2007")) + (Traversal . "Shallow") (ItemShape (BaseShape . "AllProperties")) ;; To aid productivity, excorporate-calfw automatically prunes your @@ -719,16 +724,13 @@ arguments, IDENTIFIER and the server's response." (ParentFolderIds (DistinguishedFolderId (Id . "calendar")))) ;; Empty arguments. - ,@(let ((server-major-version - (string-to-number - (substring (exco-server-version identifier) 8 12)))) - (cond - ((<= server-major-version 2007) - '(nil nil nil nil)) - ((< server-major-version 2013) - '(nil nil nil nil nil)) - (t - '(nil nil nil nil nil nil))))) + ,@(let* ((wsdl (exco--with-fsm identifier + (plist-get (fsm-get-state-data fsm) + :service-wsdl))) + (arity (soap-operation-arity wsdl + "ExchangeServicePort" + "FindItem"))) + (make-list (- arity 1) nil))) callback))) (defun exco-connection-iterate (initialize-function -- 2.39.2