UNPKG

@ngx-resource/handler-fetch

Version:
101 lines 9.54 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { ResourceHandler, ResourceRequestMethod, ResourceResponseBodyType } from '@ngx-resource/core'; /** @type {?} */ export const REQUEST_METHOD_MAP = { [ResourceRequestMethod.Get]: 'GET', [ResourceRequestMethod.Post]: 'POST', [ResourceRequestMethod.Put]: 'PUT', [ResourceRequestMethod.Patch]: 'PATCH', [ResourceRequestMethod.Delete]: 'DELETE', [ResourceRequestMethod.Options]: 'OPTIONS', [ResourceRequestMethod.Head]: 'HEAD', }; export class ResourceHandlerFetch extends ResourceHandler { /** * @param {?} req * @return {?} */ handle(req) { /** @type {?} */ const url = this.createUrl(req); /** @type {?} */ const requestInit = this.createRequestInit(req); return { promise: fetch(url, requestInit).then((/** * @param {?} res * @return {?} */ (res) => tslib_1.__awaiter(this, void 0, void 0, function* () { return { headers: res.headers, status: res.status, body: yield this.getBody(req, res) }; }))), }; } /** * @private * @param {?} req * @return {?} */ createUrl(req) { let { url } = req; if (typeof url !== 'string') { throw new Error('Url us missing'); } if (req.query) { /** @type {?} */ const queryGroups = []; for (const 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 {?} */ createRequestInit(req) { /** @type {?} */ const 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 {?} */ getBody(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(); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VIYW5kbGVyRmV0Y2guanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXJlc291cmNlL2hhbmRsZXItZmV0Y2gvIiwic291cmNlcyI6WyJsaWIvUmVzb3VyY2VIYW5kbGVyRmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBR0wsZUFBZSxFQUNmLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDekIsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFNUIsTUFBTSxPQUFPLGtCQUFrQixHQUFHO0lBQ2hDLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUNsQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU07SUFDcEMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ2xDLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztJQUN0QyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7SUFDeEMsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTO0lBQzFDLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTTtDQUNyQztBQUVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlOzs7OztJQUV2RCxNQUFNLENBQUMsR0FBcUI7O2NBRXBCLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQzs7Y0FDekIsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7UUFFL0MsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUk7Ozs7WUFBQyxDQUFPLEdBQWEsRUFBRSxFQUFFO2dCQUM1RCxPQUFPO29CQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztvQkFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO29CQUNsQixJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7aUJBQ25DLENBQUM7WUFDSixDQUFDLENBQUEsRUFBQztTQUNILENBQUM7SUFDSixDQUFDOzs7Ozs7SUFFTyxTQUFTLENBQUMsR0FBcUI7WUFFakMsRUFBQyxHQUFHLEVBQUMsR0FBRyxHQUFHO1FBRWYsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFOztrQkFFUCxXQUFXLEdBQWEsRUFBRTtZQUVoQyxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQzNCLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMvRDthQUNGO1lBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUN0QixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEU7U0FFRjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7Ozs7O0lBRU8saUJBQWlCLENBQUMsR0FBcUI7O2NBQ3ZDLFdBQVcsR0FBZ0IsRUFBRTtRQUVuQyxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDO1FBRXJELFdBQVcsQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELFdBQVcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUVsQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUsscUJBQXFCLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDeEQsV0FBVyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1NBQzdCO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7Ozs7OztJQUVPLE9BQU8sQ0FBQyxHQUFxQixFQUFFLEdBQWE7UUFDbEQsUUFBUSxHQUFHLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUIsS0FBSyx3QkFBd0IsQ0FBQyxXQUFXO2dCQUN2QyxPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUUzQixLQUFLLHdCQUF3QixDQUFDLElBQUk7Z0JBQ2hDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXBCLEtBQUssd0JBQXdCLENBQUMsSUFBSTtnQkFDaEMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFcEIsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7WUFDbkM7Z0JBQ0UsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7U0FFckI7SUFDSCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJUmVzb3VyY2VIYW5kbGVyUmVzcG9uc2UsXG4gIElSZXNvdXJjZVJlcXVlc3QsXG4gIFJlc291cmNlSGFuZGxlcixcbiAgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLFxuICBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGVcbn0gZnJvbSAnQG5neC1yZXNvdXJjZS9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFJFUVVFU1RfTUVUSE9EX01BUCA9IHtcbiAgW1Jlc291cmNlUmVxdWVzdE1ldGhvZC5HZXRdOiAnR0VUJyxcbiAgW1Jlc291cmNlUmVxdWVzdE1ldGhvZC5Qb3N0XTogJ1BPU1QnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlB1dF06ICdQVVQnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlBhdGNoXTogJ1BBVENIJyxcbiAgW1Jlc291cmNlUmVxdWVzdE1ldGhvZC5EZWxldGVdOiAnREVMRVRFJyxcbiAgW1Jlc291cmNlUmVxdWVzdE1ldGhvZC5PcHRpb25zXTogJ09QVElPTlMnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLkhlYWRdOiAnSEVBRCcsXG59O1xuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VIYW5kbGVyRmV0Y2ggZXh0ZW5kcyBSZXNvdXJjZUhhbmRsZXIge1xuXG4gIGhhbmRsZShyZXE6IElSZXNvdXJjZVJlcXVlc3QpOiBJUmVzb3VyY2VIYW5kbGVyUmVzcG9uc2Uge1xuXG4gICAgY29uc3QgdXJsID0gdGhpcy5jcmVhdGVVcmwocmVxKTtcbiAgICBjb25zdCByZXF1ZXN0SW5pdCA9IHRoaXMuY3JlYXRlUmVxdWVzdEluaXQocmVxKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwcm9taXNlOiBmZXRjaCh1cmwsIHJlcXVlc3RJbml0KS50aGVuKGFzeW5jIChyZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMsXG4gICAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzLFxuICAgICAgICAgIGJvZHk6IGF3YWl0IHRoaXMuZ2V0Qm9keShyZXEsIHJlcylcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVVybChyZXE6IElSZXNvdXJjZVJlcXVlc3QpOiBzdHJpbmcge1xuXG4gICAgbGV0IHt1cmx9ID0gcmVxO1xuXG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VybCB1cyBtaXNzaW5nJyk7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5xdWVyeSkge1xuXG4gICAgICBjb25zdCBxdWVyeUdyb3Vwczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVxLnF1ZXJ5KSB7XG4gICAgICAgIGlmIChyZXEucXVlcnkuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIHF1ZXJ5R3JvdXBzLnB1c2goJ2tleT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHJlcS5xdWVyeVtrZXldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHF1ZXJ5R3JvdXBzLmxlbmd0aCkge1xuICAgICAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPiAtMSA/ICcmJyA6ICc/JykgKyBxdWVyeUdyb3Vwcy5qb2luKCcmJyk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSZXF1ZXN0SW5pdChyZXE6IElSZXNvdXJjZVJlcXVlc3QpOiBSZXF1ZXN0SW5pdCB7XG4gICAgY29uc3QgcmVxdWVzdEluaXQ6IFJlcXVlc3RJbml0ID0ge307XG5cbiAgICByZXEubWV0aG9kID0gcmVxLm1ldGhvZCB8fCBSZXNvdXJjZVJlcXVlc3RNZXRob2QuR2V0O1xuXG4gICAgcmVxdWVzdEluaXQubWV0aG9kID0gUkVRVUVTVF9NRVRIT0RfTUFQW3JlcS5tZXRob2RdO1xuICAgIHJlcXVlc3RJbml0LmhlYWRlcnMgPSByZXEuaGVhZGVycztcblxuICAgIGlmIChyZXEubWV0aG9kICE9PSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuR2V0ICYmIHJlcS5ib2R5KSB7XG4gICAgICByZXF1ZXN0SW5pdC5ib2R5ID0gcmVxLmJvZHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3RJbml0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCb2R5KHJlcTogSVJlc291cmNlUmVxdWVzdCwgcmVzOiBSZXNwb25zZSk6IGFueSB7XG4gICAgc3dpdGNoIChyZXEucmVzcG9uc2VCb2R5VHlwZSkge1xuICAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGUuQXJyYXlCdWZmZXI6XG4gICAgICAgIHJldHVybiByZXMuYXJyYXlCdWZmZXIoKTtcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGUuQmxvYjpcbiAgICAgICAgcmV0dXJuIHJlcy5ibG9iKCk7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZUJvZHlUeXBlLkpzb246XG4gICAgICAgIHJldHVybiByZXMuanNvbigpO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5UZXh0OlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlcy50ZXh0KCk7XG5cbiAgICB9XG4gIH1cblxuXG59XG4iXX0=