UNPKG

baasic-sdk-javascript

Version:

JavaScript SDK provides core functionality for building web and mobile applications on [Baasic](http://www.baasic.com/).

95 lines (94 loc) 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var inversify_1 = require("inversify"); var JQueryHttpClient = /** @class */ (function () { function JQueryHttpClient() { } JQueryHttpClient.prototype.request = function (request) { var jqueryParams = { method: request.method, xhrFields: { withCredentials: true } }; if (request.headers) { jqueryParams.headers = request.headers; } if (request.data) { var contentType = getHeader(request.headers, 'Content-Type'); if (contentType && contentType.toLowerCase().indexOf('application/json') !== -1) { jqueryParams.data = JSON.stringify(request.data); } else { jqueryParams.data = request.data; } } if (request.responseType) { jqueryParams.dataType = request.responseType; } return $.ajax(request.url.toString(), jqueryParams) .then(function (data, textStatus, jqXHR) { return { request: request, statusText: textStatus, statusCode: jqXHR.status, headers: parseHeaders(jqXHR.getAllResponseHeaders()), data: data }; }, function (jqXHR, textStatus, errorThrown) { throw { request: request, statusText: textStatus, statusCode: jqXHR.status, headers: parseHeaders(jqXHR.getAllResponseHeaders()), data: tryConvertToJson(jqXHR.responseText) || jqXHR.responseXML }; }); }; JQueryHttpClient.prototype.createPromise = function (deferFn) { var deferred = $.Deferred(); deferFn(deferred.resolve, deferred.reject); return deferred.promise(); }; JQueryHttpClient = tslib_1.__decorate([ inversify_1.injectable() ], JQueryHttpClient); return JQueryHttpClient; }()); exports.JQueryHttpClient = JQueryHttpClient; function parseHeaders(headers) { var result = {}; if (headers) { var arrayOfLines = headers.match(/[^\r\n]+/g); for (var i = 0; i < arrayOfLines.length; i++) { var line = arrayOfLines[i]; var keyValue = line.split(':'); if (keyValue.length === 2) { result[keyValue[0]] = keyValue[1].trim(); } else if (keyValue.length === 1) { result[keyValue[0]] = null; } } } return result; } function getHeader(headers, key) { if (headers) { var header = headers[key] || headers[key.toLowerCase()]; if (Array.isArray(header)) { header = header.join(';'); } return header; } return undefined; } function tryConvertToJson(obj) { try { return JSON.parse(obj); } catch (err) { return obj; } }