all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Thomas Fitzsimmons <fitzsim@fitzsim.org>
To: emacs-devel@gnu.org
Subject: [elpa] Excorporate: Exchange integration package
Date: Sun, 08 Feb 2015 16:21:41 -0500	[thread overview]
Message-ID: <m361bc2j6i.fsf@fitzsim.org> (raw)

Hi,

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:

Download:
http://melpa.org/packages/calfw-20150206.1648.tar
http://www.fitzsim.org/emacs/excorporate-0.5.4.tar

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.

Features
========

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
  soap-client)

- 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.

API
===

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-api-version)
(exco-connect IDENTIFIER)
(exco-operate IDENTIFIER NAME ARGUMENTS CALLBACK)
(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 <tom@schutzer-weissmann.net>

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 <mange@freemail.hu>

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.

Bugs
====

- 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.

Thomas



             reply	other threads:[~2015-02-08 21:21 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-08 21:21 Thomas Fitzsimmons [this message]
2015-02-09  4:08 ` [elpa] Excorporate: Exchange integration package Stefan Monnier
2015-02-09  6:56   ` Achim Gratz
2015-02-09  8:05   ` Michael Albinus
2015-02-09  9:05     ` joakim
2015-02-09 11:00   ` Daniel Colascione
2015-02-09 12:24   ` Thomas Fitzsimmons
2015-02-09 12:40     ` David Kastrup
2015-02-09 14:16     ` Stefan Monnier
2015-02-10 20:23       ` Stefan Monnier
2015-02-11  1:24         ` Thomas Fitzsimmons
2015-02-11  6:55           ` Tassilo Horn
2015-02-11  9:42             ` David Kastrup
2015-02-11 12:59               ` Tassilo Horn
2015-02-11 13:07                 ` Dmitry Gutov
2015-02-11 13:53                   ` Michael Albinus
2015-02-11 15:01                   ` Tassilo Horn
2015-02-09 22:07   ` Richard Stallman
2015-02-09  8:14 ` Michael Albinus
2015-02-09 12:41   ` Thomas Fitzsimmons
2015-02-09 13:02     ` Michael Albinus
2015-02-09 13:21       ` Thomas Fitzsimmons
2015-02-09 13:34         ` Michael Albinus
2015-02-09 17:22           ` SOAP, WSDL Ivan Shmakov
2015-02-09 18:38             ` Michael Albinus
2015-02-09 18:50               ` Ivan Shmakov
2015-02-09 14:09     ` [elpa] Excorporate: Exchange integration package Stefan Monnier
2015-02-09 10:06 ` SAKURAI Masashi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m361bc2j6i.fsf@fitzsim.org \
    --to=fitzsim@fitzsim.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.