diff --git a/src/client.ts b/src/client.ts index 4fd927a..bb2c51b 100644 --- a/src/client.ts +++ b/src/client.ts @@ -6,6 +6,8 @@ import type { ElsTimetableResponse, MealServiceDietInfoParam, MealServiceDietInfoResponse, + MisTimetableParam, + MisTimetableResponse, NeisConfig, SchoolInfoParam, SchoolInfoResponse, @@ -71,4 +73,16 @@ export class Neis extends NeisRequest { ): Promise { return (await this.elsTimetableRaw(params))[0] } + + async getMisTimetable( + params: MisTimetableParam + ): Promise { + return await this.misTimetableRaw(params) + } + + async getMisTimetableOne( + params: MisTimetableParam + ): Promise { + return (await this.misTimetableRaw(params))[0] + } } diff --git a/src/http.ts b/src/http.ts index 333b030..92a3de9 100644 --- a/src/http.ts +++ b/src/http.ts @@ -6,6 +6,8 @@ import type { ElsTimetableResponse, MealServiceDietInfoParam, MealServiceDietInfoResponse, + MisTimetableParam, + MisTimetableResponse, NeisConfig, Params, SchoolInfoParam, @@ -113,6 +115,16 @@ export class NeisRequest { ) } + protected async misTimetableRaw( + params: MisTimetableParam + ): Promise { + return await this.request( + 'GET', + 'misTimetable', + params + ) + } + private async request( method: string, endpoint: string, diff --git a/src/types.ts b/src/types.ts index 18ba7f2..afb87b7 100644 --- a/src/types.ts +++ b/src/types.ts @@ -108,12 +108,18 @@ export interface ElsTimetableParam extends DefaultParam, RequiresSchoolParam { readonly TI_TO_YMD?: string } +export interface MisTimetableParam extends ElsTimetableParam { + /** 주야과정명 */ + readonly DGHT_CRSE_SC_NM?: string +} + export type Params = | SchoolInfoParam | MealServiceDietInfoParam | SchoolScheduleParam | AcaInsTiInfoParam | ElsTimetableParam + | MisTimetableParam interface BaseSchoolResponse { /** 시도교육청코드 */ @@ -294,3 +300,8 @@ export interface ElsTimetableResponse extends BaseSchoolResponse { /** 수정일 */ readonly LOAD_DTM: string } + +export interface MisTimetableResponse extends ElsTimetableResponse { + /** 주야과정명 */ + readonly DGHT_CRSE_SC_NM: string +} diff --git a/tests/constants.ts b/tests/constants.ts index da8c880..033f1a3 100644 --- a/tests/constants.ts +++ b/tests/constants.ts @@ -1,6 +1,7 @@ export const AE = 'B10' export const AN = '3000037367' export const SE = '7010057' -export const YMD = '20230302' +export const YMD = '20230428' export const ELS = '7091414' +export const MIS = '7091455' diff --git a/tests/timetable.test.ts b/tests/timetable.test.ts index 1a4c9fd..69103ab 100644 --- a/tests/timetable.test.ts +++ b/tests/timetable.test.ts @@ -1,5 +1,5 @@ -import type { ElsTimetableResponse } from '../src' -import { AE, ELS, YMD } from './constants' +import type { ElsTimetableResponse, MisTimetableResponse } from '../src' +import { AE, ELS, MIS, YMD } from './constants' import { neis } from './utils' describe('Timetable', () => { @@ -25,4 +25,27 @@ describe('Timetable', () => { expect(data).toMatchObject(data) }) + + it('should return MisTimetableResponse[]', async () => { + const data = await neis.getMisTimetable({ + ATPT_OFCDC_SC_CODE: AE, + SD_SCHUL_CODE: MIS, + ALL_TI_YMD: YMD, + }) + + expect(data).toMatchObject(data) + }) + + it('should return MisTimetableResponse', async () => { + const data = await neis.getMisTimetableOne({ + ATPT_OFCDC_SC_CODE: AE, + SD_SCHUL_CODE: MIS, + ALL_TI_YMD: YMD, + GRADE: '1', + CLASS_NM: '1', + PERIO: '1', + }) + + expect(data).toMatchObject(data) + }) })