@esfaenza/httpservice 19.2.23 → 20.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,569 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, ModuleWithProviders } from '@angular/core';
3
+ import { HttpClient, HttpParams } from '@angular/common/http';
4
+ import { CacheService } from '@esfaenza/preferences';
5
+ import { HashingService, UtilityService } from '@esfaenza/extensions';
6
+ import { BaseLocalization } from '@esfaenza/localizations';
7
+ import { Subject, Observable } from 'rxjs';
8
+
1
9
  /**
2
- * Generated bundle index. Do not edit.
10
+ * Dizionario di invalidazioni delle chiamate HTTP
3
11
  */
4
- /// <amd-module name="@esfaenza/httpservice" />
5
- export * from './public-api';
12
+ declare const HTTP_INVALIDATION: InjectionToken<Record<string, string[]>>;
13
+ /**
14
+ * Durata della cache lato libreria dopo il quale la cache verrà ripulita
15
+ */
16
+ declare const CLIENT_CACHE_DURATION_S: InjectionToken<number>;
17
+ /**
18
+ * Nome dell'APP utilizzato per creare le chiavi delle cache specifiche per l'applicazione corrente
19
+ */
20
+ declare const APP_NAME: InjectionToken<string>;
21
+ /**
22
+ * Indica se utilizzare l'identificativo utente nella cache
23
+ */
24
+ declare const CACHE_BY_USER: InjectionToken<boolean>;
25
+ /**
26
+ * Indica se fare log nella console ad ogni azione significativa
27
+ */
28
+ declare const HTTP_DEBUG_MODE: InjectionToken<boolean>;
29
+
30
+ /**
31
+ * Interfaccia per la classe d'estensione che permette di modificare il comportamento della libreria negli hook definiti da interfaccia, in modo da poterla adattare
32
+ * con un certo grado di customizzazione a qualsiasi struttura di frontend
33
+ */
34
+ interface IHttpServiceExtensions {
35
+ /**
36
+ * Hook per recuperare l'access token con cui effettuare le chiamate HTTP
37
+ */
38
+ retrieveAccessToken(): string;
39
+ /**
40
+ * Hook per recuperare l'Identity corrente in un oggetto generico con le informazioni di User e Tenant
41
+ */
42
+ retrieveIdentity(): {
43
+ IdUser: string;
44
+ Idtenant: string;
45
+ };
46
+ /**
47
+ * Hook per leggere dallo stato dell'applicazione se stiamo già venendo ridirezionati al login, in modo da non tentare di effettuare
48
+ * 10 redirect contemporaneamente qualora molte API fallissero allo stesso tempo nell'autenticazione
49
+ */
50
+ readRedirectingToLogin(): boolean;
51
+ /**
52
+ * Hook per scrivere nello stato dell'applicazione se stiamo effettuando un redirect al login o meno
53
+ */
54
+ writeRedirectingToLogin(status: boolean): any;
55
+ /**
56
+ * Hook per effettuare il redirect al login
57
+ */
58
+ redirectToLogin(): void;
59
+ /**
60
+ * Hook per leggere dallo stato dell'applicazione se stiamo già gestendo un errore, in modo da non tentare di gestire
61
+ * N errori contemporaneamente qualora molte API fallissero allo stesso tempo
62
+ */
63
+ readHandlingErrorStatus(): boolean;
64
+ /**
65
+ * Hook per scrivere nello stato dell'applicazione se stiamo gestendo un errore o meno
66
+ */
67
+ writeHandlingErrorStatus(status: boolean): any;
68
+ /**
69
+ * Hook per leggere dallo stato dell'applicazione se stiamo già gestendo un redirect, in modo da non tentare di gestire
70
+ * N redirect contemporaneamente qualora molte API lo richiedessero allo stesso tempo
71
+ */
72
+ readRedirectionStatus(): boolean;
73
+ /**
74
+ * Hook per scrivere nello stato dell'applicazione se stiamo gestendo un redirect o meno
75
+ */
76
+ writeRedirectionStatus(status: boolean): void;
77
+ /**
78
+ * Hook per indicare se l'applicazione può gestire eccezioni del tipo "NotConfigured" (444). Qualora l'applicazione che lo implementa dichiari di gestirle verrà chiamata
79
+ * la funzione **handleBlockingException** per ognuno di questi errori
80
+ */
81
+ handleNotConfiguredException(): boolean;
82
+ /**
83
+ * Hook per la gestione di un qualsiasi errore bloccante per l'operazione attuale, ma non fatale (Generalmente gestibile da dialog di avviso)
84
+ */
85
+ handleBlockingException(status: number, text: string): any;
86
+ /**
87
+ * Hook per la gestione di un qualsiasi errore fatale (Generalmente gestibile tramite navigazione a una pagina di errore custom per l'applicativo)
88
+ */
89
+ handleException(status: number, text: string): any;
90
+ }
91
+
92
+ /**
93
+ * Classe d'estensione che permette di modificare il comportamento della libreria negli hook definiti da interfaccia, in modo da poterla adattare
94
+ * con un certo grado di customizzazione a qualsiasi struttura di frontend
95
+ */
96
+ declare class HttpServiceExtensions implements IHttpServiceExtensions {
97
+ /**
98
+ * Hook per recuperare l'access token con cui effettuare le chiamate HTTP
99
+ */
100
+ retrieveAccessToken(): string;
101
+ /**
102
+ * Hook per recuperare l'Identity corrente in un oggetto generico con le informazioni di User e Tenant
103
+ */
104
+ retrieveIdentity(): {
105
+ IdUser: string;
106
+ Idtenant: string;
107
+ };
108
+ /**
109
+ * Hook per leggere dallo stato dell'applicazione se stiamo già venendo ridirezionati al login, in modo da non tentare di effettuare
110
+ * N redirect contemporaneamente qualora molte API fallissero allo stesso tempo nell'autenticazione
111
+ */
112
+ readRedirectingToLogin(): boolean;
113
+ /**
114
+ * Hook per scrivere nello stato dell'applicazione se stiamo effettuando un redirect al login o meno
115
+ */
116
+ writeRedirectingToLogin(status: boolean): void;
117
+ /**
118
+ * Hook per effettuare il redirect al login
119
+ */
120
+ redirectToLogin(): void;
121
+ /**
122
+ * Hook per leggere dallo stato dell'applicazione se stiamo già gestendo un errore, in modo da non tentare di gestire
123
+ * N errori contemporaneamente qualora molte API fallissero allo stesso tempo
124
+ */
125
+ readHandlingErrorStatus(): boolean;
126
+ /**
127
+ * Hook per scrivere nello stato dell'applicazione se stiamo gestendo un errore o meno
128
+ */
129
+ writeHandlingErrorStatus(status: boolean): void;
130
+ /**
131
+ * Hook per leggere dallo stato dell'applicazione se stiamo già gestendo un redirect, in modo da non tentare di gestire
132
+ * N redirect contemporaneamente qualora molte API lo richiedessero allo stesso tempo
133
+ */
134
+ readRedirectionStatus(): boolean;
135
+ /**
136
+ * Hook per scrivere nello stato dell'applicazione se stiamo gestendo un redirect o meno
137
+ */
138
+ writeRedirectionStatus(status: boolean): void;
139
+ /**
140
+ * Hook per indicare se l'applicazione può gestire eccezioni del tipo "NotConfigured" (444). Qualora l'applicazione che lo implementa dichiari di gestirle verrà chiamata
141
+ * la funzione **handleBlockingException** per ognuno di questi errori
142
+ */
143
+ handleNotConfiguredException(): boolean;
144
+ /**
145
+ * Hook per la gestione di un qualsiasi errore bloccante per l'operazione attuale, ma non fatale (Generalmente gestibile da dialog di avviso)
146
+ */
147
+ handleBlockingException(status: number, text: string): void;
148
+ /**
149
+ * Hook per la gestione di un qualsiasi errore fatale (Generalmente gestibile tramite navigazione a una pagina di errore custom per l'applicativo)
150
+ */
151
+ handleException(status: number | string, text: string): void;
152
+ static ɵfac: i0.ɵɵFactoryDeclaration<HttpServiceExtensions, never>;
153
+ static ɵprov: i0.ɵɵInjectableDeclaration<HttpServiceExtensions>;
154
+ }
155
+
156
+ declare class Download {
157
+ state: 'PENDING' | 'IN_PROGRESS' | 'DONE';
158
+ progress: number;
159
+ content: Blob | null;
160
+ }
161
+
162
+ /**
163
+ * Servizio utilizzato per effettuare qualsiasi tipo di chiamata HTTP dall'applicazione, gestisce errori e cache delle risposte nativamente e ne può essere
164
+ * esteso/modificato il comportamento implementando la classe di "hook" **IHttpServiceExtensions** e registrandola nel provider della classe **HttpServiceExtensions**
165
+ */
166
+ declare class HTTPService {
167
+ private EXTENSION_CLASS;
168
+ private HTTP_INVALIDATION;
169
+ private CLIENT_CACHE_DURATION_S;
170
+ private CACHE_BY_USER;
171
+ private HTTP_DEBUG_MODE;
172
+ private bc;
173
+ private http;
174
+ private localStorage;
175
+ private hash;
176
+ private utisExts;
177
+ /** Cache dello stato delle chiamate HTTP attualmente effettuate. Ogni chiamata è rappresentata da un GUID e lo status assume valore **false** solo sugli errori */
178
+ private callStatus;
179
+ /** Nome della cache in cui vengono storicizzate le informazioni sulle risposte delle chiamate sotto forma di dictionary */
180
+ private localStorageHttpCacheKey;
181
+ /** Nome della cache in cui vengono storicizzate le informazioni sulle risposte delle chiamate sotto forma di dictionary, solo per le chiamate con un tempo definito di caching */
182
+ private localStorageHttpTimedCacheKey;
183
+ /** Nome della cache in cui vengono storicizzate le informazioni sullo scadere della cache stessa */
184
+ private localStorageHttpCacheExpireKey;
185
+ /** Identità collegata al token di autenticazione da usare, richiesta al programma che utilizza la libreria attraverso l'hook **retrieveIdentity** della **HttpServiceExtensions** */
186
+ private me;
187
+ /** Indica che la cache a tempo dev'essere persistita il prima possibile */
188
+ private PersistTimedCacheASAP;
189
+ /** Indica che la cache senza limiti di tempo dev'essere persistita il prima possibile */
190
+ private PersistUntimedCacheASAP;
191
+ /** Subject emesso quando il servizio http si stabilizza, cioè quando non c'è nessuna chiamata pending o in corso da qualche istante */
192
+ Stabilized: Subject<true>;
193
+ /**
194
+ * Implementazione della classe di estensione per collegare i comportamenti della libreria all'applicazione in cui è usata.
195
+ *
196
+ * Se è stato effettuato il provide della classe **HttpServiceExtensions** verrà usato quel provider, altrimenti verrà creata una nuova istanza di default
197
+ */
198
+ private ExtensionsImpl;
199
+ /** Lista delle ultime 3 chiamate completate con successo in ordine di completamento (in posizione 0 c'è l'ultima completata eccetera...) */
200
+ LastThreeCompletedCalls: string[];
201
+ private CacheInitialized;
202
+ /**
203
+ * @ignore
204
+ */
205
+ constructor(EXTENSION_CLASS: HttpServiceExtensions, HTTP_INVALIDATION: any, CLIENT_CACHE_DURATION_S: any, CACHE_BY_USER: boolean, HTTP_DEBUG_MODE: boolean, bc: BaseLocalization, http: HttpClient, localStorage: CacheService, hash: HashingService, utisExts: UtilityService);
206
+ setAppConfig(myconfig: {
207
+ AppData: {
208
+ ModuleId: string;
209
+ ModuleDefId: number;
210
+ ComponentEnvironment: string;
211
+ ComponentVersion: string;
212
+ ModuleDescription: string;
213
+ };
214
+ }): void;
215
+ /**
216
+ * Se vedo che ci sono elementi salvati nel localStorage provo a toglierli e a risalvarli via preference.
217
+ * Nel caso migliore li sposto dal localStorage al DB di preference, nel caso peggiore li tolgo e li risalvo nel localStorage
218
+ */
219
+ private adjustOldStorageSystem;
220
+ getlocaleObservable(): Observable<string>;
221
+ /**
222
+ * Esecuzione di una GET HTTP con eventualmente la gestione della cache qualora la chiamata termini con la convenzione "#cache"
223
+ *
224
+ * @param {string} url URL su cui effettuare la chiamata
225
+ * @param {HttpParams} params Parametri della chiamata
226
+ * @param {string} transaction Codice transazione collegato a questa chiamata. Viene inserito nell'Header "X-TX-ID" e lato Backend dovrà essere gestito di conseguenza
227
+ * @param {boolean} succesfulResultMandatory Indica che questa chiamata deve assolutamente andare bene. In caso contrario viene fisicamente fatto il throw che può essere
228
+ * raccolto da chi usa la libreria nella pipe "onError" dell'Observable restituito ed essere gestito in maniera non standard
229
+ * @param {Function} errorCallback Callback chiamato in caso di errore
230
+ *
231
+ * @returns {Observable<T>} Observable che contiene il risultato della chiamata
232
+ */
233
+ get<T>(url: string, params?: HttpParams, transaction?: string, succesfulResultMandatory?: boolean, errorCallback?: Function): Observable<T>;
234
+ /**
235
+ * Esecuzione di una GET HTTP con eventualmente la gestione della cache qualora la chiamata termini con la convenzione "#cache"
236
+ *
237
+ * Caso specifico di chiamata che deve restituire un Blob o un ArrayBuffer nativo da elaborare
238
+ *
239
+ * @param {string} url URL su cui effettuare la chiamata
240
+ * @param {HttpParams} params Parametri della chiamata
241
+ * @param {"arraybuffer"| "blob"} type Tipo di ritorno richiesto
242
+ * @param {string} transaction Codice transazione collegato a questa chiamata. Viene inserito nell'Header "X-TX-ID" e lato Backend dovrà essere gestito di conseguenza
243
+ * @param {boolean} succesfulResultMandatory Indica che questa chiamata deve assolutamente andare bene. In caso contrario viene fisicamente fatto il throw che può essere
244
+ * raccolto da chi usa la libreria nella pipe "onError" dell'Observable restituito ed essere gestito in maniera non standard
245
+ * @param {Function} errorCallback Callback chiamato in caso di errore
246
+ *
247
+ * @returns {Observable<Blob | ArrayBuffer>} Observable che contiene il risultato della chiamata
248
+ */
249
+ getRaw(url: string, params?: HttpParams, type?: "arraybuffer" | "blob", transaction?: string, succesfulResultMandatory?: boolean, errorCallback?: any): Observable<Blob | ArrayBuffer>;
250
+ /**
251
+ * Esecuzione di una POST HTTP
252
+ *
253
+ * @param {string} url URL su cui effettuare la chiamata
254
+ * @param {any} bodyData DTO per la chiamata
255
+ * @param {HttpParams} params Parametri della chiamata
256
+ * @param {string} transaction Codice transazione collegato a questa chiamata. Viene inserito nell'Header "X-TX-ID" e lato Backend dovrà essere gestito di conseguenza
257
+ * @param {boolean} succesfulResultMandatory Indica che questa chiamata deve assolutamente andare bene. In caso contrario viene fisicamente fatto il throw che può essere
258
+ * raccolto da chi usa la libreria nella pipe "onError" dell'Observable restituito ed essere gestito in maniera non standard
259
+ *
260
+ * @returns {Observable<T>} Observable che contiene il risultato della chiamata
261
+ */
262
+ post<T>(url: string, bodyData: any, params?: HttpParams, transaction?: string, succesfulResultMandatory?: boolean): Observable<T>;
263
+ /**
264
+ * Esecuzione di una DELETE HTTP
265
+ *
266
+ * @param {string} url URL su cui effettuare la chiamata
267
+ * @param {HttpParams} params Parametri della chiamata
268
+ * @param {string} transaction Codice transazione collegato a questa chiamata. Viene inserito nell'Header "X-TX-ID" e lato Backend dovrà essere gestito di conseguenza
269
+ * @param {boolean} succesfulResultMandatory Indica che questa chiamata deve assolutamente andare bene. In caso contrario viene fisicamente fatto il throw che può essere
270
+ * raccolto da chi usa la libreria nella pipe "onError" dell'Observable restituito ed essere gestito in maniera non standard
271
+ *
272
+ * @returns {Observable<T>} Observable che contiene il risultato della chiamata
273
+ */
274
+ delete<T>(url: string, params?: HttpParams, transaction?: string, succesfulResultMandatory?: boolean): Observable<T>;
275
+ /**
276
+ * Esecuzione di una PUT HTTP
277
+ *
278
+ * @param {string} url URL su cui effettuare la chiamata
279
+ * @param {any} bodyData DTO per la chiamata
280
+ * @param {HttpParams} params Parametri della chiamata
281
+ * @param {string} transaction Codice transazione collegato a questa chiamata. Viene inserito nell'Header "X-TX-ID" e lato Backend dovrà essere gestito di conseguenza
282
+ * @param {boolean} succesfulResultMandatory Indica che questa chiamata deve assolutamente andare bene. In caso contrario viene fisicamente fatto il throw che può essere
283
+ * raccolto da chi usa la libreria nella pipe "onError" dell'Observable restituito ed essere gestito in maniera non standard
284
+ *
285
+ * @returns {Observable<T>} Observable che contiene il risultato della chiamata
286
+ */
287
+ put<T>(url: string, bodyData: any, params?: HttpParams, transaction?: string, succesfulResultMandatory?: boolean): Observable<T>;
288
+ /**
289
+ * Esecuzione di una POST HTTP
290
+ *
291
+ * Casistica particolare in cui bisogna anche inviare dei File
292
+ *
293
+ * @param {string} url URL su cui effettuare la chiamata
294
+ * @param {any} bodyData DTO per la chiamata
295
+ * @param {File[] | File} fileArrayOrFile Singolo file o lista di file da inviare. Il tipo **File** è quello nativo del Javascript
296
+ *
297
+ * @returns {Observable<T>} Observable che contiene il risultato della chiamata
298
+ */
299
+ postwithFiles<T>(url: string, bodyData: any, fileArrayOrFile: File[] | File, params?: HttpParams, succesfulResultMandatory?: boolean, onError?: () => void): Observable<T>;
300
+ /**
301
+ * Esecuzione di una POST HTTP
302
+ *
303
+ * Casistica particolare in cui viene restituito un file gestito come ObjectURL il cui URL si può gestire dal parametro di callback **getFileCallback**.
304
+ * La chiamata non ha un tipo restituito in quanto il risultato dev'essere gestito attraverso la callback **getFileCallback**
305
+ *
306
+ * @param {string} url URL su cui effettuare la chiamata
307
+ * @param {K} bodyData DTO per la chiamata
308
+ * @param {string} filename Nome del file che si sta richiedendo, rimane lato Frontend e serve per assegnare arbitrariamente un nome al file restituito, se vuoto viene utilizzata la Content-Disposition della risposta
309
+ * @param {Function} getFileCallback Callback a due parametri (url: string, filename: string) per gestire il risultato del file richiesto. **Utilizzare UtilityService.fileDownload** di @esfaenza/extensions
310
+ * @param {Function} afterGetFile Callback da chiamare dopo aver gestito la risposta del **getFileCallback**, in caso **handleError** fosse **false** verrà richiamato anche in caso di errore
311
+ * @param {boolean} handleError Indica se di default gli errori devono essere gestiti dalla libreria o se devono essere ignorati
312
+ */
313
+ postGetFile<K>(url: string, bodyData: K, filename: string, getFileCallback: (url: string, filename: string) => any, afterGetFile?: () => any, handleError?: boolean, pars?: HttpParams): Promise<void>;
314
+ /**
315
+ * Esecuzione di una GET HTTP
316
+ *
317
+ * Casistica particolare in cui viene restituito un file gestito come ObjectURL il cui URL si può gestire dal parametro di callback **getFileCallback**.
318
+ * La chiamata non ha un tipo restituito in quanto il risultato dev'essere gestito attraverso la callback **getFileCallback**
319
+ *
320
+ * @param {string} url URL su cui effettuare la chiamata
321
+ * @param {HttpParams} params Parametri della chiamata
322
+ * @param {string} filename Nome del file che si sta richiedendo, rimane lato Frontend e serve per assegnare arbitrariamente un nome al file restituito, se vuoto viene utilizzata la Content-Disposition della risposta
323
+ * @param {Function} getFileCallback Callback a due parametri (url: string, filename: string) per gestire il risultato del file richiesto. **Utilizzare UtilityService.fileDownload** di @esfaenza/extensions
324
+ * @param {Function} afterGetFile Callback da chiamare dopo aver gestito la risposta del **getFileCallback**, in caso **handleError** fosse **false** verrà richiamato anche in caso di errore
325
+ * @param {boolean} handleError Indica se di default gli errori devono essere gestiti dalla libreria o se devono essere ignorati
326
+ */
327
+ getFile(url: string, params: HttpParams, filename: string, getFileCallback: (url: string, filename: string) => any, afterGetFile?: () => any, handleError?: boolean): Promise<void>;
328
+ /**
329
+ * Download nativo di un file. Internamente utilizza il pattern **window.location.href = "..."**
330
+ *
331
+ * @param {string} url URL su cui effettuare la chiamata
332
+ * @param {HttpParams} params Parametri della chiamata
333
+ */
334
+ getFileNative(url: string, params?: HttpParams): void;
335
+ /**
336
+ * Esecuzione di una GET di un file che emette i vari eventi di progresso di download.
337
+ * Utilizzarla per overridare la dialog nativa di progress del browser e sostituirla con qualcosa tipo quello che fa MEGA.
338
+ *
339
+ * In caso si voglia ottenere il risultato nativo del browser del download utilizzare **getFileNative(url, pars)**
340
+ *
341
+ * @param {string} url URL su cui effettuare la chiamata
342
+ * @param {HttpParams} params Parametri della chiamata
343
+ * @param {Function} getFileCallback Callback a due parametri (url: string, filename: string) per gestire il risultato del file richiesto. **Utilizzare UtilityService.fileDownload** di @esfaenza/extensions
344
+ *
345
+ * @returns {Observable<Download>} Observable dei vari step di progresso del download
346
+ */
347
+ getFileWithProgress(url: string, params: HttpParams, getFileCallback: (url: string, filename: string) => any): Observable<Download>;
348
+ /**
349
+ * Riconosce se l'evento HTTP è di tipo **HttpResponse** e, se sì, lo casta al tipo corretto per essere utilizzato correttamente nel blocco di codice successivo
350
+ */
351
+ private isHttpResponse;
352
+ /**
353
+ * Riconosce se l'evento HTTP è di tipo **HttpProgressEvent** e, se sì, lo casta al tipo corretto per essere utilizzato correttamente nel blocco di codice successivo
354
+ */
355
+ private isHttpProgressEvent;
356
+ /**
357
+ * Gestione dell'inizio di una chiamata ad un certo URL, viene generato un GUID da assegnarci, controllata la scadenza della cache,
358
+ * e eventualmente loggato il fatto che sta per essere effettuata una chiamata HTTP
359
+ *
360
+ * @param {string} url Url a cui effettuare la chiamata
361
+ * @returns {string} GUID assegnato alla chiamata
362
+ */
363
+ private defaultStartCall;
364
+ /**
365
+ * Dato un url vengono controllate le informazioni su tutti gli url da invalidare collegati all'url chiamato e, se presenti in cache, invalidati
366
+ *
367
+ * @param {string} url URL per cui controllare se ci sono chiamate in cache da invalidare
368
+ */
369
+ private checkCacheInvalidation;
370
+ /**
371
+ * Finalizzazione di una chiamata
372
+ *
373
+ * @param {string} guid GUID collegato alla chiamata appena terminata
374
+ * @param {boolean} persistCacheIfIdle Effettua il persist della cache HTTP solo se non ci sono altre chiamate in corso, per evitare
375
+ * che mi cambi sotto l'oggetto di cache mentre sto salvando le informazioni
376
+ */
377
+ private tryFinalizeByGuid;
378
+ /**
379
+ * Helper che dato un unico File o una lista di File crea un oggetto FormData che può essere inviato comodamente
380
+ * ad un backend ASP.NET da cui si potrà accedere a Request.Form.Files
381
+ *
382
+ * @param {File | File[]} fileArrayOrFile Singolo File o lista di File. N.B: nella firma della funzione viene considerato **any** per fare test sulle proprietà
383
+ * invece che fare test con l'**istanceof**
384
+ *
385
+ * @returns {FormData} FormData contenente tutti i file passati
386
+ */
387
+ private getFilesFormData;
388
+ /**
389
+ * Helper che in base ai parametri disponibili genera gli Header HTTP per la chiamata da effettuare
390
+ *
391
+ * @param {string} contentType Indica se aggiungere agli header "Content-Type", valorizzato al valore del parametro
392
+ * @param {string} accept Indica se aggiungere agli header "Accept", valorizzato al valore del parametro
393
+ * @param {boolean} includeAuth Indica se aggiungere agli header "Authorization", valorizzato col token recuperato dall'hook **retrieveAccessToken** della classe di estensione
394
+ * @param {string} transactionId Indica se aggiungere agli header "X-TX-ID", valorizzato al valore del parametro
395
+ *
396
+ * @returns {HttpHeaders} Header generati in base ai parametri
397
+ */
398
+ private getHeaders;
399
+ /**
400
+ * Gestione di default degli errori
401
+ *
402
+ * @param {any} res Risultato della chiamata effettuata
403
+ * @param {string} guid Identificativo GUID della chiamata effettuata
404
+ */
405
+ private onError;
406
+ /**
407
+ * Dato un errore restituisce una promise con la stringa finale dell'errore in modo da poter fare un await
408
+ *
409
+ * @param {any} err Errore da controllare
410
+ *
411
+ * @returns {Promise<string>} Promise che risolve con la stringa finale dell'errore
412
+ */
413
+ private getHttpErrorText;
414
+ /**
415
+ * Riconosce se l'oggetto è di tipo **CallResult** e, se sì, lo casta al tipo corretto per essere utilizzato correttamente nel blocco di codice successivo
416
+ *
417
+ * @param {any} err Errore da controllare
418
+ */
419
+ private isCallResult;
420
+ /**
421
+ * Riconosce se l'errore è di tipo **HttpErrorResponse** e, se sì, lo casta al tipo corretto per essere utilizzato correttamente nel blocco di codice successivo
422
+ *
423
+ * @param {any} err Errore da controllare
424
+ */
425
+ private isHttpErrorResponse;
426
+ /**
427
+ * Riconosce se l'errore è di tipo **TypeError** e, se sì, lo casta al tipo corretto per essere utilizzato correttamente nel blocco di codice successivo
428
+ *
429
+ * @param {any} err Errore da controllare
430
+ */
431
+ private isTypeError;
432
+ /**
433
+ * Come dice il nome, registra un errore e restituisce un Observable vuoto come risultato della chiamata
434
+ *
435
+ * @param {any} res Risultato della chiamata effettuata
436
+ * @param {string} guid Identificativo GUID della chiamata effettuata
437
+ * @param {boolean} handleError Indica se gestire l'errore via libreria o se limitarsi a restituire l'Observable vuoto
438
+ *
439
+ * @returns {Observable<any>} Observable vuoto
440
+ */
441
+ private registerErrorAndReturnEmptyObservable;
442
+ /**
443
+ * Dato un Url e dei parametri cerca di recuperare l'eventuale oggetto già salvato in cache con le informazioni base della cache stessa
444
+ *
445
+ * @param {string} url URL su cui effettuare la chiamata
446
+ * @param {HttpParams} params Parametri della chiamata (nulli in caso di POST)
447
+ *
448
+ * @returns {CacheInfos} Oggetto contenente le informazioni sulla cache per l'oggetto specificato
449
+ */
450
+ private tryGetCacheInformations;
451
+ /**
452
+ * Inserisce un oggetto nella cache appropriata in base alle informazioni contenute nel parametro **cacheInfos**
453
+ *
454
+ * @param {T} item Oggetto da inserire nella cache
455
+ * @param {CacheInfos} cacheInfos Informazioni sulla cache recuperate da una chiamata precedente a **tryGetCacheInformations**
456
+ */
457
+ private cacheResponse;
458
+ /**
459
+ * Controlla se la cache per le chiamate senza expire time è scaduta
460
+ *
461
+ * @returns {boolean} **true** se la cache è scaduta e dev'essere ripulita, **false** altrimenti
462
+ */
463
+ private untimedCacheExpired;
464
+ /**
465
+ * Controlla se la cache per una chiamata che ha un tempo di vita ben definito è scaduta o meno
466
+ *
467
+ * @param {any} item Oggetto recuperato dalla cache a cui ho aggiunto la chiave interna __expire
468
+ *
469
+ * @returns {boolean} **true** se la cache è scaduta e dev'essere ripulita, **false** altrimenti
470
+ */
471
+ private timedCacheItemExpired;
472
+ /**
473
+ * Ripulisce la cache e imposta la prossima scadenza ad adesso + **CLIENT_CACHE_DURATION_S** (token valorizzato in fase di configurazione dalla proprietà **clientCacheDurationS** della classe **HttpServiceModuleConfig**)
474
+ */
475
+ resetHttpUntimedCacheStorage(): Promise<void>;
476
+ /**
477
+ * Ripulisce la cache delle chiamate con un tempo di expire definito
478
+ */
479
+ resetHttpTimedCacheStorage(): Promise<void>;
480
+ /**
481
+ * Genera una chiave per la cache delle chiamate in base ad URL e Parametri HTTP
482
+ *
483
+ * @param {string} url URL su cui effettuare la chiamata
484
+ * @param {HttpParams} params Parametri della chiamata
485
+ *
486
+ * @returns {string} Chiave che rappresenta in maniera univoca la chiamata
487
+ */
488
+ private makeCacheKey;
489
+ /**
490
+ * Generazione GUID
491
+ *
492
+ * @returns {string} Nuovo GUID generato in maniera casuale
493
+ */
494
+ private getGUID;
495
+ /**
496
+ * Metodo per scrivere log a console qualora **DEBUG_MODE** risultasse **true**
497
+ *
498
+ * @param {string} message Messaggio di log
499
+ */
500
+ private log;
501
+ /**
502
+ * Helper per la localizzazione dei messaggi
503
+ *
504
+ * @param {string} message Messaggio da localizzare
505
+ *
506
+ * @returns {string} Messaggio localizzato
507
+ */
508
+ private loc;
509
+ /**
510
+ * Helper per lanciare la selezione di tutto quello che è relativo a un api di ricerca con AppSearch (di cui non utilizzo il tipo vero per ridurre le dipendenze)
511
+ */
512
+ getAll<T>(view: {
513
+ items: T[];
514
+ page: number;
515
+ itemsperpageoverride: number;
516
+ selection: {
517
+ exclusions: T[];
518
+ all: boolean;
519
+ items: T[];
520
+ };
521
+ }, api: string, pars?: HttpParams, transaction?: string): Observable<T[]>;
522
+ /*****************************************************************************************************************************************
523
+ ***************************************************** TRANSACTION HELPERS ***************************************************************
524
+ *****************************************************************************************************************************************/
525
+ private GET_Trans_BeginTrans;
526
+ private GET_Trans_CheckExecution;
527
+ private GET_Trans_EndTrans;
528
+ beginTransaction(executionKey: string, secondsTimeout?: number): Observable<string>;
529
+ checkTransaction(executionKey: string): Observable<number>;
530
+ endTransaction(transactionKey: string, transactionResult: boolean): Observable<string>;
531
+ static ɵfac: i0.ɵɵFactoryDeclaration<HTTPService, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
532
+ static ɵprov: i0.ɵɵInjectableDeclaration<HTTPService>;
533
+ }
534
+
535
+ /**
536
+ * Classe di configurazione per il Modulo della libreria
537
+ */
538
+ declare class HttpServiceModuleConfig {
539
+ /**
540
+ * Indica quali chiamate vengono invalidate da quali chiamate quando viene utilizzata una cache sulle risposte
541
+ */
542
+ httpInvalidation?: Record<string, string[]>;
543
+ /**
544
+ * Indica la durata della cache lato client (Browser), se utilizzata
545
+ */
546
+ clientCacheDurationS?: number;
547
+ /**
548
+ * Nome dell'applicazione che sta utilizzando la libreria, utilizzato per creare chiavi di cache specifiche per app
549
+ */
550
+ appName?: string;
551
+ /**
552
+ * Indica se la cache deve basarsi non solo sull'applicazione ma anche sull'utente connesso
553
+ */
554
+ cacheByUser?: boolean;
555
+ /**
556
+ * Abilita o disabilità la modalità di debug (Log a console)
557
+ */
558
+ debugMode?: boolean;
559
+ }
560
+
561
+ declare class HttpserviceModule {
562
+ static forRoot(config?: HttpServiceModuleConfig): ModuleWithProviders<HttpserviceModule>;
563
+ static ɵfac: i0.ɵɵFactoryDeclaration<HttpserviceModule, never>;
564
+ static ɵmod: i0.ɵɵNgModuleDeclaration<HttpserviceModule, never, never, never>;
565
+ static ɵinj: i0.ɵɵInjectorDeclaration<HttpserviceModule>;
566
+ }
567
+
568
+ export { APP_NAME, CACHE_BY_USER, CLIENT_CACHE_DURATION_S, Download, HTTPService, HTTP_DEBUG_MODE, HTTP_INVALIDATION, HttpServiceExtensions, HttpServiceModuleConfig, HttpserviceModule };
569
+ export type { IHttpServiceExtensions };
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@esfaenza/httpservice",
3
- "version": "19.2.23",
3
+ "version": "20.3.1",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0"
6
6
  },
7
7
  "peerDependencies": {
8
- "@angular/common": "^19.2.15",
9
- "@angular/core": "^19.2.15",
10
- "@esfaenza/localizations": "^19.2.22",
11
- "@esfaenza/preferences": "^19.2.17"
8
+ "@angular/common": "^20.3.13",
9
+ "@angular/core": "^20.3.13",
10
+ "dayjs": "1.11.19",
11
+ "ngx-toastr": "19.1.0",
12
+ "sweetalert2": "11.26.3"
12
13
  },
13
14
  "module": "fesm2022/esfaenza-httpservice.mjs",
14
15
  "typings": "index.d.ts",
@@ -1,65 +0,0 @@
1
- import { IHttpServiceExtensions } from './IHttpServiceExtensions';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Classe d'estensione che permette di modificare il comportamento della libreria negli hook definiti da interfaccia, in modo da poterla adattare
5
- * con un certo grado di customizzazione a qualsiasi struttura di frontend
6
- */
7
- export declare class HttpServiceExtensions implements IHttpServiceExtensions {
8
- /**
9
- * Hook per recuperare l'access token con cui effettuare le chiamate HTTP
10
- */
11
- retrieveAccessToken(): string;
12
- /**
13
- * Hook per recuperare l'Identity corrente in un oggetto generico con le informazioni di User e Tenant
14
- */
15
- retrieveIdentity(): {
16
- IdUser: string;
17
- Idtenant: string;
18
- };
19
- /**
20
- * Hook per leggere dallo stato dell'applicazione se stiamo già venendo ridirezionati al login, in modo da non tentare di effettuare
21
- * N redirect contemporaneamente qualora molte API fallissero allo stesso tempo nell'autenticazione
22
- */
23
- readRedirectingToLogin(): boolean;
24
- /**
25
- * Hook per scrivere nello stato dell'applicazione se stiamo effettuando un redirect al login o meno
26
- */
27
- writeRedirectingToLogin(status: boolean): void;
28
- /**
29
- * Hook per effettuare il redirect al login
30
- */
31
- redirectToLogin(): void;
32
- /**
33
- * Hook per leggere dallo stato dell'applicazione se stiamo già gestendo un errore, in modo da non tentare di gestire
34
- * N errori contemporaneamente qualora molte API fallissero allo stesso tempo
35
- */
36
- readHandlingErrorStatus(): boolean;
37
- /**
38
- * Hook per scrivere nello stato dell'applicazione se stiamo gestendo un errore o meno
39
- */
40
- writeHandlingErrorStatus(status: boolean): void;
41
- /**
42
- * Hook per leggere dallo stato dell'applicazione se stiamo già gestendo un redirect, in modo da non tentare di gestire
43
- * N redirect contemporaneamente qualora molte API lo richiedessero allo stesso tempo
44
- */
45
- readRedirectionStatus(): boolean;
46
- /**
47
- * Hook per scrivere nello stato dell'applicazione se stiamo gestendo un redirect o meno
48
- */
49
- writeRedirectionStatus(status: boolean): void;
50
- /**
51
- * Hook per indicare se l'applicazione può gestire eccezioni del tipo "NotConfigured" (444). Qualora l'applicazione che lo implementa dichiari di gestirle verrà chiamata
52
- * la funzione **handleBlockingException** per ognuno di questi errori
53
- */
54
- handleNotConfiguredException(): boolean;
55
- /**
56
- * Hook per la gestione di un qualsiasi errore bloccante per l'operazione attuale, ma non fatale (Generalmente gestibile da dialog di avviso)
57
- */
58
- handleBlockingException(status: number, text: string): void;
59
- /**
60
- * Hook per la gestione di un qualsiasi errore fatale (Generalmente gestibile tramite navigazione a una pagina di errore custom per l'applicativo)
61
- */
62
- handleException(status: number | string, text: string): void;
63
- static ɵfac: i0.ɵɵFactoryDeclaration<HttpServiceExtensions, never>;
64
- static ɵprov: i0.ɵɵInjectableDeclaration<HttpServiceExtensions>;
65
- }