UNPKG

@ngx-resource/handler-ngx-http

Version:
126 lines (120 loc) 4.89 kB
import * as i0 from '@angular/core'; import { Injectable, NgModule } from '@angular/core'; import * as i1 from '@angular/common/http'; import { HttpHeaders, HttpParams, HttpRequest, HttpClient } from '@angular/common/http'; import { last, map, catchError } from 'rxjs/operators'; import { ResourceHandler, ResourceRequestMethod, ResourceResponseBodyType, ResourceModule as ResourceModule$1 } from '@ngx-resource/core'; 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(); if (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 }]; } }); class ResourceModule extends ResourceModule$1 { /** * For root */ static forRoot(config = {}) { return ResourceModule$1.forRoot({ handler: config.handler || { provide: ResourceHandler, useClass: ResourceHandlerHttpClient, deps: [HttpClient] } }); } /** * For child */ static forChild(config = {}) { return ResourceModule$1.forChild({ handler: config.handler || { provide: ResourceHandler, useClass: ResourceHandlerHttpClient, deps: [HttpClient] } }); } } ResourceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ResourceModule, deps: null, target: i0.ɵɵFactoryTarget.NgModule }); ResourceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: ResourceModule }); ResourceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ResourceModule }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: ResourceModule, decorators: [{ type: NgModule }] }); /* * Public API Surface of handler-ngx-http */ /** * Generated bundle index. Do not edit. */ export { ResourceHandlerHttpClient, ResourceModule }; //# sourceMappingURL=ngx-resource-handler-ngx-http.mjs.map