branch: externals/excorporate commit 166b41738f92d1828b27f1fa7168b2176afdaa83 Author: Thomas Fitzsimmons <fitz...@fitzsim.org> Commit: Thomas Fitzsimmons <fitz...@fitzsim.org>
Excorporate: Add an organizer resolver function * packages/excorporate/excorporate.el (exco-organizer-smtp-email-address): New function. --- excorporate.el | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/excorporate.el b/excorporate.el index ec9f793..84c404c 100644 --- a/excorporate.el +++ b/excorporate.el @@ -861,6 +861,38 @@ argument ICALENDAR-TEXT." mime-path response))) coding-system)))))) +;; The organizer email is in the server's internal "EX" format. +;; Resolve it synchronously, for simplicity. +(defun exco-organizer-smtp-email-address (identifier organizer-structure) + "Return the organizer's SMTP email address as a string. +IDENTIFIER is the connection identifier to use to resolve +ORGANIZER-STRUCTURE to the returned value. ORGANIZER-STRUCTURE +should be treated as opaque." + (let* ((wrapped (list (list organizer-structure))) + (routing-type + (exco-extract-value '(Organizer Mailbox RoutingType) wrapped)) + (email-address + (exco-extract-value '(Organizer Mailbox EmailAddress) wrapped))) + (cond + ((equal routing-type "EX") + (exco-extract-value + '(ResponseMessages + ResolveNamesResponseMessage + ResolutionSet + Resolution + Mailbox + EmailAddress) + (with-timeout + (2 (progn + (message (concat "exco-organizer-smtp-email-address:" + " Server did not respond in time")) + nil)) + (exco-operate-synchronously identifier + "ResolveNames" + `(((UnresolvedEntry . ,email-address)) + nil nil nil))))) + ((equal routing-type "SMTP") email-address)))) + (defmacro exco--calendar-item-dolist (item items &rest forms) "Iterate through ITEMS. On each iteration, ITEM is set, and FORMS are run."