UNPKG

@ngx-resource/handler-ngx-http

Version:
87 lines 11.3 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 '@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: "15.1.5", ngImport: i0, type: ResourceHandlerHttpClient, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); ResourceHandlerHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ResourceHandlerHttpClient }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ResourceHandlerHttpClient, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VIYW5kbGVySHR0cENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXNvdXJjZS9oYW5kbGVyLW5neC1odHRwL3NyYy9saWIvUmVzb3VyY2VIYW5kbGVySHR0cENsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQXFCLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ3pILE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFJTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDOzs7QUFHNUIsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGVBQWU7SUFFNUQsWUFBb0IsSUFBZ0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFZO0lBRXBDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBcUI7UUFFMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztpQkFDbkMsSUFBSSxDQUNILElBQUksRUFBRSxFQUNOLEdBQUcsQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ2hFLFVBQVUsQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FDSDtTQUNKLENBQUM7SUFFSixDQUFDO0lBR1MsY0FBYyxDQUFDLEdBQXFCO1FBRTVDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVuQixRQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFFbEIsS0FBSyxxQkFBcUIsQ0FBQyxHQUFHO2dCQUM1QixNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNmLE1BQU07WUFFUixLQUFLLHFCQUFxQixDQUFDLElBQUk7Z0JBQzdCLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ2hCLE1BQU07WUFFUixLQUFLLHFCQUFxQixDQUFDLEdBQUc7Z0JBQzVCLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ2YsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsTUFBTTtnQkFDL0IsTUFBTSxHQUFHLFFBQVEsQ0FBQztnQkFDbEIsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsSUFBSTtnQkFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDaEIsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsT0FBTztnQkFDaEMsTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFDbkIsTUFBTTtZQUVSLEtBQUsscUJBQXFCLENBQUMsS0FBSztnQkFDOUIsTUFBTSxHQUFHLE9BQU8sQ0FBQztTQUVwQjtRQUVELE1BQU0sSUFBSSxHQUFxQjtZQUM3QixlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7U0FDckMsQ0FBQztRQUVGLFFBQVEsR0FBRyxDQUFDLGdCQUFnQixFQUFFO1lBRTVCLEtBQUssd0JBQXdCLENBQUMsSUFBSTtnQkFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7Z0JBQzNCLE1BQU07WUFFUixLQUFLLHdCQUF3QixDQUFDLFdBQVc7Z0JBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO2dCQUNsQyxNQUFNO1lBRVIsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO2dCQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDM0IsTUFBTTtZQUVSO2dCQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1NBRTlCO1FBRUQsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0M7UUFFRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVoRSxDQUFDO0lBRVMsY0FBYyxDQUFDLEdBQXFCLEVBQUUsUUFBK0M7UUFFN0YsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDdkIsSUFBSSxFQUFHLFFBQThCLENBQUMsSUFBSSxJQUFLLFFBQThCLENBQUMsS0FBSztZQUNuRixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7O3NIQTNHVSx5QkFBeUI7MEhBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbGFzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgSVJlc291cmNlSGFuZGxlclJlc3BvbnNlLFxuICBJUmVzb3VyY2VSZXF1ZXN0LFxuICBJUmVzb3VyY2VSZXNwb25zZSxcbiAgUmVzb3VyY2VIYW5kbGVyLFxuICBSZXNvdXJjZVJlcXVlc3RNZXRob2QsXG4gIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZVxufSBmcm9tICdAbmd4LXJlc291cmNlL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VIYW5kbGVySHR0cENsaWVudCBleHRlbmRzIFJlc291cmNlSGFuZGxlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGhhbmRsZShyZXE6IElSZXNvdXJjZVJlcXVlc3QpOiBJUmVzb3VyY2VIYW5kbGVyUmVzcG9uc2Uge1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucHJlcGFyZVJlcXVlc3QocmVxKTtcblxuICAgIHJldHVybiB7XG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmh0dHAucmVxdWVzdChyZXF1ZXN0KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBsYXN0KCksXG4gICAgICAgICAgbWFwKChyZXNwOiBIdHRwUmVzcG9uc2U8YW55PikgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXEsIHJlc3ApKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChyZXNwOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5oYW5kbGVSZXNwb25zZShyZXEsIHJlc3ApO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9O1xuXG4gIH1cblxuXG4gIHByb3RlY3RlZCBwcmVwYXJlUmVxdWVzdChyZXE6IElSZXNvdXJjZVJlcXVlc3QpOiBIdHRwUmVxdWVzdDxhbnk+IHtcblxuICAgIGxldCBtZXRob2QgPSAnR0VUJztcblxuICAgIHN3aXRjaCAocmVxLm1ldGhvZCkge1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVxdWVzdE1ldGhvZC5HZXQ6XG4gICAgICAgIG1ldGhvZCA9ICdHRVQnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuUG9zdDpcbiAgICAgICAgbWV0aG9kID0gJ1BPU1QnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3RNZXRob2QuUHV0OlxuICAgICAgICBtZXRob2QgPSAnUFVUJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLkRlbGV0ZTpcbiAgICAgICAgbWV0aG9kID0gJ0RFTEVURSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVxdWVzdE1ldGhvZC5IZWFkOlxuICAgICAgICBtZXRob2QgPSAnSEVBRCc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVxdWVzdE1ldGhvZC5PcHRpb25zOlxuICAgICAgICBtZXRob2QgPSAnT1BUSU9OUyc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVxdWVzdE1ldGhvZC5QYXRjaDpcbiAgICAgICAgbWV0aG9kID0gJ1BBVENIJztcblxuICAgIH1cblxuICAgIGNvbnN0IGluaXQ6IElIdHRwUmVxdWVzdEluaXQgPSB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHJlcS53aXRoQ3JlZGVudGlhbHNcbiAgICB9O1xuXG4gICAgc3dpdGNoIChyZXEucmVzcG9uc2VCb2R5VHlwZSkge1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5Kc29uOlxuICAgICAgICBpbml0LnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZUJvZHlUeXBlLkFycmF5QnVmZmVyOlxuICAgICAgICBpbml0LnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcic7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5CbG9iOlxuICAgICAgICBpbml0LnJlc3BvbnNlVHlwZSA9ICdibG9iJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGluaXQucmVzcG9uc2VUeXBlID0gJ3RleHQnO1xuXG4gICAgfVxuXG4gICAgaWYgKHJlcS5oZWFkZXJzKSB7XG4gICAgICBpbml0LmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMocmVxLmhlYWRlcnMpO1xuICAgIH1cblxuICAgIGlmIChyZXEucXVlcnkpIHtcbiAgICAgIGluaXQucGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe2Zyb21PYmplY3Q6IHJlcS5xdWVyeX0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSHR0cFJlcXVlc3QobWV0aG9kLCByZXEudXJsIHx8ICcnLCByZXEuYm9keSwgaW5pdCk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZXNwb25zZShyZXE6IElSZXNvdXJjZVJlcXVlc3QsIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8YW55PiB8IEh0dHBFcnJvclJlc3BvbnNlKTogSVJlc291cmNlUmVzcG9uc2Uge1xuXG4gICAgY29uc3QgaGVhZGVyczogYW55ID0ge307XG4gICAgY29uc3Qga2V5cyA9IHJlc3BvbnNlLmhlYWRlcnMua2V5cygpO1xuICAgIGtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGhlYWRlcnNba2V5XSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0QWxsKGtleSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICBib2R5OiAocmVzcG9uc2UgYXMgSHR0cFJlc3BvbnNlPGFueT4pLmJvZHkgfHwgKHJlc3BvbnNlIGFzIEh0dHBFcnJvclJlc3BvbnNlKS5lcnJvcixcbiAgICAgIGhlYWRlcnNcbiAgICB9O1xuICB9XG5cbn1cblxuZXhwb3J0IHR5cGUgVEh0dHBSZXF1ZXN0SW5pdFJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBSZXF1ZXN0SW5pdCB7XG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcbiAgcGFyYW1zPzogSHR0cFBhcmFtcztcbiAgcmVzcG9uc2VUeXBlPzogVEh0dHBSZXF1ZXN0SW5pdFJlc3BvbnNlVHlwZTtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbn1cbiJdfQ==