import { getBaseUrl } from '@karmed/core'; import { LoginService } from './services/login.service'; import { NgModule, InjectionToken, Inject } from '@angular/core'; import { ApiComponent } from './api.component'; import { CommonModule } from '@angular/common'; import { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common/http'; import { JwtInterceptor } from './helpers/jwt-interceptor'; import { ErrorInterceptor } from './helpers/error-interceptor'; import { LoadingInterceptor } from './helpers/loading-interceptor'; import { KarmedService } from './services/karmed.service'; export const API_BASE_URL = new InjectionToken('API_BASE_URL'); export const API_FILE: string = getBaseUrl() + "assets/api.json"; export function getApiUrl(http: HttpClient): string { var apiJson = "/"; http.get(API_FILE).subscribe(data => apiJson = data); return apiJson; } @NgModule({ declarations: [ApiComponent], imports: [ CommonModule, HttpClientModule ], exports: [ApiComponent], providers: [LoginService, KarmedService, { provide: API_BASE_URL, useFactory: getApiUrl, deps: [HttpClient] }, { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }, { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }, { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true }, ] }) export class ApiModule { }