144 lines
5.4 KiB
JavaScript
144 lines
5.4 KiB
JavaScript
import axios from 'axios';
|
|
import fse__default from 'fs-extra';
|
|
import os from 'os';
|
|
import { apiConfig } from '../config/api.mjs';
|
|
import { getLocalConfig } from '../config/local.mjs';
|
|
import packageJson from '../package.json.mjs';
|
|
|
|
const VERSION = 'v1';
|
|
async function cloudApiFactory({ logger }, token) {
|
|
const localConfig = await getLocalConfig();
|
|
const customHeaders = {
|
|
'x-device-id': localConfig.installId,
|
|
'x-app-version': packageJson.version,
|
|
'x-os-name': os.type(),
|
|
'x-os-version': os.version(),
|
|
'x-language': Intl.DateTimeFormat().resolvedOptions().locale,
|
|
'x-node-version': process.versions.node
|
|
};
|
|
const axiosCloudAPI = axios.create({
|
|
baseURL: `${apiConfig.apiBaseUrl}/${VERSION}`,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
...customHeaders
|
|
}
|
|
});
|
|
if (token) {
|
|
axiosCloudAPI.defaults.headers.Authorization = `Bearer ${token}`;
|
|
}
|
|
return {
|
|
deploy ({ filePath, project }, { onUploadProgress }) {
|
|
return axiosCloudAPI.post(`/deploy/${project.name}`, {
|
|
file: fse__default.createReadStream(filePath),
|
|
targetEnvironment: project.targetEnvironment
|
|
}, {
|
|
headers: {
|
|
'Content-Type': 'multipart/form-data'
|
|
},
|
|
onUploadProgress
|
|
});
|
|
},
|
|
async createProject ({ name, nodeVersion, region, plan }) {
|
|
const response = await axiosCloudAPI.post('/project', {
|
|
projectName: name,
|
|
region,
|
|
nodeVersion,
|
|
plan
|
|
});
|
|
return {
|
|
data: {
|
|
id: response.data.id,
|
|
name: response.data.name,
|
|
nodeVersion: response.data.nodeVersion,
|
|
region: response.data.region
|
|
},
|
|
status: response.status
|
|
};
|
|
},
|
|
getUserInfo () {
|
|
return axiosCloudAPI.get('/user');
|
|
},
|
|
async config () {
|
|
try {
|
|
const response = await axiosCloudAPI.get('/config');
|
|
if (response.status !== 200) {
|
|
throw new Error('Error fetching cloud CLI config from the server.');
|
|
}
|
|
return response;
|
|
} catch (error) {
|
|
logger.debug("🥲 Oops! Couldn't retrieve the cloud CLI config from the server. Please try again.");
|
|
throw error;
|
|
}
|
|
},
|
|
async listProjects () {
|
|
try {
|
|
const response = await axiosCloudAPI.get('/projects');
|
|
if (response.status !== 200) {
|
|
throw new Error('Error fetching cloud projects from the server.');
|
|
}
|
|
return response;
|
|
} catch (error) {
|
|
logger.debug("🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.");
|
|
throw error;
|
|
}
|
|
},
|
|
async listLinkProjects () {
|
|
try {
|
|
const response = await axiosCloudAPI.get('/projects-linkable');
|
|
if (response.status !== 200) {
|
|
throw new Error('Error fetching cloud projects from the server.');
|
|
}
|
|
return response;
|
|
} catch (error) {
|
|
logger.debug("🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.");
|
|
throw error;
|
|
}
|
|
},
|
|
async listEnvironments ({ name }) {
|
|
try {
|
|
const response = await axiosCloudAPI.get(`/projects/${name}/environments`);
|
|
if (response.status !== 200) {
|
|
throw new Error('Error fetching cloud environments from the server.');
|
|
}
|
|
return response;
|
|
} catch (error) {
|
|
logger.debug("🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.");
|
|
throw error;
|
|
}
|
|
},
|
|
async listLinkEnvironments ({ name }) {
|
|
try {
|
|
const response = await axiosCloudAPI.get(`/projects/${name}/environments-linkable`);
|
|
if (response.status !== 200) {
|
|
throw new Error('Error fetching cloud environments from the server.');
|
|
}
|
|
return response;
|
|
} catch (error) {
|
|
logger.debug("🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.");
|
|
throw error;
|
|
}
|
|
},
|
|
async getProject ({ name }) {
|
|
try {
|
|
const response = await axiosCloudAPI.get(`/projects/${name}`);
|
|
if (response.status !== 200) {
|
|
throw new Error("Error fetching project's details.");
|
|
}
|
|
return response;
|
|
} catch (error) {
|
|
logger.debug("🥲 Oops! There was a problem retrieving your project's details. Please try again.");
|
|
throw error;
|
|
}
|
|
},
|
|
track (event, payload = {}) {
|
|
return axiosCloudAPI.post('/track', {
|
|
event,
|
|
payload
|
|
});
|
|
}
|
|
};
|
|
}
|
|
|
|
export { VERSION, cloudApiFactory };
|
|
//# sourceMappingURL=cli-api.mjs.map
|