@platform/http
Version:
Tools for working with HTTP.
88 lines (87 loc) • 4.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.create = void 0;
var tslib_1 = require("tslib");
var rxjs_1 = require("rxjs");
var common_1 = require("../common");
var fetch_1 = require("./fetch");
var http_fetcher_1 = require("./http.fetcher");
var create = function (options) {
if (options === void 0) { options = {}; }
var mergeOptions = function (methodOptions) {
if (methodOptions === void 0) { methodOptions = {}; }
var args = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, options), methodOptions), { headers: tslib_1.__assign(tslib_1.__assign({}, options.headers), methodOptions.headers) });
var _a = args.mode, mode = _a === void 0 ? 'cors' : _a, headers = args.headers;
return { mode: mode, headers: headers };
};
var invoke = function (method, args) {
var _a = mergeOptions(args.options), mode = _a.mode, headers = _a.headers;
var url = args.url, data = args.data;
return (0, http_fetcher_1.fetcher)({ method: method, url: url, mode: mode, headers: headers, data: data, fire: fire, fetch: options.fetch || fetch_1.fetch });
};
var $ = new rxjs_1.Subject();
var fire = function (e) { return $.next(e); };
var http = {
create: function (options) {
if (options === void 0) { options = {}; }
var headers = tslib_1.__assign(tslib_1.__assign({}, http.headers), options.headers);
return (0, exports.create)(tslib_1.__assign(tslib_1.__assign({}, options), { headers: headers }));
},
$: $.asObservable(),
req$: common_1.rx.payload($, 'HTTP/method:req'),
res$: common_1.rx.payload($, 'HTTP/method:res'),
get headers() {
return tslib_1.__assign({}, options.headers);
},
head: function (url, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, invoke('HEAD', { url: url, options: options })];
});
});
},
get: function (url, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, invoke('GET', { url: url, options: options })];
});
});
},
put: function (url, data, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, invoke('PUT', { url: url, data: data, options: options })];
});
});
},
post: function (url, data, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, invoke('POST', { url: url, data: data, options: options })];
});
});
},
patch: function (url, data, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, invoke('PATCH', { url: url, data: data, options: options })];
});
});
},
delete: function (url, data, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
return [2, invoke('DELETE', { url: url, data: data, options: options })];
});
});
},
};
return http;
};
exports.create = create;