easy-soap-request
Version:
A small library to make SOAP requests easier
60 lines (58 loc) • 1.51 kB
JavaScript
const axios = require('axios');
/**
* @author Caleb Lemoine
* @param {object} opts easy-soap-request options
* @param {string} opts.method HTTP request method
* @param {string} opts.url endpoint URL
* @param {object} opts.headers HTTP headers, can be string or object
* @param {string} opts.xml SOAP envelope, can be read from file or passed as string
* @param {int} opts.timeout Milliseconds before timing out request
* @param {object} opts.proxy Object with proxy configuration
* @param {int} opts.maxBodyLength Limit body size being sent(bytes)
* @param {int} opts.maxContentLength Limit content size being sent(bytes)
* @param {object} opts.extraOpts Object of additional axios parameters
* @promise response
* @reject {error}
* @fulfill {body,statusCode}
* @returns {Promise.response{body,statusCode}}
*/
module.exports = function soapRequest(opts = {
method: 'POST',
url: '',
headers: {},
xml: '',
timeout: 10000,
proxy: {},
maxBodyLength: Infinity,
maxContentLength: Infinity,
extraOpts: {},
}) {
const {
method,
url,
headers,
xml,
timeout,
proxy,
maxBodyLength,
maxContentLength,
extraOpts,
} = opts;
return axios({
method: method || 'POST',
url,
headers,
data: xml,
timeout,
proxy,
maxBodyLength,
maxContentLength,
...extraOpts,
}).then((response) => ({
response: {
headers: response.headers,
body: response.data,
statusCode: response.status,
},
}));
};