alternate XHR methods for ewsjs
npm install @ewsjs/xhrother related libs will also move to @ewsjs scope/org
> 1.3.0 brings several changes, new api and proxy support. this is also re-written using popular request package
@ewsjs/ntlm-client to 3.0.0 to fix node 18+ issues with ntlmcookieAuthXhrApi, ntlmAuthXhrApi, proxySupportedXhrApi).request, bluebird and fetch.npm install @ewsjs/xhr --save
useProxy, useNtlmAuthentication and useCookieAuthentication returns the instance for chaining.
``ts
// import
import { ......, ConfigurationApi } from "ews-javascript-api";
import { XhrApi } from "@ewsjs/xhr";
// create instance
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false})
.useCookieAuthentication(credentials.userName, credentials.password)
.useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");
// alternatively
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false});
xhr.useCookieAuthentication(credentials.userName, credentials.password);
xhr.useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");
// use in ews-javascript-api
ConfigurationApi.ConfigureXHR(xhr);
`
ts
/**
* Creates an instance of XhrApi optionally passing options for request
* @memberof XhrApi
*/
new XhrApi();
/**
* Creates an instance of XhrApi optionally passing options for request
* @param {CoreOptions} requestOptions Options for request
* @memberof XhrApi
*/
new XhrApi(requestOptions: CoreOptions); // CoreOptions is from @types/request, part of request pkg
/**
* Creates an instance of XhrApi. optionally pass true to bypass remote ssl/tls certificate check
* @param {boolean} allowUntrustedCertificate whether to allow non trusted certificate or not
* @memberof XhrApi
*/
new XhrApi(allowUntrustedCertificate: boolean);
`Proxy server support
`ts
import { XhrApi } from "@ewsjs/xhr";// without proxy credential
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false})
.useProxy("http://squidorOtherProxyServer:3128");
// with proxy credential
let xhr = new XhrApi({ headers: { 'custom-header': 'value' }, rejectUnauthorized: false})
.useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");
`adding Ntlm authentication (or Windows Integrated Authentication with EWS)
`ts
import { XhrApi } from "@ewsjs/xhr";
let xhr = new XhrApi()
.useNtlmAuthentication(credentials.userName, credentials.password);
`adding cookies authentication (usage with TMG/ISA)
`ts
import { XhrApi } from "@ewsjs/xhr";
let xhr = new XhrApi({ rejectUnauthorized: false})
.useCookieAuthentication(credentials.userName, credentials.password);
`$3
`ts
import { XhrApi } from "@ewsjs/xhr";
let xhr = new XhrApi(true)
.useCookieAuthentication(credentials.userName, credentials.password)
.useProxy("http://squidorOtherProxyServer:3128", "proxyUser", "password");
``