notebook.ts
1 import { RequestFN } from "~/core/request-function"; 2 import { decodeNotebook } from "~/decoders/notebook"; 3 import { encodePeriod } from "~/encoders/period"; 4 import { encodePronoteDate } from "~/encoders/pronote-date"; 5 import { type SessionHandle, type Notebook, type Period, TabLocation } from "~/models"; 6 import { apiProperties } from "./private/api-properties"; 7 8 export const notebook = async (session: SessionHandle, period: Period): Promise<Notebook> => { 9 const properties = apiProperties(session); 10 11 const request = new RequestFN(session, "PagePresence", { 12 [properties.signature]: { onglet: TabLocation.Notebook }, 13 14 [properties.data]: { 15 periode: encodePeriod(period), 16 17 DateDebut: { 18 _T: 7, 19 V: encodePronoteDate(period.startDate) 20 }, 21 22 DateFin: { 23 _T: 7, 24 V: encodePronoteDate(period.endDate) 25 } 26 } 27 }); 28 29 const response = await request.send(); 30 return decodeNotebook(response.data[properties.data], session); 31 };