84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
const API_BASE = import.meta.env.VITE_API_BASE || "";
|
|
|
|
async function parseResponse(response) {
|
|
const payload = await response.json().catch(() => ({}));
|
|
if (!response.ok) {
|
|
throw new Error(payload.detail || "Request failed");
|
|
}
|
|
return payload;
|
|
}
|
|
|
|
export async function uploadImage(file) {
|
|
const body = new FormData();
|
|
body.append("image", file);
|
|
const response = await fetch(`${API_BASE}/api/images/`, {
|
|
method: "POST",
|
|
body
|
|
});
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function getOperations() {
|
|
const response = await fetch(`${API_BASE}/api/operations/`);
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function listStates(sessionId) {
|
|
const response = await fetch(`${API_BASE}/api/sessions/${sessionId}/states/`);
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function applyStateOperation(stateId, operation, params = {}) {
|
|
const response = await fetch(`${API_BASE}/api/states/${stateId}/operations/`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ operation, params })
|
|
});
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function combineStates(operation, stateIds, params = {}) {
|
|
const response = await fetch(`${API_BASE}/api/states/combine/`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ operation, state_ids: stateIds, params })
|
|
});
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function getStateHistogram(stateId) {
|
|
const response = await fetch(`${API_BASE}/api/states/${stateId}/histogram/`);
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function deleteState(stateId) {
|
|
const response = await fetch(`${API_BASE}/api/states/${stateId}/`, {
|
|
method: "DELETE"
|
|
});
|
|
if (response.status === 204) return {};
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function processImage(sessionId, operation, params) {
|
|
const response = await fetch(`${API_BASE}/api/process/`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ session_id: sessionId, operation, params })
|
|
});
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function createBatch(operation, sessionIds, params = {}) {
|
|
const response = await fetch(`${API_BASE}/api/batch/`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ operation, session_ids: sessionIds, params })
|
|
});
|
|
return parseResponse(response);
|
|
}
|
|
|
|
export async function getJob(jobId) {
|
|
const response = await fetch(`${API_BASE}/api/jobs/${jobId}/`);
|
|
return parseResponse(response);
|
|
}
|