00e2fd8fcd7ae57de2916209c11c4b060c0ace74
[sdc.git] / catalog-ui / src / app / ng2 / http-interceptor / headers-interceptor.ts
1 import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
2 import { Injectable, Injector } from '@angular/core';
3 import { SdcUiComponents, SdcUiServices } from 'onap-ui-angular';
4 import { ButtonType } from 'onap-ui-angular/dist/common';
5 import { Observable } from 'rxjs/Observable';
6 import { ServerErrorResponse } from '../../models/server-error-response';
7 import { Cookie2Service } from '../services/cookie.service';
8 import { HttpHelperService } from '../services/http-hepler.service';
9 import { TranslateService } from '../shared/translator/translate.service';
10
11 @Injectable()
12 export class HeadersInterceptor implements HttpInterceptor {
13
14     constructor(private injector: Injector, private cookieService: Cookie2Service, private httpHelperService: HttpHelperService) {}
15
16     intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
17         let authReq = req.clone({ headers: req.headers.set(this.cookieService.getUserIdSuffix(), this.cookieService.getUserId())
18             .set('Content-Type', 'application/json; charset=UTF-8')
19             .set(this.cookieService.getUserIdSuffix(), this.cookieService.getUserId())
20             .set(this.cookieService.getUserIdSuffix(), this.cookieService.getUserId())
21         });
22
23         const uuidValue = this.httpHelperService.getUuidValue(authReq.url);
24         if (uuidValue !== '') {
25             authReq = authReq.clone({ headers: authReq.headers.set(this.cookieService.getUserIdSuffix(), this.cookieService.getUserId())});
26         }
27         return next.handle(authReq).do(
28
29             (event: HttpEvent<any>) => { /* Do Nothing */ },
30
31             (err: any) => {
32                 if (err instanceof HttpErrorResponse) {
33                     const errorResponse: ServerErrorResponse = new ServerErrorResponse(err);
34                     const modalService = this.injector.get(SdcUiServices.ModalService);
35                     const translateService = this.injector.get(TranslateService);
36
37                     const errorDetails = {
38                         'Error Code': errorResponse.messageId,
39                         'Status Code': errorResponse.status
40                     };
41
42                     if (errorResponse.ecompRequestId) {
43                         errorDetails['Transaction ID'] = errorResponse.ecompRequestId;
44                     }
45
46                     if (errorResponse.messageId === 'POL5005') {
47                         // Session and Role expiration special handling
48                         modalService.openWarningModal(
49                             'Warning',
50                             translateService.translate('ERROR_MODAL_TEXT', errorResponse),
51                             'warn-modal',
52                             [ ] );
53                     } else {
54                         modalService.openErrorDetailModal('Error', errorResponse.message, 'error-modal', errorDetails);
55                     }
56
57                     return Observable.throwError(err);
58                 }
59             });
60     }
61 }