{"version":3,"file":"ngx-resource-handler-ngx-http.mjs","sources":["../../../../projects/ngx-resource/handler-ngx-http/src/lib/ResourceHandlerHttpClient.ts","../../../../projects/ngx-resource/handler-ngx-http/src/lib/ResourceModule.ts","../../../../projects/ngx-resource/handler-ngx-http/src/public-api.ts","../../../../projects/ngx-resource/handler-ngx-http/src/ngx-resource-handler-ngx-http.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { catchError, last, map } from 'rxjs/operators';\nimport {\n  IResourceHandlerResponse,\n  IResourceRequest,\n  IResourceResponse,\n  ResourceHandler,\n  ResourceRequestMethod,\n  ResourceResponseBodyType\n} from '@ngx-resource/core';\n\n@Injectable()\nexport class ResourceHandlerHttpClient extends ResourceHandler {\n\n  constructor(private http: HttpClient) {\n    super();\n  }\n\n  handle(req: IResourceRequest): IResourceHandlerResponse {\n\n    const request = this.prepareRequest(req);\n\n    return {\n      observable: this.http.request(request)\n        .pipe(\n          last(),\n          map((resp: HttpResponse<any>) => this.handleResponse(req, resp)),\n          catchError((resp: HttpErrorResponse) => {\n            throw this.handleResponse(req, resp);\n          })\n        )\n    };\n\n  }\n\n\n  protected prepareRequest(req: IResourceRequest): HttpRequest<any> {\n\n    let method = 'GET';\n\n    switch (req.method) {\n\n      case ResourceRequestMethod.Get:\n        method = 'GET';\n        break;\n\n      case ResourceRequestMethod.Post:\n        method = 'POST';\n        break;\n\n      case ResourceRequestMethod.Put:\n        method = 'PUT';\n        break;\n\n      case ResourceRequestMethod.Delete:\n        method = 'DELETE';\n        break;\n\n      case ResourceRequestMethod.Head:\n        method = 'HEAD';\n        break;\n\n      case ResourceRequestMethod.Options:\n        method = 'OPTIONS';\n        break;\n\n      case ResourceRequestMethod.Patch:\n        method = 'PATCH';\n\n    }\n\n    const init: IHttpRequestInit = {\n      withCredentials: req.withCredentials\n    };\n\n    switch (req.responseBodyType) {\n\n      case ResourceResponseBodyType.Json:\n        init.responseType = 'json';\n        break;\n\n      case ResourceResponseBodyType.ArrayBuffer:\n        init.responseType = 'arraybuffer';\n        break;\n\n      case ResourceResponseBodyType.Blob:\n        init.responseType = 'blob';\n        break;\n\n      default:\n        init.responseType = 'text';\n\n    }\n\n    if (req.headers) {\n      init.headers = new HttpHeaders(req.headers);\n    }\n\n    if (req.query) {\n      init.params = new HttpParams({fromObject: req.query});\n    }\n\n    return new HttpRequest(method, req.url || '', req.body, init);\n\n  }\n\n  protected handleResponse(req: IResourceRequest, response: HttpResponse<any> | HttpErrorResponse): IResourceResponse {\n\n    const headers: any = {};\n    const keys = response.headers.keys();\n    keys.forEach((key: string) => {\n      headers[key] = response.headers.getAll(key);\n    });\n\n    return {\n      status: response.status,\n      body: (response as HttpResponse<any>).body || (response as HttpErrorResponse).error,\n      headers\n    };\n  }\n\n}\n\nexport type THttpRequestInitResponseType = 'arraybuffer' | 'blob' | 'json' | 'text';\n\nexport interface IHttpRequestInit {\n  headers?: HttpHeaders;\n  params?: HttpParams;\n  responseType?: THttpRequestInitResponseType;\n  withCredentials?: boolean;\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { IResourceModuleConfig, ResourceHandler, ResourceModule as ResourceModuleCore } from '@ngx-resource/core';\nimport { ResourceHandlerHttpClient } from './ResourceHandlerHttpClient';\n\n@NgModule()\nexport class ResourceModule extends ResourceModuleCore {\n\n  /**\n   * For root\n   */\n  static forRoot(config: IResourceModuleConfig = {}): ModuleWithProviders<ResourceModuleCore> {\n    return ResourceModuleCore.forRoot({\n      handler: config.handler || {provide: ResourceHandler, useClass: ResourceHandlerHttpClient, deps: [HttpClient]}\n    });\n  }\n\n  /**\n   * For child\n   */\n  static forChild(config: IResourceModuleConfig = {}): ModuleWithProviders<ResourceModuleCore> {\n    return ResourceModuleCore.forChild({\n      handler: config.handler || {provide: ResourceHandler, useClass: ResourceHandlerHttpClient, deps: [HttpClient]}\n    });\n  }\n}\n","/*\n * Public API Surface of handler-ngx-http\n */\n\nexport * from './lib/ResourceHandlerHttpClient';\nexport * from './lib/ResourceModule';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ResourceModuleCore"],"mappings":"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"}