Didactopus/webui/src/api.js

63 lines
1.9 KiB
JavaScript

const API = "http://127.0.0.1:8011/api";
export async function login(username, password) {
const res = await fetch(`${API}/login`, {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({ username, password })
});
if (!res.ok) throw new Error("Login failed");
return await res.json();
}
function authHeaders(token) {
return { "Content-Type": "application/json", "Authorization": `Bearer ${token}` };
}
export async function fetchPacks(token) {
const res = await fetch(`${API}/packs`, { headers: authHeaders(token) });
return await res.json();
}
export async function createLearner(token, learnerId, displayName) {
const res = await fetch(`${API}/learners`, {
method: "POST",
headers: authHeaders(token),
body: JSON.stringify({ learner_id: learnerId, display_name: displayName })
});
return await res.json();
}
export async function fetchLearnerState(token, learnerId) {
const res = await fetch(`${API}/learners/${learnerId}/state`, { headers: authHeaders(token) });
return await res.json();
}
export async function postEvidence(token, learnerId, event) {
const res = await fetch(`${API}/learners/${learnerId}/evidence`, {
method: "POST",
headers: authHeaders(token),
body: JSON.stringify(event)
});
return await res.json();
}
export async function fetchRecommendations(token, learnerId, packId) {
const res = await fetch(`${API}/learners/${learnerId}/recommendations/${packId}`, { headers: authHeaders(token) });
return await res.json();
}
export async function submitEvaluatorJob(token, learnerId, payload) {
const res = await fetch(`${API}/learners/${learnerId}/evaluator-jobs`, {
method: "POST",
headers: authHeaders(token),
body: JSON.stringify(payload)
});
return await res.json();
}
export async function fetchEvaluatorJob(token, jobId) {
const res = await fetch(`${API}/evaluator-jobs/${jobId}`, { headers: authHeaders(token) });
return await res.json();
}