76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
import * as axios from "../utils/axios";
|
|
import { toast } from "react-toastify";
|
|
import env from "../utils/env";
|
|
|
|
const apiHost = env.REACT_APP_NETWORK_RESURRECTOR_API_URL;
|
|
|
|
const networkRoute = `${apiHost}/network`;
|
|
const systemRoute = `${apiHost}/system`;
|
|
const powerActionsRoute = `${apiHost}/resurrector`;
|
|
const securityRoute = `${apiHost}/security`;
|
|
|
|
const routes = {
|
|
permissions: `${securityRoute}/permissions`,
|
|
releaseNotes: `${systemRoute}/release-notes`,
|
|
resetCache: `${systemRoute}/reset-cache`,
|
|
machines: `${networkRoute}/machines`,
|
|
wakeMachine: `${powerActionsRoute}/wake`,
|
|
pingMachine: `${powerActionsRoute}/ping`,
|
|
shutdownMachine: `${powerActionsRoute}/shutdown`,
|
|
restartMachine: `${powerActionsRoute}/restart`,
|
|
system: {
|
|
version: `${systemRoute}/version`,
|
|
releaseNotes: `${systemRoute}/release-notes`,
|
|
resetCache: `${systemRoute}/reset-cache`
|
|
}
|
|
};
|
|
|
|
const handleError = err => {
|
|
let message;
|
|
switch (err?.status) {
|
|
case 500:
|
|
message = err.title;
|
|
break;
|
|
|
|
case 404:
|
|
message = err.message;
|
|
break;
|
|
|
|
default:
|
|
message = err.title;
|
|
}
|
|
|
|
toast.error(message);
|
|
};
|
|
|
|
const defaultOptions = {
|
|
onCompleted: () => null,
|
|
onError: handleError
|
|
};
|
|
|
|
const call = async (request, options = defaultOptions) => {
|
|
const internalOptions = { ...defaultOptions, ...options };
|
|
const { onCompleted, onError } = internalOptions;
|
|
|
|
try {
|
|
const result = await request();
|
|
onCompleted(result);
|
|
} catch (error) {
|
|
onError(error);
|
|
}
|
|
};
|
|
|
|
const get = (route, options) => {
|
|
const promise = call(() => axios.get(route), options);
|
|
return promise;
|
|
};
|
|
|
|
const post = (route, data, options) => {
|
|
const promise = call(() => axios.post(route, data), options);
|
|
return promise;
|
|
};
|
|
|
|
const endpoints = routes;
|
|
|
|
export { routes, get, post, endpoints };
|