UNPKG

forest-cli

Version:

The Lumberjacks' toolbelt is the Forest CLI which makes easy to manage your back office application directly from the terminal.

112 lines 11.1 kB
const agent = require('superagent'); const Context = require('@forestadmin/context'); const EnvironmentSerializer = require('../serializers/environment'); const environmentDeserializer = require('../deserializers/environment'); const { handleError } = require('../utils/error'); function EnvironmentManager(config) { const { assertPresent, authenticator, env, keyGenerator } = Context.inject(); assertPresent({ authenticator, env, keyGenerator }); this.listEnvironments = async () => { const authToken = authenticator.getAuthToken(); return agent .get(`${env.FOREST_SERVER_URL}/api/projects/${config.projectId}/environments`) .set('Authorization', `Bearer ${authToken}`) .set('forest-project-id', config.projectId) .send() .then(response => environmentDeserializer.deserialize(response.body)); }; this.getEnvironment = async (environmentId) => { const authToken = authenticator.getAuthToken(); return agent .get(`${env.FOREST_SERVER_URL}/api/environments/${environmentId}`) .set('Authorization', `Bearer ${authToken}`) .set('forest-environment-id', environmentId) .send() .then(response => environmentDeserializer.deserialize(response.body)); }; this.getEnvironmentApimap = async (environmentId) => { const authToken = authenticator.getAuthToken(); const response = await agent .get(`${env.FOREST_SERVER_URL}/api/apimaps/${environmentId}`) .set('Authorization', `Bearer ${authToken}`) .set('forest-environment-id', environmentId) .send(); return response.body.data.apimap; }; this.createEnvironment = async () => { const authToken = authenticator.getAuthToken(); const attributes = { name: config.name, project: { id: config.projectId }, areRolesDisabled: config.disableRoles, }; // A production environment can be created without a URL; only send one when provided. if (config.url) attributes.apiEndpoint = config.url; // Required to create the first production environment (e.g. `--type production`). // When omitted, the server defaults the type to "remote" (see environment-service). if (config.type) attributes.type = config.type; const response = await agent .post(`${env.FOREST_SERVER_URL}/api/environments`) .set('Authorization', `Bearer ${authToken}`) .set('forest-project-id', config.projectId) .send(EnvironmentSerializer.serialize(attributes)); const environment = await environmentDeserializer.deserialize(response.body); environment.authSecret = keyGenerator.generate(); return environment; }; this.createDevelopmentEnvironment = async (projectId, endpoint) => { const authToken = authenticator.getAuthToken(); return agent .post(`${env.FOREST_SERVER_URL}/api/projects/${projectId}/development-environment-for-user`) .set('Authorization', `Bearer ${authToken}`) .send({ endpoint }) .then(response => environmentDeserializer.deserialize(response.body)); }; this.updateEnvironment = async () => { const authToken = authenticator.getAuthToken(); return agent .put(`${env.FOREST_SERVER_URL}/api/environments/${config.environmentId}`) .set('Authorization', `Bearer ${authToken}`) .send(EnvironmentSerializer.serialize({ name: config.name, apiEndpoint: config.url, })); }; this.deleteEnvironment = async (environmentId) => { const authToken = authenticator.getAuthToken(); return agent .del(`${env.FOREST_SERVER_URL}/api/environments/${environmentId}`) .set('Authorization', `Bearer ${authToken}`) .set('forest-environment-id', environmentId); }; this.reset = async (environmentName, environmentSecret) => { const authToken = authenticator.getAuthToken(); return agent .post(`${env.FOREST_SERVER_URL}/api/environments/reset`) .set('Authorization', `Bearer ${authToken}`) .set('forest-secret-key', `${environmentSecret}`) .send({ environmentName }); }; /** * Deploy layout changes of an environment to production. * @param {Number} environment.id - The environment id that contains the layout changes to deploy. */ this.deploy = () => { const authToken = authenticator.getAuthToken(); return agent .post(`${env.FOREST_SERVER_URL}/api/environments/deploy`) .set('Authorization', `Bearer ${authToken}`) .set('forest-secret-key', `${config.envSecret}`); }; this.handleEnvironmentError = rawError => { const error = handleError(rawError); if (error === 'Forbidden') { return 'You do not have the permission to perform this action on the given environments.'; } return error; }; } module.exports = EnvironmentManager; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnZpcm9ubWVudC1tYW5hZ2VyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUVoRCxNQUFNLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDeEUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWxELFNBQVMsa0JBQWtCLENBQUMsTUFBTTtJQUNoQyxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdFLGFBQWEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUVwRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDakMsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRS9DLE9BQU8sS0FBSzthQUNULEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsaUJBQWlCLE1BQU0sQ0FBQyxTQUFTLGVBQWUsQ0FBQzthQUM3RSxHQUFHLENBQUMsZUFBZSxFQUFFLFVBQVUsU0FBUyxFQUFFLENBQUM7YUFDM0MsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUM7YUFDMUMsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsV0FB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