[Top][All Lists]

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

[elpa] Excorporate: Exchange integration package

From: Thomas Fitzsimmons
Subject: [elpa] Excorporate: Exchange integration package
Date: Sun, 08 Feb 2015 16:21:41 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)


I wrote a library called Excorporate that allows Emacs to talk to an
Exchange server over the Exchange Web Services API.  I would like to
release it as a GNU ELPA package.  In the meantime, you can try it out
like this:


M-x package-install-file calfw-20150206.1648.tar
M-x package-initialize
M-x package-install-file excorporate-0.5.4.tar

M-x excorporate
Follow prompts and enter Exchange credentials twice.

M-x calendar
Press 'e' to show today's meetings.

Alexandru Harsanyi provided lots of guidance and help extending
soap-client.el to support the full Exchange Web Services API.


The core library has the following features:

- Fully asynchronous -- it never blocks redisplay except for one rare
  error recovery condition

- General API for making Exchange Web Services calls -- the entire EWS
  API is supported (i.e., the entire WSDL file is properly parsed by

- Pure Emacs Lisp, using the built-in url and soap-client packages

- Support for all Emacs versions that support packages -- tested on
  versions 24.1 through 24.4 on GNU/Linux and MS-Windows

- Autodiscovery of configuration starting from only an email address

- NTLMv2 authentication

Proof of Concept

I've included a proof of concept that fetches today's meetings upon
request, and displays them using a calfw component.  I use this daily
and find it very convenient.  There's no support for week, two week or
month views since there's no caching.  Only read-only operations are
supported (e.g., you can't create meetings or respond to meeting
requests yet).

Mainly this release is to confirm all the tricky plumbing works for
people: autodiscovery, authentication, WSDL parsing.  Possible future
extensions include Gnus, Diary, EUDC and Org integration.


The API is simple for now.  The hard part of using it is figuring out
which Exchange Web Services operations to invoke, and their arguments.

(exco-connect IDENTIFIER)
(exco-disconnect IDENTIFIER)
(exco-extract-value PATH RESULT)
(exco-extend-timezone DATE-TIME-STRING)
(exco-format-date-time TIME-INTERNAL)

GNU ELPA Release Prerequisites

If the package is OK to go into GNU ELPA I'll need someone to confirm
copyright assignment for the following bundled dependencies:

url-http-ntlm.el (core library dependency):
Tom Schutzer-Weissmann <address@hidden>

Tom may not have paperwork on file; need confirmation.  I can rewrite
this if necessary.  I want to generalize it a little anyway.

fsm.el (core library dependency):
Magnus Henoch <address@hidden>

Seems to have paperwork done, need confirmation.  fsm.el should probably
be its own ELPA package or bundled in Emacs.

emacs-calfw (proof-of-concept dependency, could be split out):
SAKURAI Masashi <m.sakurai at kiwanami.net>

Seems to have paperwork done, need confirmation.  calfw should probably
be its own ELPA package.


- I bundled a patch to url-http-parse-headers to clear Authorization
  elements from url-http-extra-headers prior to executing a redirect,
  otherwise NTLM authentication doesn't work across redirects.  The
  implemented behaviour is backward compatible and should probably be
  committed to master (after review by a URL expert).

- On master only (24.1 through 24.4 are not affected) setting url-debug
  to 't causes url-retrieve to hang when contacting the server.  I'm not
  sure why yet.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]