1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-09-19 02:51:14 +02:00
bitwarden-browser/src/services/environmentService.js
2017-09-04 12:09:11 -04:00

97 lines
2.6 KiB
JavaScript

function EnvironmentService(constantsService, apiService) {
this.constantsService = constantsService;
this.apiService = apiService;
this.baseUrl = null;
this.webVaultUrl = null;
this.apiUrl = null;
this.identityUrl = null;
initEnvironmentService();
}
function initEnvironmentService() {
EnvironmentService.prototype.setUrlsFromStorage = function (callback) {
var self = this;
chrome.storage.local.get(self.constantsService.environmentUrlsKey, function (urlsObj) {
var urls = urlsObj[self.constantsService.environmentUrlsKey] || {
base: null,
api: null,
identity: null,
webVault: null
};
self.baseUrl = urls.base;
if (self.baseUrl) {
self.apiService.setUrls({
base: self.baseUrl
});
callback();
return;
}
self.webVaultUrl = urls.webVault;
self.apiUrl = urls.api;
self.identityUrl = urls.identity;
self.apiService.setUrls({
api: self.apiUrl,
identity: self.identityUrl
});
callback();
return;
});
};
EnvironmentService.prototype.setUrls = function (urls, callback) {
var self = this;
urls.base = formatUrl(urls.base);
urls.webVault = formatUrl(urls.webVault);
urls.api = formatUrl(urls.api);
urls.identity = formatUrl(urls.identity);
var urlsObj = {};
urlsObj[self.constantsService.environmentUrlsKey] = {
base: urls.base,
api: urls.api,
identity: urls.identity,
webVault: urls.webVault
};
chrome.storage.local.set(urlsObj, function () {
self.baseUrl = urls.base;
self.webVaultUrl = urls.webVault;
self.apiUrl = urls.api;
self.identityUrl = urls.identity;
if (self.baseUrl) {
self.apiService.setUrls({
base: self.baseUrl
});
}
else {
self.apiService.setUrls({
api: self.apiUrl,
identity: self.identityUrl
});
}
callback(urls);
});
};
function formatUrl(url) {
if (!url || url === '') {
return null;
}
url = url.replace(/\/+$/g, '');
if (!url.startsWith("http://") && !url.startsWith('https://')) {
url = 'https://' + url;
}
return url;
}
}