mirror of
https://github.com/khairul169/code-share.git
synced 2025-04-29 00:59:37 +07:00
67 lines
1.4 KiB
TypeScript
67 lines
1.4 KiB
TypeScript
import fetch, { RequestInit } from "node-fetch";
|
|
|
|
const createRequest = async (
|
|
url: string,
|
|
options?: RequestInit & { ignoreError?: boolean }
|
|
) => {
|
|
const reqUrl = "http://127.0.0.1:8000" + url;
|
|
const response = await fetch(reqUrl, options);
|
|
|
|
if (!response.ok && !options?.ignoreError) {
|
|
const err: any = Error(response.statusText);
|
|
err.code = response.status;
|
|
throw err;
|
|
}
|
|
|
|
return response;
|
|
};
|
|
|
|
const start = async (id: string, path: string) => {
|
|
return createRequest("/start", {
|
|
body: JSON.stringify({ path, id }),
|
|
method: "POST",
|
|
ignoreError: true,
|
|
});
|
|
};
|
|
|
|
const stop = async (id: string) => {
|
|
const res = await createRequest(`/stop/${id}`, { method: "POST" });
|
|
return res.json();
|
|
};
|
|
|
|
const restart = async (id: string) => {
|
|
return createRequest(`/restart/${id}`, { method: "POST", ignoreError: true });
|
|
};
|
|
|
|
const getStats = async (id: string) => {
|
|
const res = await createRequest(`/stats/${id}`);
|
|
return res.json();
|
|
};
|
|
|
|
const getLogs = async (id: string) => {
|
|
return createRequest(`/logs/${id}`);
|
|
};
|
|
|
|
type ProxyOptions = {
|
|
pathname: string;
|
|
headers: Headers;
|
|
};
|
|
|
|
const proxy = async (id: string, opt: ProxyOptions) => {
|
|
return createRequest(`/proxy/${id}` + opt.pathname, {
|
|
headers: opt.headers,
|
|
ignoreError: true,
|
|
});
|
|
};
|
|
|
|
const sandbox = {
|
|
start,
|
|
stop,
|
|
restart,
|
|
getStats,
|
|
getLogs,
|
|
proxy,
|
|
};
|
|
|
|
export default sandbox;
|