{"version":3,"file":"ng-rest-http.mjs","sources":["../../../projects/ng-rest-http/src/lib/http.service.ts","../../../projects/ng-rest-http/src/lib/upload.service.ts","../../../projects/ng-rest-http/src/lib/http.module.ts","../../../projects/ng-rest-http/src/ng-rest-http.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { throwError, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class RestHttpClient {\r\n  constructor(private http: HttpClient) {}\r\n\r\n  /**\r\n   * @param Object obj {url, params, headers}\r\n   * url : String,\r\n   * params {k1:v1, k2:v2....}\r\n   * headers {k1:v1, k2:v2....}\r\n   * @return Callback Function\r\n   */\r\n  public get(obj: any): Promise<any> {\r\n    const apiUrl = obj.url;\r\n    const body: any = {};\r\n    body.observe = 'response';\r\n\r\n    if (!Object.entries) {\r\n      Object.entries = ( entryObj: any ) => {\r\n        const ownProps = Object.keys( entryObj );\r\n        let i = ownProps.length;\r\n        const resArray = new Array(i); // preallocate the Array\r\n        while (i--) {\r\n          resArray[i] = [ownProps[i], entryObj[ownProps[i]]];\r\n        }\r\n        return resArray;\r\n      };\r\n    }\r\n\r\n    if (typeof obj.params !== 'undefined') {\r\n      let Params = new HttpParams();\r\n      Object.entries(obj.params).forEach(\r\n        ([key, value]) => Params = Params.append(key, String(value))\r\n      );\r\n\r\n      body.params = Params;\r\n    }\r\n\r\n    if (typeof obj.headers !== 'undefined') {\r\n      body.headers = this.createHeders(obj.headers);\r\n    }\r\n\r\n    return new Promise((resolve, reject) => {\r\n      this.http.get(apiUrl, body)\r\n      .pipe (\r\n        // 에러가 발생하면 err를 녀ㅠㄴㅊ갸ㅠㄷdml next 로 보낸다.\r\n        catchError(err => {return of(err);})\r\n        // catchError(this.handleError)\r\n        // catchError(err => {return of(this.handleError(err));})\r\n      )\r\n      .subscribe({\r\n        next: (v) => resolve(v),\r\n        error: (e) => reject(e), //  this.logError(e),\r\n        complete: () => console.info('complete') \r\n      })\r\n    })\r\n  }\r\n\r\n  /**\r\n   * @param Object obj {url, params}\r\n   * @return Callback Function\r\n   */\r\n  public post(obj: any): Promise<any> {\r\n    const apiUrl = obj.url;\r\n    const params = obj.params;\r\n\r\n    const body: any = {};\r\n    body.observe = 'response';\r\n\r\n    if (typeof obj.headers !== 'undefined') {\r\n      body.headers = this.createHeders(obj.headers);\r\n    }\r\n\r\n    return new Promise((resolve) => {\r\n      this.http.post(apiUrl, params,  body)\r\n      .subscribe({\r\n        next: (v) => resolve(v),\r\n        error: (e) => this.logError(e),\r\n        complete: () => console.info('complete') \r\n      })\r\n    })\r\n  }\r\n\r\n  /**\r\n   * @param Object obj {url, params}\r\n   * @return Callback Function\r\n   */\r\n\r\n  public delete(obj: any): Promise<any> {\r\n    const apiUrl = obj.url;\r\n    const body: any = {};\r\n    body.observe = 'response';\r\n\r\n    if (typeof obj.headers !== 'undefined') {\r\n      body.headers = this.createHeders(obj.headers);\r\n    }\r\n\r\n    return new Promise((resolve) => {\r\n      this.http.delete(apiUrl, body)\r\n      .subscribe({\r\n        next: (v) => resolve(v),\r\n        error: (e) => this.logError(e),\r\n        complete: () => console.info('complete') \r\n      })\r\n    })\r\n  }\r\n\r\n  /**\r\n   * @param Object obj {url, params}\r\n   * @return Callback Function\r\n   */\r\n  public update(obj: any): Promise<any> {\r\n    const apiUrl = obj.url;\r\n    const params = obj.params;\r\n    const body: any = {};\r\n    body.observe = 'response';\r\n\r\n    if (typeof obj.headers !== 'undefined') {\r\n      body.headers = this.createHeders(obj.headers);\r\n    }\r\n\r\n    return new Promise((resolve) => {\r\n      this.http.post(apiUrl, params,  body)\r\n      .subscribe({\r\n        next: (v) => resolve(v),\r\n        error: (e) => this.logError(e),\r\n        complete: () => console.info('complete') \r\n      })\r\n    })\r\n  }\r\n\r\n  /**\r\n   * @param Object obj {url, params}\r\n   * @return Callback Function\r\n   */\r\n  public put(obj: any): Promise<any> {\r\n    const apiUrl = obj.url;\r\n    const params = obj.params;\r\n    const body: any = {};\r\n    body.observe = 'response';\r\n\r\n    if (typeof obj.headers !== 'undefined') {\r\n      body.headers = this.createHeders(obj.headers);\r\n    }\r\n\r\n    return new Promise((resolve) => {\r\n      this.http.put(apiUrl, params,  body)\r\n      .subscribe({\r\n        next: (v) => resolve(v),\r\n        error: (e) => this.logError(e),\r\n        complete: () => console.info('complete') \r\n      })\r\n    });\r\n  }\r\n\r\n  /**\r\n   * @param Object headers : headers {k1:v1, k2:v2....}\r\n   */\r\n  private createHeders(headers: HttpHeaders): HttpHeaders {\r\n    let header = new HttpHeaders (); // { 'Content-Type': 'application/json' }\r\n\r\n    if (!Object.entries) {\r\n      Object.entries = ( entryObj: any ) => {\r\n        const ownProps = Object.keys( entryObj );\r\n        let i = ownProps.length;\r\n        const resArray = new Array(i); // preallocate the Array\r\n        while (i--) {\r\n          resArray[i] = [ownProps[i], entryObj[ownProps[i]]];\r\n        }\r\n        return resArray;\r\n      };\r\n    }\r\n\r\n    Object.entries(headers).forEach (\r\n      ([key, value]) => header = header.append(key, String(value))\r\n    );\r\n\r\n    return header;\r\n  }\r\n\r\n  private extractData(res: any): any {\r\n    try {\r\n      if ( typeof res.constructor !== 'undefined' && res.constructor.name === 'HttpResponse') {\r\n        return res.body;\r\n      } else {\r\n        const body = res.json();\r\n        return body || {};\r\n      }\r\n    } catch (e) {\r\n      return res._body;\r\n    }\r\n  }\r\n\r\n  private handleError(error: HttpErrorResponse) {\r\n    if (error.status === 0) {\r\n      // A client-side or network error occurred. Handle it accordingly.\r\n      console.error('An error occurred:', error.error);\r\n    } else {\r\n      // The backend returned an unsuccessful response code.\r\n      // The response body may contain clues as to what went wrong.\r\n      console.error(\r\n        `Backend returned code ${error.status}, body was: `, error.error);\r\n    }\r\n    return error;\r\n    // return throwError(() => new Error('Something bad happened; please try again later.'));\r\n  }\r\n\r\n  private logError(err: string): void {\r\n    console.error('There was an error: ');\r\n    console.error(err);\r\n  }\r\n\r\n  /**\r\n   * Not yet tested\r\n   * @param Object obj {url, params, headers}\r\n   * url : String,\r\n   * params {k1:v1, k2:v2....}\r\n   * headers {k1:v1, k2:v2....}\r\n   * @return Callback Function\r\n   * @param String filetype application/ms-excel  image/jpeg, image/png, and image/svg+xml.\r\n   * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types\r\n   */\r\n  public filedownload(obj: any, filetype?: string): Promise<any> {\r\n    const apiUrl = obj.url;\r\n    const body: any = {};\r\n    body.observe = 'response';\r\n    body.responseType = 'arraybuffer'; // add responseType\r\n\r\n    if (!Object.entries) {\r\n      Object.entries = ( entryObj: any ) => {\r\n        const ownProps = Object.keys( entryObj );\r\n        let i = ownProps.length;\r\n        const resArray = new Array(i); // preallocate the Array\r\n        while (i--) {\r\n          resArray[i] = [ownProps[i], entryObj[ownProps[i]]];\r\n        }\r\n\r\n        return resArray;\r\n      };\r\n    }\r\n\r\n    if (typeof obj.params !== 'undefined') {\r\n      let Params = new HttpParams();\r\n      Object.entries(obj.params).forEach(\r\n        ([key, value]) => Params = Params.append(key, String(value))\r\n      );\r\n\r\n      body.params = Params;\r\n    }\r\n\r\n    if (typeof obj.headers !== 'undefined') {\r\n      body.headers = this.createHeders(obj.headers);\r\n    }\r\n\r\n    if (typeof obj.headers !== 'undefined') {\r\n      this.createHeders(obj.headers);\r\n    }\r\n\r\n    return new Promise((resolve) => {\r\n      this.http.get(apiUrl, body)\r\n      .pipe (\r\n        // catchError(this.handleError)\r\n        catchError(err => {return of(err);})\r\n        // catchError(err => {return of(this.handleError(err));})\r\n      )\r\n      .subscribe({\r\n        next: (v: any) => resolve(v.body),\r\n        error: (e) => this.logError(e),\r\n        complete: () => console.info('complete') \r\n      })\r\n    })\r\n  }\r\n  /**\r\n   * Method is use to download file.\r\n   * @param data - Array Buffer data\r\n   * @param type - type of the document.\r\n   */\r\n  private downLoadFile(data: any, type: string): void {\r\n    const blob = new Blob([data], { type});\r\n\r\n    const url = window.URL.createObjectURL(blob);\r\n    const pwa = window.open(url);\r\n    if (!pwa || pwa.closed || typeof pwa.closed === 'undefined') {\r\n      console.log( 'Please disable your Pop-up blocker and try again.');\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpRequest, HttpEvent } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class UploadService {\r\n\r\n  constructor(private http: HttpClient) {}\r\n\r\n  // file from event.target.files[0]\r\n  uploadFile(url: string, file: File): Observable < HttpEvent < any >> {\r\n\r\n    const formData = new FormData();\r\n    formData.append('upload', file);\r\n\r\n    const params = new HttpParams();\r\n\r\n    const options = {\r\n      params: params,\r\n      reportProgress: true,\r\n    };\r\n\r\n    /*\r\n    const options = {\r\n        headers: new HttpHeaders().set('Authorization', this.loopBackAuth.accessTokenId),\r\n        params: params,\r\n        reportProgress: true,\r\n        withCredentials: true,\r\n    }\r\n    */\r\n\r\n    const req = new HttpRequest('POST', url, formData, options);\r\n    return this.http.request(req); // return event\r\n  }\r\n}\r\n\r\n/* in your component\r\n// At the drag drop area\r\n  // (drop)=\"onDropFile($event)\"\r\nonDropFile(event: DragEvent) {\r\n    event.preventDefault();\r\n    this.uploadFile(event.dataTransfer.files);\r\n}\r\n\r\n// At the drag drop area\r\n// (dragover)=\"onDragOverFile($event)\"\r\nonDragOverFile(event) {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n}\r\n\r\n// At the file input element\r\n// <input type=\"file\" (change)=\"selectFile($event)\" name=\"file\" />\r\nselectFile(event) {\r\n    this.uploadFile(event.target.files);\r\n}\r\n\r\nuploadFile(files: FileList) {\r\n    if (files.length == 0) {\r\n        console.log(\"No file selected!\");\r\n        return\r\n    }\r\n    let file: File = files[0];\r\n\r\n    this.upload.uploadFile(this.appCfg.baseUrl + \"/api/flash/upload\", file)\r\n    .subscribe(\r\n        event => {\r\n            if (event.type == HttpEventType.UploadProgress) {\r\n                const percentDone = Math.round(100 * event.loaded / event.total);\r\n                console.log(`File is ${percentDone}% loaded.`);\r\n            } else if (event instanceof HttpResponse) {\r\n                console.log('File is completely loaded!');\r\n            }\r\n        },\r\n        (err) => {\r\n            console.log(\"Upload Error:\", err);\r\n        }, () => {\r\n            console.log(\"Upload done\");\r\n        }\r\n    )\r\n}\r\n  */\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { RestHttpClient } from './http.service';\r\nimport { UploadService } from './upload.service';\r\n\r\n@NgModule({\r\n  imports: [ HttpClientModule ],\r\n  providers: [ RestHttpClient, UploadService ]\r\n})\r\nexport class RestHttpClientModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}