@ngx-resource/handler-fetch
Version:
Resource handler for fetch
137 lines • 10.8 kB
JavaScript
import * as tslib_1 from "tslib";
var _a;
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ResourceHandler, ResourceRequestMethod, ResourceResponseBodyType } from '@ngx-resource/core';
/** @type {?} */
export var REQUEST_METHOD_MAP = (_a = {},
_a[ResourceRequestMethod.Get] = 'GET',
_a[ResourceRequestMethod.Post] = 'POST',
_a[ResourceRequestMethod.Put] = 'PUT',
_a[ResourceRequestMethod.Patch] = 'PATCH',
_a[ResourceRequestMethod.Delete] = 'DELETE',
_a[ResourceRequestMethod.Options] = 'OPTIONS',
_a[ResourceRequestMethod.Head] = 'HEAD',
_a);
var ResourceHandlerFetch = /** @class */ (function (_super) {
tslib_1.__extends(ResourceHandlerFetch, _super);
function ResourceHandlerFetch() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* @param {?} req
* @return {?}
*/
ResourceHandlerFetch.prototype.handle = /**
* @param {?} req
* @return {?}
*/
function (req) {
var _this = this;
/** @type {?} */
var url = this.createUrl(req);
/** @type {?} */
var requestInit = this.createRequestInit(req);
return {
promise: fetch(url, requestInit).then((/**
* @param {?} res
* @return {?}
*/
function (res) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = {
headers: res.headers,
status: res.status
};
return [4 /*yield*/, this.getBody(req, res)];
case 1: return [2 /*return*/, (_a.body = _b.sent(),
_a)];
}
});
}); })),
};
};
/**
* @private
* @param {?} req
* @return {?}
*/
ResourceHandlerFetch.prototype.createUrl = /**
* @private
* @param {?} req
* @return {?}
*/
function (req) {
var url = req.url;
if (typeof url !== 'string') {
throw new Error('Url us missing');
}
if (req.query) {
/** @type {?} */
var queryGroups = [];
for (var key in req.query) {
if (req.query.hasOwnProperty(key)) {
queryGroups.push('key=' + encodeURIComponent(req.query[key]));
}
}
if (queryGroups.length) {
url += (url.indexOf('?') > -1 ? '&' : '?') + queryGroups.join('&');
}
}
return url;
};
/**
* @private
* @param {?} req
* @return {?}
*/
ResourceHandlerFetch.prototype.createRequestInit = /**
* @private
* @param {?} req
* @return {?}
*/
function (req) {
/** @type {?} */
var requestInit = {};
req.method = req.method || ResourceRequestMethod.Get;
requestInit.method = REQUEST_METHOD_MAP[req.method];
requestInit.headers = req.headers;
if (req.method !== ResourceRequestMethod.Get && req.body) {
requestInit.body = req.body;
}
return requestInit;
};
/**
* @private
* @param {?} req
* @param {?} res
* @return {?}
*/
ResourceHandlerFetch.prototype.getBody = /**
* @private
* @param {?} req
* @param {?} res
* @return {?}
*/
function (req, res) {
switch (req.responseBodyType) {
case ResourceResponseBodyType.ArrayBuffer:
return res.arrayBuffer();
case ResourceResponseBodyType.Blob:
return res.blob();
case ResourceResponseBodyType.Json:
return res.json();
case ResourceResponseBodyType.Text:
default:
return res.text();
}
};
return ResourceHandlerFetch;
}(ResourceHandler));
export { ResourceHandlerFetch };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VIYW5kbGVyRmV0Y2guanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXJlc291cmNlL2hhbmRsZXItZmV0Y2gvIiwic291cmNlcyI6WyJsaWIvUmVzb3VyY2VIYW5kbGVyRmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUdMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3pCLE1BQU0sb0JBQW9CLENBQUM7O0FBRTVCLE1BQU0sS0FBTyxrQkFBa0I7SUFDN0IsR0FBQyxxQkFBcUIsQ0FBQyxHQUFHLElBQUcsS0FBSztJQUNsQyxHQUFDLHFCQUFxQixDQUFDLElBQUksSUFBRyxNQUFNO0lBQ3BDLEdBQUMscUJBQXFCLENBQUMsR0FBRyxJQUFHLEtBQUs7SUFDbEMsR0FBQyxxQkFBcUIsQ0FBQyxLQUFLLElBQUcsT0FBTztJQUN0QyxHQUFDLHFCQUFxQixDQUFDLE1BQU0sSUFBRyxRQUFRO0lBQ3hDLEdBQUMscUJBQXFCLENBQUMsT0FBTyxJQUFHLFNBQVM7SUFDMUMsR0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUcsTUFBTTtPQUNyQztBQUVEO0lBQTBDLGdEQUFlO0lBQXpEOztJQStFQSxDQUFDOzs7OztJQTdFQyxxQ0FBTTs7OztJQUFOLFVBQU8sR0FBcUI7UUFBNUIsaUJBY0M7O1lBWk8sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDOztZQUN6QixXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztRQUUvQyxPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSTs7OztZQUFDLFVBQU8sR0FBYTs7Ozs7O2dDQUV0RCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87Z0NBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTs7NEJBQ1oscUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUE7Z0NBSHBDLHVCQUdFLE9BQUksR0FBRSxTQUE0QjtxQ0FDbEM7OztpQkFDSCxFQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUVPLHdDQUFTOzs7OztJQUFqQixVQUFrQixHQUFxQjtRQUVoQyxJQUFBLGFBQUc7UUFFUixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7O2dCQUVQLFdBQVcsR0FBYSxFQUFFO1lBRWhDLEtBQUssSUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDM0IsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDakMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7WUFFRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRTtTQUVGO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzs7Ozs7SUFFTyxnREFBaUI7Ozs7O0lBQXpCLFVBQTBCLEdBQXFCOztZQUN2QyxXQUFXLEdBQWdCLEVBQUU7UUFFbkMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztRQUVyRCxXQUFXLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxXQUFXLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFFbEMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLHFCQUFxQixDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ3hELFdBQVcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Ozs7Ozs7SUFFTyxzQ0FBTzs7Ozs7O0lBQWYsVUFBZ0IsR0FBcUIsRUFBRSxHQUFhO1FBQ2xELFFBQVEsR0FBRyxDQUFDLGdCQUFnQixFQUFFO1lBQzVCLEtBQUssd0JBQXdCLENBQUMsV0FBVztnQkFDdkMsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFM0IsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO2dCQUNoQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVwQixLQUFLLHdCQUF3QixDQUFDLElBQUk7Z0JBQ2hDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXBCLEtBQUssd0JBQXdCLENBQUMsSUFBSSxDQUFDO1lBQ25DO2dCQUNFLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1NBRXJCO0lBQ0gsQ0FBQztJQUdILDJCQUFDO0FBQUQsQ0FBQyxBQS9FRCxDQUEwQyxlQUFlLEdBK0V4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElSZXNvdXJjZUhhbmRsZXJSZXNwb25zZSxcbiAgSVJlc291cmNlUmVxdWVzdCxcbiAgUmVzb3VyY2VIYW5kbGVyLFxuICBSZXNvdXJjZVJlcXVlc3RNZXRob2QsXG4gIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZVxufSBmcm9tICdAbmd4LXJlc291cmNlL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgUkVRVUVTVF9NRVRIT0RfTUFQID0ge1xuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLkdldF06ICdHRVQnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlBvc3RdOiAnUE9TVCcsXG4gIFtSZXNvdXJjZVJlcXVlc3RNZXRob2QuUHV0XTogJ1BVVCcsXG4gIFtSZXNvdXJjZVJlcXVlc3RNZXRob2QuUGF0Y2hdOiAnUEFUQ0gnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLkRlbGV0ZV06ICdERUxFVEUnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLk9wdGlvbnNdOiAnT1BUSU9OUycsXG4gIFtSZXNvdXJjZVJlcXVlc3RNZXRob2QuSGVhZF06ICdIRUFEJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUhhbmRsZXJGZXRjaCBleHRlbmRzIFJlc291cmNlSGFuZGxlciB7XG5cbiAgaGFuZGxlKHJlcTogSVJlc291cmNlUmVxdWVzdCk6IElSZXNvdXJjZUhhbmRsZXJSZXNwb25zZSB7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmNyZWF0ZVVybChyZXEpO1xuICAgIGNvbnN0IHJlcXVlc3RJbml0ID0gdGhpcy5jcmVhdGVSZXF1ZXN0SW5pdChyZXEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb21pc2U6IGZldGNoKHVybCwgcmVxdWVzdEluaXQpLnRoZW4oYXN5bmMgKHJlczogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgICAgICBzdGF0dXM6IHJlcy5zdGF0dXMsXG4gICAgICAgICAgYm9keTogYXdhaXQgdGhpcy5nZXRCb2R5KHJlcSwgcmVzKVxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVXJsKHJlcTogSVJlc291cmNlUmVxdWVzdCk6IHN0cmluZyB7XG5cbiAgICBsZXQge3VybH0gPSByZXE7XG5cbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVXJsIHVzIG1pc3NpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAocmVxLnF1ZXJ5KSB7XG5cbiAgICAgIGNvbnN0IHF1ZXJ5R3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXEucXVlcnkpIHtcbiAgICAgICAgaWYgKHJlcS5xdWVyeS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgcXVlcnlHcm91cHMucHVzaCgna2V5PScgKyBlbmNvZGVVUklDb21wb25lbnQocmVxLnF1ZXJ5W2tleV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocXVlcnlHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA+IC0xID8gJyYnIDogJz8nKSArIHF1ZXJ5R3JvdXBzLmpvaW4oJyYnKTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlcXVlc3RJbml0KHJlcTogSVJlc291cmNlUmVxdWVzdCk6IFJlcXVlc3RJbml0IHtcbiAgICBjb25zdCByZXF1ZXN0SW5pdDogUmVxdWVzdEluaXQgPSB7fTtcblxuICAgIHJlcS5tZXRob2QgPSByZXEubWV0aG9kIHx8IFJlc291cmNlUmVxdWVzdE1ldGhvZC5HZXQ7XG5cbiAgICByZXF1ZXN0SW5pdC5tZXRob2QgPSBSRVFVRVNUX01FVEhPRF9NQVBbcmVxLm1ldGhvZF07XG4gICAgcmVxdWVzdEluaXQuaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuXG4gICAgaWYgKHJlcS5tZXRob2QgIT09IFJlc291cmNlUmVxdWVzdE1ldGhvZC5HZXQgJiYgcmVxLmJvZHkpIHtcbiAgICAgIHJlcXVlc3RJbml0LmJvZHkgPSByZXEuYm9keTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdEluaXQ7XG4gIH1cblxuICBwcml2YXRlIGdldEJvZHkocmVxOiBJUmVzb3VyY2VSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKTogYW55IHtcbiAgICBzd2l0Y2ggKHJlcS5yZXNwb25zZUJvZHlUeXBlKSB7XG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5BcnJheUJ1ZmZlcjpcbiAgICAgICAgcmV0dXJuIHJlcy5hcnJheUJ1ZmZlcigpO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5CbG9iOlxuICAgICAgICByZXR1cm4gcmVzLmJsb2IoKTtcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGUuSnNvbjpcbiAgICAgICAgcmV0dXJuIHJlcy5qc29uKCk7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZUJvZHlUeXBlLlRleHQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVzLnRleHQoKTtcblxuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==