node-ews
A simple JSON wrapper for the Exchange Web Services (EWS) SOAP API
npm install node-ews
About
A combination of node-soap and httpntlm wrapped up with some modifications to make queries to Microsoft's Exchange Web Service API work.
Features:
- Assumes NTLM Authentication over HTTPs
- Connects to configured EWS Host and downloads it's wsdl file so it might be concluded that this is "fairly" version agnostic
- After downloading the wsdl file, the wrapper dynamically exposes all EWS SOAP functions
- Attempts to standardize Microsoft's wsdl by modifying the file to include missing service name, port, and bindings
Example 1: Get Exchange Distribution List Members Using ExpandDL
var ews = require('node-ews');
var username = 'myuser@domain.com';
var password = 'mypassword';
var host = 'ews.domain.com';
var ewsFunction = 'ExpandDL';
var ewsArgs = {
'Mailbox': {
'EmailAddress':'publiclist@domain.com'
}
};
ews.auth(username, password, host);
ews.run(ewsFunction, ewsArgs, function(err, result) {
if(!err) console.log(JSON.stringify(result));
});
Known Issues / Limits / TODOs:
- Depends on a modified fork of the soap-ntlm fork of node-soap. A node-soap auth plugin is not possible due to the nature of NTLM. This is located in this repository.
- Returned json requires a lot of parsing. Probably can be optimized to remove common parent elements to the EWS responses or dynamically filter based on query.
- Outside of the example below, nothing has been tested (aka "It's production ready!")
- Temp file cleanup logic needs to be validated to ensure file cleanup after process exit or object destruction