UNPKG

@app-masters/js-lib

Version:
250 lines (249 loc) 10.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _httpErrorHandler = _interopRequireDefault(require("./httpErrorHandler")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } var Http = /*#__PURE__*/function () { function Http() { _classCallCheck(this, Http); } _createClass(Http, null, [{ key: "setup", value: function setup(version, client, env, contentType, callback) { var headers = {}; headers['Content-Type'] = contentType; headers['Accept'] = contentType; headers['client'] = client; headers['client-env'] = env; headers[client + '-version'] = version; Http.defaultHeaders = headers; Http.headers = headers; if (Http.errorHandler === _httpErrorHandler.default) _httpErrorHandler.default.setup(callback); } }, { key: "reset", value: function reset() { Http.headers = Http.defaultHeaders; Http.authorization = ''; Http.params = {}; } }, { key: "setAuthorization", value: function setAuthorization(token) { Http.authorization = token; Http.headers = _objectSpread(_objectSpread({}, Http.defaultHeaders), {}, { authorization: token }); } }, { key: "setHeaderParam", value: function setHeaderParam(key, value) { var headers = Http.headers; headers[key] = value; Http.headers = headers; } }, { key: "setFetch", value: function setFetch(fetchMethod) { Http.fetch = fetchMethod; } }, { key: "setBaseURL", value: function setBaseURL(baseURLSetup) { Http.baseURL = baseURLSetup; } }, { key: "setHeaders", value: function setHeaders(headersSetup) { console.warn('Http.setHeaders is deprecated. Consider use Http.setup(version, client, env, contentType) instead.'); Http.headers = headersSetup; } }, { key: "setEndpointParam", value: function setEndpointParam(key, value) { Http.params[key] = value; } }, { key: "getHeaders", value: function getHeaders() { return Http.headers; } }, { key: "getUrl", value: function getUrl(uri) { if (!Http.fetch) { throw new Error('This environment don\'t have the window.fetch. ' + 'Please set a custom fetch method using Http.setFetch().'); } var url = null; if (!uri.startsWith('http')) url = Http.baseURL + uri;else url = uri; var regex = /{.*}/i; var matches = url.match(regex); if (matches) { matches.map(function (match) { var value = Http.params[match]; url = url.replace(match, value); }); } return url; } }, { key: "post", value: function post(uri, body) { var url = Http.getUrl(uri); return new Promise(function (resolve, reject) { console.log(url + ' - POST - body ', body); // console.log(headers); body = JSON.stringify(body); Http.fetch(url, { method: 'POST', credentials: 'same-origin', headers: Http.headers, body: body }).then(Http.checkStatus).then(Http.checkListener).then(Http.parseJSON).then(function (response) { console.log('POST > ' + uri + ' > response', response); resolve(response); }).catch(function (error) { error = Http.errorHandler.handle(error, "POST", url, body); reject(error); }); }); } }, { key: "put", value: function put(uri, body) { var url = Http.getUrl(uri); return new Promise(function (resolve, reject) { console.log(url + ' - PUT - body ', body); // console.log(headers); body = JSON.stringify(body); Http.fetch(url, { method: 'PUT', credentials: 'same-origin', headers: Http.headers, body: body }).then(Http.checkStatus).then(Http.checkListener).then(Http.parseJSON).then(function (response) { console.log('PUT > ' + uri + ' > response', response); resolve(response); }).catch(function (error) { error = Http.errorHandler.handle(error, "PUT", url, body); reject(error); }); }); } }, { key: "get", value: function get(uri) { var url = Http.getUrl(uri); return new Promise(function (resolve, reject) { console.log(url + ' - GET'); Http.fetch(url, { method: 'GET', credentials: 'same-origin', headers: Http.headers }).then(Http.checkStatus).then(Http.checkListener).then(Http.parseJSON).then(function (response) { console.log(url + ' response', response); resolve(response); }).catch(function (error) { error = Http.errorHandler.handle(error, "GET", url); reject(error); }); }); } }, { key: "download", value: function download(uri) { var url = Http.getUrl(uri); return new Promise(function (resolve, reject) { console.log(url + ' - DOWNLOAD'); Http.fetch(url, { method: 'GET', credentials: 'same-origin', headers: Http.headers }).then(Http.checkListener).then(Http.checkStatus).then(function (response) { resolve(response); }).catch(function (error) { error = Http.errorHandler.handle(error, "GET(download)", url); reject(error); }); }); } }, { key: "delete", value: function _delete(uri) { var url = Http.getUrl(uri); return new Promise(function (resolve, reject) { console.log(url + ' - DELETE'); // console.log(headers); Http.fetch(url, { method: 'DELETE', credentials: 'same-origin', headers: Http.headers }).then(Http.checkStatus).then(Http.checkListener).then(function (response) { console.log(url + ' response', response); resolve(response); }).catch(function (error) { error = Http.errorHandler.handle(error, "DELETE", url); reject(error); }); }); } }, { key: "checkStatus", value: function checkStatus(response) { // console.log('checkStatus'); if (response.status >= 200 && response.status <= 210) { // 200 - OK || 201 - Created return response; } else { return Http.errorHandler.mount(response); } } }, { key: "checkListener", value: function checkListener(response) { if (Http.requestListener) { Http.requestListener(response); } return response; } }, { key: "parseJSON", value: function parseJSON(response) { // console.log('parseJSON'); return response.json(); } }, { key: "setRequestListener", value: function setRequestListener(callback) { Http.requestListener = callback; } }, { key: "setErrorHandler", value: function setErrorHandler(ErrorHandlerClass, callbacks) { Http.errorHandler = ErrorHandlerClass; ErrorHandlerClass.setup(callbacks); } }]); return Http; }(); Http.headers = {}; Http.defaultHeaders = {}; Http.authorization = ''; Http.baseURL = ''; Http.params = {}; Http.requestListener = null; Http.errorHandler = _httpErrorHandler.default; Http.fetch = typeof fetch !== 'undefined' ? window.fetch.bind(window) : null; var _default = Http; exports.default = _default;