chatty-pub/node_modules/zulip-js/lib/api.js
كارل مبارك 374620645c initial commit
2021-06-26 13:12:56 +02:00

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;