diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts index c424c88..5f3cef1 100644 --- a/src/core/studentClient.ts +++ b/src/core/studentClient.ts @@ -1,7 +1,12 @@ import { API_BASE_STUDENT, BASE_URL } from "../utils/consts.ts"; import { BaseClient } from "../core/baseClient.ts"; import { parseCookies } from "../utils/utils.ts"; -import { RewardPurchaseResponse, RewardsResponse } from "../types.ts"; +import { + GetStudentCodeOptions, + GetStudentCodeResponse, + RewardPurchaseResponse, + RewardsResponse, +} from "../types.ts"; /** * Student Client @@ -91,4 +96,22 @@ export class StudentClient extends BaseClient { ) ); } + + /** + * Gets the current student's student code + * @param options GetStudentCodeOptions + * @param options.dateOfBirth Date of birth in the format YYYY-MM-DD + * @returns + */ + async getStudentCode( + options: GetStudentCodeOptions, + ): Promise { + const data = await this.makeAuthedRequest(this.API_BASE + "/getcode", { + method: "POST", + body: JSON.stringify({ + date: options.dateOfBirth, + }), + }); + return data; + } } diff --git a/src/types.ts b/src/types.ts index a48bfa5..7bdf02d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -489,3 +489,20 @@ export interface PupilFieldsData { } export type PupilFieldsResponse = ClassChartsResponse; + +export interface GetStudentCodeOptions { + /** + * Date of birth, in format YYYY-MM-DD + */ + dateOfBirth: string; +} + +export interface GetStudentCodeResponseData { + code: string; +} + +export type GetStudentCodeResponseMeta = []; +export type GetStudentCodeResponse = ClassChartsResponse< + GetStudentCodeResponseData, + GetStudentCodeResponseMeta +>;