loader.io.api
Version:
loader.io api wrapper for nodejs. If you interested in this npm package, take a look at the npm package [perst](https://dasred.github.io/perst).
87 lines (71 loc) • 2.7 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var fetch = require('node-fetch');
var qs = require('qs');
var Exception = require('./Exception.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var fetch__default = /*#__PURE__*/_interopDefaultLegacy(fetch);
var qs__default = /*#__PURE__*/_interopDefaultLegacy(qs);
class Client {
static METHOD = {
GET: 'GET',
POST: 'POST',
PATCH: 'PATCH',
PUT: 'PUT',
DELETE: 'DELETE',
};
/**
*
* @param {string} token
* @param {string} server
* @param {string} version
*/
constructor(token, server = 'https://api.loader.io', version = 'v2') {
this.token = token;
this.server = server;
this.version = version;
}
/**
*
* @return {Promise<*>}
*/
async request(path, method, {parameters = undefined, body = undefined} = {}) {
const query = qs__default['default'].stringify(parameters, {
encodeValuesOnly: true,
arrayFormat: 'brackets',
addQueryPrefix: true
});
const url = `${this.server}/${this.version}/${path}${query}`;
const options = {
method,
parameters,
body: body != null && body instanceof Object ? JSON.stringify(body) : body,
headers: {'loaderio-auth': this.token},
};
if (body != null && body instanceof Object) {
options.headers['Content-Type'] = 'application/json';
}
try {
/** @type {Response} */
const response = await fetch__default['default'](url, options);
switch (response.status) {
case 200:
return await response.json();
case 204:
return undefined;
default:
const errorMessage = await response.json();
//noinspection ExceptionCaughtLocallyJS
throw new Exception['default'](`${errorMessage.errors.join('. ')}. - Loader.io request ${url} failed with response code ${response.status} (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#1xx_informational_response).`, response);
}
}
catch (error) {
if (error instanceof Exception['default']) {
throw error;
}
throw new Exception['default'](`Loader.io request ${url} failed with error ${error.message}`, error);
}
}
}
module.exports = exports = Client;
exports['default'] = Client;