gradebook.ts
1 import { RequestFN } from "~/core/request-function"; 2 import { encodePeriod } from "~/encoders/period"; 3 import { type Period, type SessionHandle, TabLocation } from "~/models"; 4 import { apiProperties } from "./private/api-properties"; 5 6 import { decodeGradeBook } from "~/decoders/gradebook"; 7 import { GradeBook } from "~/models/gradebook"; 8 9 export const gradebook = async (session: SessionHandle, period: Period): Promise<GradeBook> => { 10 const properties = apiProperties(session); 11 12 period = {...period, kind: 2}; 13 14 const request = new RequestFN(session, "PageBulletins", { 15 [properties.data]: { 16 classe: {}, 17 eleve: {}, 18 periode: encodePeriod(period) 19 }, 20 [properties.signature]: { onglet: TabLocation.Gradebook } 21 }); 22 23 const response = await request.send(); 24 return await decodeGradeBook(session, period, response.data[properties.data]); 25 };