From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thomas Fitzsimmons Newsgroups: gmane.emacs.devel Subject: [elpa] Excorporate: Exchange integration package Date: Sun, 08 Feb 2015 16:21:41 -0500 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1423430522 9294 80.91.229.3 (8 Feb 2015 21:22:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 8 Feb 2015 21:22:02 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Feb 08 22:22:01 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YKZIl-0006Bx-OD for ged-emacs-devel@m.gmane.org; Sun, 08 Feb 2015 22:21:59 +0100 Original-Received: from localhost ([::1]:57861 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YKZIk-00013h-FA for ged-emacs-devel@m.gmane.org; Sun, 08 Feb 2015 16:21:58 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51735) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YKZIc-00013Y-Td for emacs-devel@gnu.org; Sun, 08 Feb 2015 16:21:55 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YKZIY-0007RQ-AO for emacs-devel@gnu.org; Sun, 08 Feb 2015 16:21:50 -0500 Original-Received: from mail-ie0-f175.google.com ([209.85.223.175]:35718) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YKZIY-0007RE-6C for emacs-devel@gnu.org; Sun, 08 Feb 2015 16:21:46 -0500 Original-Received: by iebtr6 with SMTP id tr6so12372867ieb.2 for ; Sun, 08 Feb 2015 13:21:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version:content-type; bh=lHzKQwgm/DLPQ8k4+jth/8+Y7ve1FH/CNUPtBr7Qdg0=; b=lp4opljly7hmVcdOabMOrYdroF4PxFiaUd0enjgChusN98KfFrMKVTYqjqdpVCrIjl l6pzfnuAk/q1Sd4e1OlDS8L/w33IOI2gTKZrVBaoseFTugrfpgMW6mjq6zle9QUKlNYW /EpE7v1qii4NLsaspLj5ZNYeeqXI7mdvj5pGiOhf2Oa2XEgXI/DZXHFptsMCIURzlWPU 6iYNI0b7WG45d8p7D7ASsQp/Ltzv6wyYVPYIGJFP65Cfqq0kzRv7vhKiRWtiZuw+XoCk xuWm6nMp0KkLDOLgOwE81wi1RSUUadutf/EWSKAaoo36P1rtqgphQS09zAERSuTSROwW 2qeg== X-Gm-Message-State: ALoCoQknSOunQjxSF8NKZMLme6IYU/e6OmWyJ+JhYJ6u69Y5RCpoMGfBMkDY0wSwEwG7+zOe3foB X-Received: by 10.107.9.91 with SMTP id j88mr22387472ioi.91.1423430505012; Sun, 08 Feb 2015 13:21:45 -0800 (PST) Original-Received: from hp-dv5t (69-165-165-189.dsl.teksavvy.com. [69.165.165.189]) by mx.google.com with ESMTPSA id c6sm5218861ioe.37.2015.02.08.13.21.42 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Sun, 08 Feb 2015 13:21:44 -0800 (PST) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.223.175 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:182641 Archived-At: 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 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 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 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