99 lines
3.1 KiB
JavaScript
99 lines
3.1 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
|
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
|
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
|
|
var helper = require('./helper');
|
|
|
|
function api(_x, _x2, _x3, _x4) {
|
|
return _api.apply(this, arguments);
|
|
}
|
|
|
|
function _api() {
|
|
_api = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(baseUrl, config, method, params) {
|
|
var url, auth, authHeader, options, response, message, error;
|
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
while (1) {
|
|
switch (_context.prev = _context.next) {
|
|
case 0:
|
|
url = new URL(baseUrl);
|
|
auth = Buffer.from("".concat(config.username, ":").concat(config.apiKey)).toString('base64');
|
|
authHeader = "Basic ".concat(auth);
|
|
options = {
|
|
method: method,
|
|
headers: {
|
|
Authorization: authHeader
|
|
}
|
|
};
|
|
|
|
if (method === 'POST') {
|
|
options.body = new helper.FormData();
|
|
Object.keys(params).forEach(function (key) {
|
|
var data = params[key];
|
|
|
|
if (Array.isArray(data)) {
|
|
data = JSON.stringify(data);
|
|
}
|
|
|
|
options.body.append(key, data);
|
|
});
|
|
} else if (params) {
|
|
Object.entries(params).forEach(function (_ref) {
|
|
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
key = _ref2[0],
|
|
value = _ref2[1];
|
|
|
|
url.searchParams.append(key, value);
|
|
});
|
|
}
|
|
|
|
_context.next = 7;
|
|
return helper.fetch(url.href, options);
|
|
|
|
case 7:
|
|
response = _context.sent;
|
|
_context.prev = 8;
|
|
return _context.abrupt("return", response.json());
|
|
|
|
case 12:
|
|
_context.prev = 12;
|
|
_context.t0 = _context["catch"](8);
|
|
|
|
if (!(_context.t0 instanceof SyntaxError)) {
|
|
_context.next = 20;
|
|
break;
|
|
}
|
|
|
|
// We probably got a non-JSON response from the server.
|
|
// We should inform the user of the same.
|
|
message = 'Server Returned a non-JSON response.';
|
|
|
|
if (response.status === 404) {
|
|
message += " Maybe endpoint: ".concat(method, " ").concat(response.url.replace(config.apiURL, ''), " doesn't exist.");
|
|
} else {
|
|
message += ' Please check the API documentation.';
|
|
}
|
|
|
|
error = new Error(message);
|
|
error.res = response;
|
|
throw error;
|
|
|
|
case 20:
|
|
throw _context.t0;
|
|
|
|
case 21:
|
|
case "end":
|
|
return _context.stop();
|
|
}
|
|
}
|
|
}, _callee, null, [[8, 12]]);
|
|
}));
|
|
return _api.apply(this, arguments);
|
|
}
|
|
|
|
module.exports = api; |