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
JavaScript
;
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;
}
}