@platform/http
Version:
Tools for working with HTTP.
89 lines (88 loc) • 4.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
var fetch_1 = require("./fetch");
var http_fetcher_1 = require("./http.fetcher");
exports.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 http_fetcher_1.fetcher({ method: method, url: url, mode: mode, headers: headers, data: data, fire: fire, fetch: options.fetch || fetch_1.fetch });
};
var _events$ = new rxjs_1.Subject();
var fire = function (e) { return _events$.next(e); };
var events$ = _events$.pipe(operators_1.share());
var before$ = _events$.pipe(operators_1.filter(function (e) { return e.type === 'HTTP/before'; }), operators_1.map(function (e) { return e.payload; }), operators_1.share());
var after$ = _events$.pipe(operators_1.filter(function (e) { return e.type === 'HTTP/after'; }), operators_1.map(function (e) { return e.payload; }), operators_1.share());
var http = {
create: function (options) {
if (options === void 0) { options = {}; }
var headers = tslib_1.__assign(tslib_1.__assign({}, http.headers), options.headers);
return exports.create(tslib_1.__assign(tslib_1.__assign({}, options), { headers: headers }));
},
events$: events$,
before$: before$,
after$: after$,
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;
};