import { Injectable, InjectionToken, Injector } from '@angular/core'; import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, } from '@angular/common/http'; import { Observable } from 'rxjs'; export class ModuleHttpInterceptor implements HttpInterceptor { constructor(private readonly baseUrl: string) {} intercept( req: HttpRequest, next: HttpHandler ): Observable> { let baseUrl = this.baseUrl; if (!req.url.startsWith('http')) { const baseUrlEndsWithSlash = baseUrl.endsWith('/'); const urlStartWithSlash = req.url.startsWith('/'); let url = req.url; if (baseUrlEndsWithSlash) { baseUrl = baseUrl.slice(0, -1); } if (urlStartWithSlash) { url = url.slice(1); } const apiReq = req.clone({ url: `${baseUrl}/${url}` }); return next.handle(apiReq); } return next.handle(req); } }