blob: 455185a5351da0b82d702931eed6c7725f625c5b [file] [log] [blame]
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { EnvConfig } from '@app/models/envconfig.model';
import { DEFAULT_PROTOCOL } from '@app/util/constants';
const ENV_CONFIG_JSON_URL = './assets/config/envconfig.json';
export function envConfigFactory(envConfig: EnvconfigService) {
return () => envConfig.loadEnvConfig();
}
@Injectable({
providedIn: 'root'
})
export class EnvconfigService {
private envConfig: EnvConfig;
private uiHostname: string;
constructor(private httpClient: HttpClient) {
this.uiHostname = window.location.hostname;
}
loadEnvConfig(): Promise<void> {
return new Promise(resolve => {
this.httpClient.get<EnvConfig>(ENV_CONFIG_JSON_URL).subscribe(data => {
this.envConfig = data;
resolve();
});
});
}
getUschedulerWebAddress() {
const protocol = this.envConfig.protocol || DEFAULT_PROTOCOL;
const proxyWebAddress = this.envConfig.corsproxyWebAddress;
let uschedulerWebAddress = this.envConfig.ushedulerWebAddress;
const uschedulerHostname = uschedulerWebAddress.split(':')[0];
const uschedulerPort = uschedulerWebAddress.split(':')[1];
if (uschedulerHostname === '') {
uschedulerWebAddress = `${this.uiHostname}:${uschedulerPort}`;
}
if (proxyWebAddress) {
return `${protocol}//${proxyWebAddress}/${uschedulerWebAddress}`;
}
return `${protocol}//${uschedulerWebAddress}`;
}
getPrometheusWebAddress() {
const protocol = this.envConfig.protocol || DEFAULT_PROTOCOL;
const proxyWebAddress = this.envConfig.corsproxyWebAddress;
let prometheusWebAddress = this.envConfig.prometheusWebAddress;
const prometheusHostname = prometheusWebAddress.split(':')[0];
const prometheusPort = prometheusWebAddress.split(':')[1];
if (prometheusHostname === '') {
prometheusWebAddress = `${this.uiHostname}:${prometheusPort}`;
}
if (proxyWebAddress) {
return `${protocol}//${proxyWebAddress}/${prometheusWebAddress}`;
}
return `${protocol}//${prometheusWebAddress}`;
}
}