UNPKG

@r3l/app

Version:
291 lines (240 loc) 10.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports._request = _request; exports.reqOptions = reqOptions; exports.handleErrors = handleErrors; exports.addQueryParams = exports.request = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var storage = _interopRequireWildcard(require("./storage")); var _env = require("./env"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var request = function request(options) { return function (dispatch, getState) { return _request(options, getState); }; }; /** * send request to api * @param {[type]} options * query - Object of url query params * params - url params * endpoint - api endpoint (user / post etc) * path - speicifi api call (default is index) * uri - optional - custom url * method - REST method * body: body */ exports.request = request; function _request(_x, _x2) { return _request2.apply(this, arguments); } function _request2() { _request2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options, getState) { var state, community, query, params, token; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; state = getState(); // Add community query parameter community = state.auth.community; query = community ? _objectSpread({ community: community }, options.query) : _objectSpread({}, options.query); params = _objectSpread(_objectSpread({}, options), {}, { query: query }); token = state.auth.token; return _context.abrupt("return", getDataFromClient(params, token)); case 9: _context.prev = 9; _context.t0 = _context["catch"](0); // eslint-disable-next-line no-console console.log(_context.t0); throw _context.t0; case 13: case "end": return _context.stop(); } } }, _callee, null, [[0, 9]]); })); return _request2.apply(this, arguments); } function getDataFromClient(_x3, _x4) { return _getDataFromClient.apply(this, arguments); } function _getDataFromClient() { _getDataFromClient = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(params, token) { var url, response, responseOk; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: url = constructUri(params); _context2.t0 = fetch; _context2.t1 = addQueryParams(url, params.query); _context2.t2 = _objectSpread; _context2.t3 = _objectSpread; _context2.t4 = { method: params.method }; _context2.next = 8; return reqOptions(token); case 8: _context2.t5 = _context2.sent; _context2.t6 = (0, _context2.t3)(_context2.t4, _context2.t5); _context2.t7 = {}; _context2.t8 = { body: params.body }; _context2.t9 = (0, _context2.t2)(_context2.t6, _context2.t7, _context2.t8); _context2.next = 15; return (0, _context2.t0)(_context2.t1, _context2.t9); case 15: response = _context2.sent; _context2.next = 18; return handleErrors(response); case 18: responseOk = _context2.sent; return _context2.abrupt("return", responseOk.json()); case 20: case "end": return _context2.stop(); } } }, _callee2); })); return _getDataFromClient.apply(this, arguments); } function constructUri(options) { var rootUrl = options.uri || _env.API_URL; var apiPath = options.endpoint.match('auth') ? '' : '/api/'; var path = options.path || ''; var params = options.params ? Object.keys(options.params).reduce(function (a, key) { return a + '/' + options.params[key]; }, '') : ''; return rootUrl + apiPath + options.endpoint + path + params; } function reqOptions(_x5) { return _reqOptions.apply(this, arguments); } function _reqOptions() { _reqOptions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_token) { var token; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.prev = 0; _context3.next = 3; return storage.getToken(); case 3: _context3.t0 = _context3.sent; if (_context3.t0) { _context3.next = 6; break; } _context3.t0 = _token; case 6: token = _context3.t0; return _context3.abrupt("return", { credentials: 'include', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: "Bearer ".concat(token) } }); case 10: _context3.prev = 10; _context3.t1 = _context3["catch"](0); return _context3.abrupt("return", { credentials: 'include', headers: { Accept: 'application/json', 'Content-Type': 'application/json' } }); case 13: case "end": return _context3.stop(); } } }, _callee3, null, [[0, 10]]); })); return _reqOptions.apply(this, arguments); } var addQueryParams = function addQueryParams(url, params) { if (!params) return ''; var paramString = Object.keys(params).filter(function (p) { return params[p]; }).map(function (k) { return encodeURIComponent(k) + '=' + encodeURIComponent(params[k]); }).join('&'); if (paramString && paramString.length) return url.indexOf('?') > 0 ? "".concat(url, "&").concat(paramString) : "".concat(url, "?").concat(paramString); return url; }; exports.addQueryParams = addQueryParams; function handleErrors(_x6) { return _handleErrors.apply(this, arguments); } function _handleErrors() { _handleErrors = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(response) { var error, json, errorString; return _regenerator.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: if (response.ok) { _context4.next = 17; break; } error = response.statusText; _context4.prev = 2; _context4.next = 5; return response.json(); case 5: json = _context4.sent; if (!json) { _context4.next = 9; break; } error = json.message; throw Error(error); case 9: _context4.next = 17; break; case 11: _context4.prev = 11; _context4.t0 = _context4["catch"](2); if (!(response.status === 429)) { _context4.next = 15; break; } throw new Error("Rate limit error, please try again in ".concat(response.headers.get('ratelimit-reset'), "s.")); case 15: errorString = error || "".concat(response.status, " error"); // eslint-disable-next-line no-console // console.log(err); throw Error(errorString); case 17: return _context4.abrupt("return", response); case 18: case "end": return _context4.stop(); } } }, _callee4, null, [[2, 11]]); })); return _handleErrors.apply(this, arguments); } //# sourceMappingURL=api.js.map