UNPKG

@kkoehn/ngx-resource-handler-ngx-http

Version:
87 lines 11.4 kB
import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams, HttpRequest } from '@angular/common/http'; import { catchError, last, map } from 'rxjs/operators'; import { ResourceHandler, ResourceRequestMethod, ResourceResponseBodyType } from '@kkoehn/ngx-resource-core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; export class ResourceHandlerHttpClient extends ResourceHandler { constructor(http) { super(); this.http = http; } handle(req) { const request = this.prepareRequest(req); return { observable: this.http.request(request) .pipe(last(), map((resp) => this.handleResponse(req, resp)), catchError((resp) => { throw this.handleResponse(req, resp); })) }; } prepareRequest(req) { let method = 'GET'; switch (req.method) { case ResourceRequestMethod.Get: method = 'GET'; break; case ResourceRequestMethod.Post: method = 'POST'; break; case ResourceRequestMethod.Put: method = 'PUT'; break; case ResourceRequestMethod.Delete: method = 'DELETE'; break; case ResourceRequestMethod.Head: method = 'HEAD'; break; case ResourceRequestMethod.Options: method = 'OPTIONS'; break; case ResourceRequestMethod.Patch: method = 'PATCH'; } const init = { withCredentials: req.withCredentials }; switch (req.responseBodyType) { case ResourceResponseBodyType.Json: init.responseType = 'json'; break; case ResourceResponseBodyType.ArrayBuffer: init.responseType = 'arraybuffer'; break; case ResourceResponseBodyType.Blob: init.responseType = 'blob'; break; default: init.responseType = 'text'; } if (req.headers) { init.headers = new HttpHeaders(req.headers); } if (req.query) { init.params = new HttpParams({ fromObject: req.query }); } return new HttpRequest(method, req.url || '', req.body, init); } handleResponse(req, response) { const headers = {}; const keys = response.headers.keys(); keys.forEach((key) => { headers[key] = response.headers.getAll(key); }); return { status: response.status, body: response.body || response.error, headers }; } } ResourceHandlerHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ResourceHandlerHttpClient, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); ResourceHandlerHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ResourceHandlerHttpClient }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ResourceHandlerHttpClient, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VIYW5kbGVySHR0cENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXNvdXJjZS9oYW5kbGVyLW5neC1odHRwL3NyYy9saWIvUmVzb3VyY2VIYW5kbGVySHR0cENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQXFCLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ3pILE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFJTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN6QixNQUFNLDJCQUEyQixDQUFDOzs7QUFHbkMsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGVBQWU7SUFFNUQsWUFBb0IsSUFBZ0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFZO0lBRXBDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBcUI7UUFFMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztpQkFDbkMsSUFBSSxDQUNILElBQUksRUFBRSxFQUNOLEdBQUcsQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ2hFLFVBQVUsQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FDSDtTQUNKLENBQUM7SUFFSixDQUFDO0lBR1MsY0FBYyxDQUFDLEdBQXFCO1FBRTVDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVuQixRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFFbEIsS0FBSyxxQkFBcUIsQ0FBQyxHQUFHO2dCQUM1QixNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNmLE1BQU07WUFFUixLQUFLLHFCQUFxQixDQUFDLElBQUk7Z0JBQzdCLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ2hCLE1BQU07WUFFUixLQUFLLHFCQUFxQixDQUFDLEdBQUc7Z0JBQzVCLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ2YsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsTUFBTTtnQkFDL0IsTUFBTSxHQUFHLFFBQVEsQ0FBQztnQkFDbEIsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsSUFBSTtnQkFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDaEIsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsT0FBTztnQkFDaEMsTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFDbkIsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsS0FBSztnQkFDOUIsTUFBTSxHQUFHLE9BQU8sQ0FBQztTQUVwQjtRQUVELE1BQU0sSUFBSSxHQUFxQjtZQUM3QixlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7U0FDckMsQ0FBQztRQUVGLFFBQVEsR0FBRyxDQUFDLGdCQUFnQixFQUFFO1lBRTVCLEtBQUssd0JBQXdCLENBQUMsSUFBSTtnQkFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7Z0JBQzNCLE1BQU07WUFFUixLQUFLLHdCQUF3QixDQUFDLFdBQVc7Z0JBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO2dCQUNsQyxNQUFNO1lBRVIsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO2dCQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDM0IsTUFBTTtZQUVSO2dCQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1NBRTlCO1FBRUQsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0M7UUFFRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVoRSxDQUFDO0lBRVMsY0FBYyxDQUFDLEdBQXFCLEVBQUUsUUFBK0M7UUFFN0YsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDdkIsSUFBSSxFQUFHLFFBQThCLENBQUMsSUFBSSxJQUFLLFFBQThCLENBQUMsS0FBSztZQUNuRixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7O3NIQTNHVSx5QkFBeUI7MEhBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbGFzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgSVJlc291cmNlSGFuZGxlclJlc3BvbnNlLFxuICBJUmVzb3VyY2VSZXF1ZXN0LFxuICBJUmVzb3VyY2VSZXNwb25zZSxcbiAgUmVzb3VyY2VIYW5kbGVyLFxuICBSZXNvdXJjZVJlcXVlc3RNZXRob2QsXG4gIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZVxufSBmcm9tICdAa2tvZWhuL25neC1yZXNvdXJjZS1jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc291cmNlSGFuZGxlckh0dHBDbGllbnQgZXh0ZW5kcyBSZXNvdXJjZUhhbmRsZXIge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBoYW5kbGUocmVxOiBJUmVzb3VyY2VSZXF1ZXN0KTogSVJlc291cmNlSGFuZGxlclJlc3BvbnNlIHtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnByZXBhcmVSZXF1ZXN0KHJlcSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5odHRwLnJlcXVlc3QocmVxdWVzdClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbGFzdCgpLFxuICAgICAgICAgIG1hcCgocmVzcDogSHR0cFJlc3BvbnNlPGFueT4pID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVxLCByZXNwKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigocmVzcDogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVxLCByZXNwKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfTtcblxuICB9XG5cblxuICBwcm90ZWN0ZWQgcHJlcGFyZVJlcXVlc3QocmVxOiBJUmVzb3VyY2VSZXF1ZXN0KTogSHR0cFJlcXVlc3Q8YW55PiB7XG5cbiAgICBsZXQgbWV0aG9kID0gJ0dFVCc7XG5cbiAgICBzd2l0Y2ggKHJlcS5tZXRob2QpIHtcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuR2V0OlxuICAgICAgICBtZXRob2QgPSAnR0VUJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlBvc3Q6XG4gICAgICAgIG1ldGhvZCA9ICdQT1NUJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlB1dDpcbiAgICAgICAgbWV0aG9kID0gJ1BVVCc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVxdWVzdE1ldGhvZC5EZWxldGU6XG4gICAgICAgIG1ldGhvZCA9ICdERUxFVEUnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuSGVhZDpcbiAgICAgICAgbWV0aG9kID0gJ0hFQUQnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuT3B0aW9uczpcbiAgICAgICAgbWV0aG9kID0gJ09QVElPTlMnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuUGF0Y2g6XG4gICAgICAgIG1ldGhvZCA9ICdQQVRDSCc7XG5cbiAgICB9XG5cbiAgICBjb25zdCBpbml0OiBJSHR0cFJlcXVlc3RJbml0ID0ge1xuICAgICAgd2l0aENyZWRlbnRpYWxzOiByZXEud2l0aENyZWRlbnRpYWxzXG4gICAgfTtcblxuICAgIHN3aXRjaCAocmVxLnJlc3BvbnNlQm9keVR5cGUpIHtcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGUuSnNvbjpcbiAgICAgICAgaW5pdC5yZXNwb25zZVR5cGUgPSAnanNvbic7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5BcnJheUJ1ZmZlcjpcbiAgICAgICAgaW5pdC5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGUuQmxvYjpcbiAgICAgICAgaW5pdC5yZXNwb25zZVR5cGUgPSAnYmxvYic7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpbml0LnJlc3BvbnNlVHlwZSA9ICd0ZXh0JztcblxuICAgIH1cblxuICAgIGlmIChyZXEuaGVhZGVycykge1xuICAgICAgaW5pdC5oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHJlcS5oZWFkZXJzKTtcbiAgICB9XG5cbiAgICBpZiAocmVxLnF1ZXJ5KSB7XG4gICAgICBpbml0LnBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtmcm9tT2JqZWN0OiByZXEucXVlcnl9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEh0dHBSZXF1ZXN0KG1ldGhvZCwgcmVxLnVybCB8fCAnJywgcmVxLmJvZHksIGluaXQpO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmVzcG9uc2UocmVxOiBJUmVzb3VyY2VSZXF1ZXN0LCByZXNwb25zZTogSHR0cFJlc3BvbnNlPGFueT4gfCBIdHRwRXJyb3JSZXNwb25zZSk6IElSZXNvdXJjZVJlc3BvbnNlIHtcblxuICAgIGNvbnN0IGhlYWRlcnM6IGFueSA9IHt9O1xuICAgIGNvbnN0IGtleXMgPSByZXNwb25zZS5oZWFkZXJzLmtleXMoKTtcbiAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBoZWFkZXJzW2tleV0gPSByZXNwb25zZS5oZWFkZXJzLmdldEFsbChrZXkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgYm9keTogKHJlc3BvbnNlIGFzIEh0dHBSZXNwb25zZTxhbnk+KS5ib2R5IHx8IChyZXNwb25zZSBhcyBIdHRwRXJyb3JSZXNwb25zZSkuZXJyb3IsXG4gICAgICBoZWFkZXJzXG4gICAgfTtcbiAgfVxuXG59XG5cbmV4cG9ydCB0eXBlIFRIdHRwUmVxdWVzdEluaXRSZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwUmVxdWVzdEluaXQge1xuICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XG4gIHBhcmFtcz86IEh0dHBQYXJhbXM7XG4gIHJlc3BvbnNlVHlwZT86IFRIdHRwUmVxdWVzdEluaXRSZXNwb25zZVR5cGU7XG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG4iXX0=