diff --git a/timeout-interceptor.service.ts b/timeout-interceptor.service.ts index d796a751..224e585e 100644 --- a/timeout-interceptor.service.ts +++ b/timeout-interceptor.service.ts @@ -1,7 +1,7 @@ import {Inject, Injectable, InjectionToken, PLATFORM_ID} from '@angular/core'; -import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'; -import { Observable } from 'rxjs'; -import { timeout } from 'rxjs/operators'; +import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http'; +import {Observable} from 'rxjs'; +import {timeout} from 'rxjs/operators'; import {isPlatformServer} from "@angular/common"; import {properties} from "../../environments/environment"; @@ -9,30 +9,32 @@ export const DEFAULT_TIMEOUT = new InjectionToken('defaultTimeout'); @Injectable() export class TimeoutInterceptor implements HttpInterceptor { - // timeout inside services for: properties.searchCrossrefAPIURL, properties.searchDataciteAPIURL - private static TIMEOUT_WHITELIST = [properties.csvAPIURL, properties.registryUrl, properties.claimsAPIURL, - properties.searchCrossrefAPIURL, properties.searchDataciteAPIURL]; - constructor(@Inject(DEFAULT_TIMEOUT) protected defaultTimeout: number, @Inject(PLATFORM_ID) private platformId: any) { - } + private static TIMEOUT_WHITELIST = [ + properties.csvAPIURL, properties.registryUrl, properties.claimsAPIURL, + properties.searchCrossrefAPIURL, properties.searchDataciteAPIURL, + properties.statisticsAPIURL, properties.searchAPIURLLAst, properties.monitorStatsFrameUrl]; - intercept(req: HttpRequest, next: HttpHandler): Observable> { - if (req.method !== 'GET' || this.isService(req, TimeoutInterceptor.TIMEOUT_WHITELIST)) { - return next.handle(req); + constructor(@Inject(DEFAULT_TIMEOUT) protected defaultTimeout: number, @Inject(PLATFORM_ID) private platformId: any) { } - let serverTime = properties.environment == "production" ? 3000 : 4000; - let clientTime = properties.environment == "production" ? 6000 : 12000; - const timeoutValue = isPlatformServer(this.platformId)?serverTime:clientTime;//req.headers.get('timeout') || this.defaultTimeout; - const timeoutValueNumeric = Number(timeoutValue); - return next.handle(req).pipe(timeout(timeoutValueNumeric)); - } + intercept(req: HttpRequest, next: HttpHandler): Observable> { + if (req.method !== 'GET' || this.isService(req, TimeoutInterceptor.TIMEOUT_WHITELIST)) { + return next.handle(req); + } - isService(req: HttpRequest, service: string | string[]):boolean { - if(Array.isArray(service)) { - return !!service.find(element => req.url.indexOf(element) !== -1); - } else { - return req.url.indexOf(service) !== -1; + let serverTime = properties.environment == "production" ? 3000 : 4000; + let clientTime = properties.environment == "production" ? 6000 : 12000; + const timeoutValue = isPlatformServer(this.platformId) ? serverTime : clientTime;//req.headers.get('timeout') || this.defaultTimeout; + const timeoutValueNumeric = Number(timeoutValue); + return next.handle(req).pipe(timeout(timeoutValueNumeric)); + } + + isService(req: HttpRequest, service: string | string[]): boolean { + if (Array.isArray(service)) { + return !!service.find(element => req.url.indexOf(element) !== -1); + } else { + return req.url.indexOf(service) !== -1; + } } - } }