UNPKG

@elium/mighty

Version:

Context agnostic TS & JS ORM

90 lines 3.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _ = require("lodash"); var Request = require("request"); var http_response_1 = require("../http.response"); var http_request_1 = require("../http.request"); var Observable_1 = require("rxjs/Observable"); var HttpLayer = (function () { function HttpLayer() { } HttpLayer.prototype.find = function (request) { var localRequest = new http_request_1.HttpRequest(_.merge(request, { method: "GET", isArray: true })); return this.query(localRequest); }; HttpLayer.prototype.findOne = function (request) { var localRequest = new http_request_1.HttpRequest(_.merge(request, { method: "GET", isArray: false })); return this.query(localRequest); }; HttpLayer.prototype.create = function (request) { var localRequest = new http_request_1.HttpRequest(_.merge(request, { method: "POST" })); return this.query(localRequest); }; HttpLayer.prototype.save = function (request) { var localRequest = new http_request_1.HttpRequest(_.merge(request, { method: "PUT" })); return this.query(localRequest); }; HttpLayer.prototype.destroy = function (request) { var localRequest = new http_request_1.HttpRequest(_.merge(request, { method: "DELETE" })); return this.query(localRequest); }; HttpLayer.prototype.query = function (request) { var options = this._getOptions(request); return this._request(request, options); }; HttpLayer.prototype._request = function (request, options) { var _this = this; return Observable_1.Observable.create(function (observer) { Request(options, function (error, response, body) { var httpResponse = new http_response_1.HttpResponse({ request: request, status: _.get(response, "statusCode", 400) }); if (!error && response.statusCode == 200) { if (request.isArray && !Array.isArray(body)) { httpResponse.error = new Error("result is not an array, got :" + JSON.stringify(body)); } else { httpResponse.data = body; } } else { httpResponse.error = _this._parseError(error, body); } if (httpResponse.error) { observer.error(httpResponse); } else { observer.next(httpResponse); } observer.complete(); }); }); }; HttpLayer.prototype._getOptions = function (request) { return { json: true, url: request.url, method: (request.method || "").toUpperCase(), headers: request.headers, gzip: _.get(request.headers, 'accept-encoding', '').indexOf('gzip') > -1, body: request.data, qs: request.params }; }; HttpLayer.prototype._parseError = function (error, body) { var validError = error || body; if (validError) { if (_.isString(validError)) { return new Error(validError); } else if (_.isObject(validError) && validError.hasOwnProperty("message")) { return new Error(validError.message); } } return new Error("Unknown error : " + validError); }; return HttpLayer; }()); exports.HttpLayer = HttpLayer; //# sourceMappingURL=http.layer.js.map