UNPKG

@platform/http

Version:

Tools for working with HTTP.

88 lines (87 loc) 4.09 kB
"use strict"; 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;