1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-28 00:17:12 +01:00
unleash.unleash/frontend/src/data/feature-api.js

80 lines
1.9 KiB
JavaScript

import { throwIfNotSuccess, headers } from './helper';
const URI = 'api/admin/features';
function validateToggle(featureToggle) {
return new Promise((resolve, reject) => {
if (!featureToggle.strategies || featureToggle.strategies.length === 0) {
reject(new Error('You must add at least one activation strategy'));
} else {
resolve(featureToggle);
}
});
}
function fetchAll() {
return fetch(URI, { credentials: 'include' })
.then(throwIfNotSuccess)
.then(response => response.json());
}
function create(featureToggle) {
return validateToggle(featureToggle)
.then(() =>
fetch(URI, {
method: 'POST',
headers,
credentials: 'include',
body: JSON.stringify(featureToggle),
})
)
.then(throwIfNotSuccess);
}
function validate(featureToggle) {
return fetch(`${URI}/validate`, {
method: 'POST',
headers,
credentials: 'include',
body: JSON.stringify(featureToggle),
}).then(throwIfNotSuccess);
}
function update(featureToggle) {
return validateToggle(featureToggle)
.then(() =>
fetch(`${URI}/${featureToggle.name}`, {
method: 'PUT',
headers,
credentials: 'include',
body: JSON.stringify(featureToggle),
})
)
.then(throwIfNotSuccess);
}
function toggle(enable, name) {
const action = enable ? 'on' : 'off';
return fetch(`${URI}/${name}/toggle/${action}`, {
method: 'POST',
headers,
credentials: 'include',
}).then(throwIfNotSuccess);
}
function remove(featureToggleName) {
return fetch(`${URI}/${featureToggleName}`, {
method: 'DELETE',
credentials: 'include',
}).then(throwIfNotSuccess);
}
export default {
fetchAll,
create,
validate,
update,
toggle,
remove,
};