@app-masters/js-lib
Version:
250 lines (249 loc) • 10.2 kB
JavaScript
;
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;