baasic-sdk-angular
Version:
Angular (v5+) SDK provides core functionality for building web and mobile applications on [Baasic](http://www.baasic.com/).
72 lines (71 loc) • 2.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var core_1 = require("@angular/core");
var http_1 = require("@angular/http");
var Observable_1 = require("rxjs/Observable");
require("rxjs/add/operator/toPromise");
require("rxjs/add/operator/catch");
require("rxjs/add/operator/map");
require("rxjs/add/observable/throw");
var HttpClientFactory = /** @class */ (function () {
function HttpClientFactory(http) {
this.http = http;
}
HttpClientFactory.prototype.createPromise = function (deferFn) {
return new Promise(deferFn);
};
HttpClientFactory.prototype.request = function (request) {
var httpRequest = {
withCredentials: true,
method: request.method,
};
if (request.headers)
httpRequest.headers = new http_1.Headers(request.headers);
if (request.data)
httpRequest.body = request.data;
return this.http.request(request.url.toString(), httpRequest)
.map(function (response) {
return {
request: request,
statusCode: response.status,
statusText: response.statusText,
headers: response.headers.toJSON(),
data: safelyConvertToJSON(response)
};
})
.catch(function (response) {
if (response instanceof http_1.Response) {
return Observable_1.Observable.throw({
request: request,
statusCode: response.status,
statusText: response.statusText,
headers: response.headers.toJSON(),
data: safelyConvertToJSON(response)
});
}
else {
Observable_1.Observable.throw(response);
}
})
.toPromise();
function safelyConvertToJSON(response) {
// json() function call fails when trying to convert empty string ''
// In that case catch exception and return null.
try {
return response.json();
}
catch (err) {
return null;
}
}
};
;
HttpClientFactory = tslib_1.__decorate([
core_1.Injectable(),
tslib_1.__metadata("design:paramtypes", [http_1.Http])
], HttpClientFactory);
return HttpClientFactory;
}());
exports.HttpClientFactory = HttpClientFactory;
;