bitwarden-estensione-browser/common/src/services/environment.service.ts

122 lines
3.9 KiB
TypeScript
Raw Normal View History

import { EnvironmentUrls } from '../models/domain/environmentUrls';
2018-01-10 02:20:54 +01:00
import { ConstantsService } from './constants.service';
import { ApiService } from '../abstractions/api.service';
import { EnvironmentService as EnvironmentServiceAbstraction } from '../abstractions/environment.service';
import { NotificationsService } from '../abstractions/notifications.service';
import { StorageService } from '../abstractions/storage.service';
2018-01-10 02:20:54 +01:00
2018-01-23 23:29:15 +01:00
export class EnvironmentService implements EnvironmentServiceAbstraction {
2018-01-10 02:20:54 +01:00
baseUrl: string;
webVaultUrl: string;
apiUrl: string;
identityUrl: string;
iconsUrl: string;
2018-08-20 19:45:32 +02:00
notificationsUrl: string;
2019-06-20 14:56:45 +02:00
eventsUrl: string;
enterpriseUrl: string;
2018-01-10 02:20:54 +01:00
constructor(private apiService: ApiService, private storageService: StorageService,
private notificationsService: NotificationsService) { }
2018-06-25 14:06:19 +02:00
getWebVaultUrl(): string {
if (this.webVaultUrl != null) {
return this.webVaultUrl;
} else if (this.baseUrl) {
return this.baseUrl;
}
return null;
2018-01-10 02:20:54 +01:00
}
async setUrlsFromStorage(): Promise<void> {
const urlsObj: any = await this.storageService.get(ConstantsService.environmentUrlsKey);
const urls = urlsObj || {
base: null,
api: null,
identity: null,
icons: null,
2018-08-20 19:45:32 +02:00
notifications: null,
2019-06-20 14:56:45 +02:00
events: null,
2018-01-10 02:20:54 +01:00
webVault: null,
enterprise: null,
2018-01-10 02:20:54 +01:00
};
const envUrls = new EnvironmentUrls();
if (urls.base) {
this.baseUrl = envUrls.base = urls.base;
2018-10-04 18:05:21 +02:00
this.apiService.setUrls(envUrls);
2018-01-10 02:20:54 +01:00
return;
}
this.webVaultUrl = urls.webVault;
this.apiUrl = envUrls.api = urls.api;
this.identityUrl = envUrls.identity = urls.identity;
this.iconsUrl = urls.icons;
2018-08-20 19:45:32 +02:00
this.notificationsUrl = urls.notifications;
2019-06-20 14:56:45 +02:00
this.eventsUrl = envUrls.events = urls.events;
this.enterpriseUrl = urls.enterprise;
2018-10-04 18:05:21 +02:00
this.apiService.setUrls(envUrls);
2018-01-10 02:20:54 +01:00
}
async setUrls(urls: any): Promise<any> {
urls.base = this.formatUrl(urls.base);
urls.webVault = this.formatUrl(urls.webVault);
urls.api = this.formatUrl(urls.api);
urls.identity = this.formatUrl(urls.identity);
urls.icons = this.formatUrl(urls.icons);
2018-08-20 19:45:32 +02:00
urls.notifications = this.formatUrl(urls.notifications);
2019-06-20 14:56:45 +02:00
urls.events = this.formatUrl(urls.events);
urls.enterprise = this.formatUrl(urls.enterprise);
2018-01-10 02:20:54 +01:00
await this.storageService.save(ConstantsService.environmentUrlsKey, {
base: urls.base,
api: urls.api,
identity: urls.identity,
webVault: urls.webVault,
icons: urls.icons,
2018-08-20 19:45:32 +02:00
notifications: urls.notifications,
2019-06-20 14:56:45 +02:00
events: urls.events,
enterprise: urls.enterprise,
2018-01-10 02:20:54 +01:00
});
this.baseUrl = urls.base;
this.webVaultUrl = urls.webVault;
this.apiUrl = urls.api;
this.identityUrl = urls.identity;
this.iconsUrl = urls.icons;
2018-08-20 19:45:32 +02:00
this.notificationsUrl = urls.notifications;
2019-06-20 14:56:45 +02:00
this.eventsUrl = urls.events;
this.enterpriseUrl = urls.enterprise;
2018-01-10 02:20:54 +01:00
const envUrls = new EnvironmentUrls();
if (this.baseUrl) {
envUrls.base = this.baseUrl;
} else {
envUrls.api = this.apiUrl;
envUrls.identity = this.identityUrl;
2019-06-20 14:56:45 +02:00
envUrls.events = this.eventsUrl;
2018-01-10 02:20:54 +01:00
}
2018-10-04 18:05:21 +02:00
this.apiService.setUrls(envUrls);
2018-08-20 23:08:19 +02:00
if (this.notificationsService != null) {
this.notificationsService.init(this);
}
2018-01-10 02:20:54 +01:00
return urls;
}
private formatUrl(url: string): string {
if (url == null || url === '') {
return null;
}
url = url.replace(/\/+$/g, '');
if (!url.startsWith('http://') && !url.startsWith('https://')) {
url = 'https://' + url;
}
2019-02-15 22:53:01 +01:00
return url.trim();
2018-01-10 02:20:54 +01:00
}
}