File

src/app/com/mycompany/normalize/core/service/http.service.ts

Example

Index

Properties
Methods

Constructor

constructor(injector: Injector, plHttpService: PlHttpService)

Parameters :
Name Type Optional
injector Injector No
plHttpService PlHttpService No

Methods

DELETE
DELETE(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
DOWNLOAD
DOWNLOAD(streamData, contentType: CONTENT_TYPE | string, fileName?: string)

Parameters :
Name Type Optional
streamData No
contentType CONTENT_TYPE | string No
fileName string Yes
Returns : Promise<any>
DOWNLOADURL
DOWNLOADURL(url: string, filename: string)

Parameters :
Name Type Optional Default value
url string No
filename string No new Date().getTime() + "txt"
Returns : void
FORKJOIN
FORKJOIN(plttpRequest: Array, interrupt?: Subject)

Parameters :
Name Type Optional
plttpRequest Array<PlHttpRequest> No
interrupt Subject<boolean> Yes
Returns : Observable<Array<HttpResponse<any>>>
GET
GET(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
GETBG
GETBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
GETFILE
GETFILE(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
KILLAJXCALL
KILLAJXCALL(IDAjax: string)

Parameters :
Name Type Optional
IDAjax string No
Returns : void
PATCH
PATCH(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
PATCHBG
PATCHBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
POST
POST(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
POSTBG
POSTBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
POSTFILE
POSTFILE(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
PUT
PUT(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
PUTBG
PUTBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id?: any) => void, contentType?: CONTENT_TYPE | string)

Parameters :
Name Type Optional
plttpRequest PlHttpRequest No
responseType RESPONSE_TYPE Yes
callBack function Yes
contentType CONTENT_TYPE | string Yes
Returns : Observable<HttpResponse<any>>
TAILAJXCALL
TAILAJXCALL(IDAjax: string)

Parameters :
Name Type Optional
IDAjax string No
Returns : Subject<any>

Properties

Public plHttpService
Type : PlHttpService
import { Injectable, InjectionToken, Injector } from '@angular/core';
import { CONTENT_TYPE, PlCoreModule, PlHttpService, RESPONSE_TYPE, PlCoreUtils, PlHttpRequest} from 'pl-core-utils-library';
import { Observable, Subject  } from 'rxjs';
import { ErrorBean, ErrorCode } from 'src/app/com/mycompany/normalize/core/bean/error-bean';
import { HttpResponse } from '@angular/common/http';

/** 
 * @author l.piciollo
 * injectiontoken per la valorizzazione della baseurl per l'invocazione dei servizi del BE.
 * E.S http://baseurl:8080/api/v1/
 */

export const BASE_URL_API = new InjectionToken<any>("Puntamento all'indirizzo del BE");

/**
 * @author l.piciollo
 * servizio base per l'interfacciamento con la PLHttpService.. qui sono esposti metodi sia per il background, quindi non subiscono
 * interruzioni da parte della navigazione, che servizi istantanei, i quali vengono terminati in caso di cambio di rotta
 * la classe mette a disposizione gia tutto l'occorrente 
 */
@Injectable({
  providedIn: "root"
})
/**
* ATTENZIONE, NON SI CONSIGLIA LA MODIFICA DI QUESTA CLASSE A CAUSA DI OSSERVATORI ESTERNI CHE NE FANNO USO SPECIFICO.
* IL SERVIZIO, E' STATO SPECIALIZZATO CON DEGLI EVENTI DI BROADCAST LANCIATI E ASCOLTATI NELLA GLOBALSERVICE QUESTO DA MODO
* DI EVITARE DI METTERE MANI A QUESTO SERVIZIO. 
* NELLA GLOBAL SERVICE SARA POSSIBILE GESTIRE IN AUTONOMIA GLI EVENTI LANCIATI
* QUAL'ORA FOSSENECESSARIO AGGIUNGERE ALTRI MEDODI , OCCORRE ESTENDERE LA CLASSE IN UN NUOVO SERVIZIO
*/  
export class HttpService {
   /********************************************************************************************************************/
   constructor(private injector: Injector, public plHttpService: PlHttpService) {

  }


  /**
   * @author l.piciollo
   * logtrace per visualizzare di default lo stato di avanzamento delle http
   * @param IDAjax 
   */
  private logTraceHttp(IDAjax: any) {
    let trace = this.TAILAJXCALL(IDAjax).subscribe(object => {
      console.log(object)
    }, () => { }, () => { trace.unsubscribe(); })
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * funzionlita per rimanere in ascolto su una progressione di chiamata al be.. utile per risalire allo stato di chiamate al BE
   * per il caricamento/scaricamento file. la funzione ritorna un Subject... dove possibile sottoscriversi per icevere i dati
   * in modalità realtime. utile per costruire barre di progressione a runtime.
   * @param IDAjax : id della chiamata ajax precedentemente chiamata, l'id viene restituido dalla callback in ingresso alle chiamate
   */
  TAILAJXCALL(IDAjax: string): Subject<any> {
    try {
      return PlCoreUtils.progressBars[IDAjax].changed;
    } catch (error) {
      throw new ErrorBean(error.message, ErrorCode.SYSTEMERRORCODE, false, true)
    }
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * funzionalità per la terminazione di una chiamata di rete che magari prende piu tempo del previsto.. passando in ingresso l'id AJAX 
   * staccato al momento della chiamata è utile per killare upload/download file. 
   * @param IDAjax : id della chiamata ajax precedentemente chiamata, l'id viene restituido dalla callback in ingresso alle chiamate
   */
  KILLAJXCALL(IDAjax: string) {
    try {
      PlCoreUtils.progressBars[IDAjax].interrupt.next(true);
    } catch (error) {
      throw new ErrorBean(error.message, ErrorCode.SYSTEMERRORCODE, false, true)
    }
  }
  /********************************************************************************************************************/
  /**
  * @author l.piciollo
  * funzione per il download dello straming in formato file
  * @param streamData :buffer di byte
  * @param headers   : headers  ajax
  * @param filename : nome file
  */
  DOWNLOAD(streamData, contentType: CONTENT_TYPE | string, fileName?: string): Promise<any> {
    return this.plHttpService.DOWNLOAD(streamData, contentType, fileName);
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * si occupa di effettuare il download dell'immagine contenuta nel blob creato con le altre funzionalità
   * funzionalità utilizzabile in combinazione con le funzione di creazione image o file 
   * @param url : url del blob
   * @param filename : nome file 
   */
  DOWNLOADURL(url: string, filename: string = new Date().getTime() + "txt") {
    this.plHttpService.DOWNLOADURL(url, filename);
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio GET 
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  GET(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.GET(plttpRequest, responseType || RESPONSE_TYPE.JSON, PlCoreModule.Routing().getIinterrupt(), contentType || null, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }
  /********************************************************************************************************************/

  /**
   * @author l.piciollo
   * Servizio GET REST non influente al cambio di rotta.. il servizio gira in background
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE 
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  GETBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.GET(plttpRequest, responseType || RESPONSE_TYPE.JSON, null, contentType || null, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }


  /********************************************************************************************************************/

  /**
   * @author l.piciollo
   * Servizio PATCH 
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  PATCH(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.PATCH(plttpRequest, responseType || RESPONSE_TYPE.JSON, PlCoreModule.Routing().getIinterrupt(), contentType || null, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio PATCHBG REST non influente al cambio di rotta.. il servizio gira in background
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  PATCHBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.PATCH(plttpRequest, responseType || RESPONSE_TYPE.JSON, null, contentType || null, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }

  /********************************************************************************************************************/

  /**
   * @author l.piciollo
   * Servizio POST 
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  POST(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.POST(plttpRequest, responseType || RESPONSE_TYPE.JSON, PlCoreModule.Routing().getIinterrupt(), contentType || null, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio POSTBG REST  influente al cambio di rotta.. il servizio gira in background
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  POSTBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.POST(plttpRequest, responseType || RESPONSE_TYPE.JSON, null, contentType || null, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio POST REST non influente al cambio di rotta.. il servizio gira in background utile per la gestione dei file 
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  POSTFILE(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.POST(plttpRequest, responseType, null, contentType, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }

  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio GET REST non influente al cambio di rotta.. il servizio gira in background utile per la gestione dei file 
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  GETFILE(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.GET(plttpRequest, responseType, null, contentType, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }

  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio PUT REST
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  PUT(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.PUT(plttpRequest, responseType, PlCoreModule.Routing().getIinterrupt(), contentType, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio PUTBG REST  influente al cambio di rotta.. il servizio gira in background
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  PUTBG(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.PUT(plttpRequest, responseType || RESPONSE_TYPE.JSON, null, contentType || null, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio DELETE REST
   * @param url          :Url BE
   * @param params       :params
   * @param responseType :tipo di risposta RESPONSE_TYPE
   * @param callBack     :funzione da lanciare al momento dell'avvio della richiesta, riceve l'id ajax per la progressbar
   * @param contentType  :tipo di contenuto ricevuto
   */
  DELETE(plttpRequest: PlHttpRequest, responseType?: RESPONSE_TYPE, callBack?: (id: any) => void, contentType?: CONTENT_TYPE | string): Observable<HttpResponse<any>> {
    return new Observable<HttpResponse<any>>(observer => {
      plttpRequest.url = this.injector.get(BASE_URL_API).concat(plttpRequest.url);
      this.plHttpService.DELETE(plttpRequest, responseType, PlCoreModule.Routing().getIinterrupt(), contentType, callBack || this.logTraceHttp.bind(this)).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }
  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * Servizio FORKJOIN REST
   * @param serviceUrls  :lista di url da richiamare in parallelo
   * @param params       :params 
   */
  FORKJOIN(plttpRequest: Array<PlHttpRequest>, interrupt?: Subject<boolean>): Observable<Array<HttpResponse<any>>> {
    plttpRequest = plttpRequest.map(request => {
      request.url = this.injector.get(BASE_URL_API).concat(request.url)
      return request;
    })
    return new Observable<Array<HttpResponse<any>>>(observer => {
      this.plHttpService.FORKJOIN(plttpRequest, interrupt).subscribe(res => {
        observer.next(res)
        observer.complete();
      }, err => {
        observer.error(this.checkError(err));
      }, () => { });
    });
  }

  /********************************************************************************************************************/
  /**
   * @author l.piciollo
   * funzione di utilita per la cattura delle eccezioni o errori riscontrati durante le chiamte al BE
   * @param error 
   */
  private checkError(error): ErrorBean {
    try {
      return new ErrorBean(error.error.errorResponse.description, ErrorCode.SYSTEMERRORCODE, false, true)
    } catch (e) {
      if (error.message)
        return new ErrorBean(error.message, ErrorCode.SYSTEMERRORCODE, false, true)
    }
  }
  /********************************************************************************************************************/
}

result-matching ""

    No results matching ""