forked from dienianindya/gsi_ess_mobile
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.8 KiB
127 lines
3.8 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.variables = exports.configs = void 0;
|
|
const _ = require("lodash");
|
|
const api_1 = require("../api");
|
|
const apiv2_1 = require("../apiv2");
|
|
const logger_1 = require("../logger");
|
|
const API_VERSION = "v1beta1";
|
|
const apiClient = new apiv2_1.Client({ urlPrefix: api_1.runtimeconfigOrigin, apiVersion: API_VERSION });
|
|
function listConfigs(projectId) {
|
|
return apiClient
|
|
.get(`/projects/${projectId}/configs`, {
|
|
retryCodes: [500, 503],
|
|
})
|
|
.then((resp) => resp.body.configs);
|
|
}
|
|
function createConfig(projectId, configId) {
|
|
const path = ["projects", projectId, "configs"].join("/");
|
|
return apiClient
|
|
.post(`/projects/${projectId}/configs`, {
|
|
name: path + "/" + configId,
|
|
}, {
|
|
retryCodes: [500, 503],
|
|
})
|
|
.catch((err) => {
|
|
if (_.get(err, "context.response.statusCode") === 409) {
|
|
return Promise.resolve();
|
|
}
|
|
return Promise.reject(err);
|
|
});
|
|
}
|
|
function deleteConfig(projectId, configId) {
|
|
return apiClient
|
|
.delete(`/projects/${projectId}/configs/${configId}`, {
|
|
retryCodes: [500, 503],
|
|
})
|
|
.catch((err) => {
|
|
if (_.get(err, "context.response.statusCode") === 404) {
|
|
logger_1.logger.debug("Config already deleted.");
|
|
return Promise.resolve();
|
|
}
|
|
throw err;
|
|
});
|
|
}
|
|
function listVariables(configPath) {
|
|
return apiClient
|
|
.get(`${configPath}/variables`, {
|
|
retryCodes: [500, 503],
|
|
})
|
|
.then((resp) => {
|
|
return Promise.resolve(resp.body.variables || []);
|
|
});
|
|
}
|
|
function getVariable(varPath) {
|
|
return apiClient
|
|
.get(varPath, {
|
|
retryCodes: [500, 503],
|
|
})
|
|
.then((resp) => {
|
|
return Promise.resolve(resp.body);
|
|
});
|
|
}
|
|
function createVariable(projectId, configId, varId, value) {
|
|
const path = `/projects/${projectId}/configs/${configId}/variables`;
|
|
return apiClient
|
|
.post(path, {
|
|
name: `${path}/${varId}`,
|
|
text: value,
|
|
}, {
|
|
retryCodes: [500, 503],
|
|
})
|
|
.catch((err) => {
|
|
if (_.get(err, "context.response.statusCode") === 404) {
|
|
return createConfig(projectId, configId).then(() => {
|
|
return createVariable(projectId, configId, varId, value);
|
|
});
|
|
}
|
|
return Promise.reject(err);
|
|
});
|
|
}
|
|
function updateVariable(projectId, configId, varId, value) {
|
|
const path = `/projects/${projectId}/configs/${configId}/variables/${varId}`;
|
|
return apiClient.put(path, {
|
|
name: path,
|
|
text: value,
|
|
}, {
|
|
retryCodes: [500, 503],
|
|
});
|
|
}
|
|
function setVariable(projectId, configId, varId, value) {
|
|
const path = ["projects", projectId, "configs", configId, "variables", varId].join("/");
|
|
return getVariable(path)
|
|
.then(() => {
|
|
return updateVariable(projectId, configId, varId, value);
|
|
})
|
|
.catch((err) => {
|
|
if (_.get(err, "context.response.statusCode") === 404) {
|
|
return createVariable(projectId, configId, varId, value);
|
|
}
|
|
return Promise.reject(err);
|
|
});
|
|
}
|
|
function deleteVariable(projectId, configId, varId) {
|
|
return apiClient
|
|
.delete(`/projects/${projectId}/configs/${configId}/variables/${varId}`, {
|
|
retryCodes: [500, 503],
|
|
queryParams: { recursive: "true" },
|
|
})
|
|
.catch((err) => {
|
|
if (_.get(err, "context.response.statusCode") === 404) {
|
|
logger_1.logger.debug("Variable already deleted.");
|
|
return Promise.resolve();
|
|
}
|
|
return Promise.reject(err);
|
|
});
|
|
}
|
|
exports.configs = {
|
|
list: listConfigs,
|
|
create: createConfig,
|
|
delete: deleteConfig,
|
|
};
|
|
exports.variables = {
|
|
list: listVariables,
|
|
get: getVariable,
|
|
set: setVariable,
|
|
delete: deleteVariable,
|
|
};
|