Files
pleno-vue/src/components/session/token/superUser/modules/edgegateway/Config.vue
T

88 lines
2.6 KiB
Vue

<script>
import {
getEdgeGatewayModuleConfig,
setEdgeGatewayModuleConfig,
testEdgeGatewayBrokerConfig,
} from "@/services/edgeGateways.js";
const normalizeEntries = (entries) => {
if (Array.isArray(entries)) {
return entries;
}
if (entries && typeof entries === "object") {
return Object.values(entries);
}
return [];
};
const SENSITIVE_WRITE_ONLY_KEYS = new Set(["broker_shared_secret"]);
const toConfigPayload = (entries) => {
const payload = {};
normalizeEntries(entries).forEach((entry) => {
if (!entry || !entry.variable) {
return;
}
payload[entry.variable] = SENSITIVE_WRITE_ONLY_KEYS.has(entry.variable) ? "" : entry.value;
});
return payload;
};
export const Config = {
get: async (variable) => getEdgeGatewayModuleConfig(variable),
get_all: async () =>
getEdgeGatewayModuleConfig().then((response) => {
const entries = normalizeEntries(response?.data?.data || []);
response.data.data = entries;
response.data.config = toConfigPayload(entries);
return response;
}),
get_config: async () => Config.get_all().then((response) => response?.data?.config || {}),
set_config: async (payload) => setEdgeGatewayModuleConfig(payload),
test_broker: async (payload) => testEdgeGatewayBrokerConfig(payload),
set: async (variable, value) => {
const currentConfig = await Config.get_config();
SENSITIVE_WRITE_ONLY_KEYS.forEach((key) => {
if (key !== variable) {
delete currentConfig[key];
}
});
return Config.set_config({
...currentConfig,
[variable]: value,
});
},
keys: {
enabled: {
get: async () => Config.get("enabled"),
set: async (value) => Config.set("enabled", value),
},
default_release_channel: {
get: async () => Config.get("default_release_channel"),
set: async (value) => Config.set("default_release_channel", value),
},
default_update_window: {
get: async () => Config.get("default_update_window"),
set: async (value) => Config.set("default_update_window", value),
},
broker_url: {
get: async () => Config.get("broker_url"),
set: async (value) => Config.set("broker_url", value),
},
public_broker_url: {
get: async () => Config.get("public_broker_url"),
set: async (value) => Config.set("public_broker_url", value),
},
broker_auth_mode: {
get: async () => Config.get("broker_auth_mode"),
set: async (value) => Config.set("broker_auth_mode", value),
},
broker_shared_secret: {
set: async (value) => Config.set("broker_shared_secret", value),
},
},
};
</script>