consul/ui/packages/consul-ui/app/services/ui-config.js

47 lines
1.1 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import Service, { inject as service } from '@ember/service';
import { get } from '@ember/object';
import dataSource from 'consul-ui/decorators/data-source';
export default class UiConfigService extends Service {
@service('env') env;
@dataSource('/:partition/:nspace/:dc/ui-config/:path')
async findByPath(params) {
return get(this.get(), params.path);
}
@dataSource('/:partition/:nspace/:dc/notfound/:path')
async parsePath(params) {
return params.path.split('/').reduce((prev, item, i) => {
switch (true) {
case item.startsWith('~'):
prev.nspace = item.substr(1);
break;
case item.startsWith('_'):
prev.partition = item.substr(1);
break;
case typeof prev.dc === 'undefined':
prev.dc = item;
break;
}
return prev;
}, {});
}
@dataSource('/:partition/:nspace/:dc/ui-config')
async get() {
return this.env.var('CONSUL_UI_CONFIG');
}
// @deprecated
getSync() {
return this.env.var('CONSUL_UI_CONFIG');
}
}