Add trains endpoint handler
All checks were successful
Publish Package / build-and-publish (push) Successful in 8s
All checks were successful
Publish Package / build-and-publish (push) Successful in 8s
This commit is contained in:
34
src/modules/trains.ts
Normal file
34
src/modules/trains.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { ApiTrainsTrainByHeadcode } from '@owlboard/api-schema-types';
|
||||
import type { BaseClient, ApiResult } from '../lib/base.js';
|
||||
import { IsValidHeadcode, IsValidToc, IsValidDateStr } from '../lib/validation.js';
|
||||
import { ensureDateString } from 'src/lib/helpers.js';
|
||||
import { ValidationError } from '../lib/errors.js';
|
||||
|
||||
export class TrainsModule {
|
||||
constructor(private client: BaseClient) { }
|
||||
|
||||
async getByHeadcode(headcode: string, date: string | Date = new Date, toc: string = ""): Promise<ApiResult<ApiTrainsTrainByHeadcode.TrainByHeadcodeResponse[]>> {
|
||||
if (!IsValidHeadcode(headcode)) {
|
||||
throw new ValidationError("headcode", "Invalid headcode format")
|
||||
}
|
||||
if (toc !== "" && !IsValidToc(toc)) {
|
||||
throw new ValidationError("TOC", "Invalid TOC Format, needs to be two characters");
|
||||
}
|
||||
|
||||
const dateStr = ensureDateString(date);
|
||||
if (!IsValidDateStr(dateStr)) {
|
||||
throw new ValidationError("Date", "Invalid date format, need YYYY-MM-DD");
|
||||
}
|
||||
|
||||
const searchParams = new URLSearchParams();
|
||||
searchParams.append('d', dateStr);
|
||||
searchParams.append('h', headcode);
|
||||
if (toc) searchParams.append('t', toc);
|
||||
|
||||
const path = `/trains?${searchParams.toString()}`;
|
||||
|
||||
return this.client.request<ApiTrainsTrainByHeadcode.TrainByHeadcodeResponse[]>(path, {
|
||||
method: 'GET',
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user