You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import ky from "ky"; import Activity, {ActivityUpdate} from "../models/activity"; import Period, {PeriodUpdate} from "../models/period";
function json(data) { return { body: JSON.stringify(data), headers: { "Content-Type": "application/json", }, credentials: "include", } }
const k = ky.create({ credentials: "include", })
export class StuffLogAPI { async checkSession() { return await k.get("/api/user/").json(); } async login(username, password) { return await k.post("/api/user/login", json({username,password})).json(); } async register(username, password) { return await k.post("/api/user/register", json({username,password})).json(); } async logout() { return await k.post("/api/user/logout").json(); }
/** * List activities * * @returns {Activity[]} */ async listActivities() { const data = await k.get("/api/activity/").json(); return data.activities.map(d => new Activity(d)); } /** * List periods * * @returns {{periods: Period[], activities: Activity[]}} */ async listPeriods() { const data = await k.get("/api/period/").json();
return data.periods.map(d => new Period(d)); } /** * Find activity * * @param {string} id * @returns {Activity} */ async findActivity(id) { const data = await k.get(`/api/activity/${id}`).json(); return new Activity(data.activity); } /** * Find period * * @param {string} id * @returns {Period} */ async findPeriod(id) { const data = await k.get(`/api/period/${id}`).json(); return new Period(data.period); } /** * Create a new activity * * @param {Activity} activity * @returns {Activity} */ async postActivity(activity) { const data = await k.post(`/api/activity/`, json(activity)).json(); return new Activity(data.activity); } /** * Create a new period * * @param {Period} period * @returns {Period} */ async postPeriod(period) { const data = await k.post(`/api/period/`, json(period)).json(); return new Period(data.period); } /** * Update an activity * * @param {string} id * @param {ActivityUpdate[]} updates * @returns {Activity} */ async patchActivity(id, ...updates) { const data = await k.patch(`/api/activity/${id}`, json(updates)).json(); return new Activity(data.activity); } /** * Update an period * * @param {string} id * @param {PeriodUpdate[]} updates * @returns {Period} */ async patchPeriod(id, ...updates) { const data = await k.patch(`/api/period/${id}`, json(updates)).json(); return new Period(data.period); } /** * Update an activity * * @param {string} id * @returns {Activity} */ async deleteActivity(id) { const data = await k.delete(`/api/activity/${id}`).json(); return new Activity(data.activity); }
/** * Update an period * * @param {string} id * @returns {Period} */ async deletePeriod(id) { const data = await k.delete(`/api/period/${id}`).json(); return new Period(data.period); } }
const slApi = new StuffLogAPI();
export default slApi;
|