Files
OwlBoard-TS/src/modules/pis.ts
Fred Boniface fc74e933d6
All checks were successful
Publish Package / build-and-publish (push) Successful in 6s
Add StationDataModule, implementing getNearestStations & a Geohash generator method
2026-03-30 21:53:01 +01:00

35 lines
1.2 KiB
TypeScript

import { ApiPisObject } from '@owlboard/api-schema-types';
import type { BaseClient, ApiResult } from '../lib/base.js';
import { IsValidCrs, IsValidPis } from '../lib/validation.js';
import { ValidationError } from '../lib/errors.js';
export class PisModule {
constructor(private client: BaseClient) {}
async getByStartEndCrs(startCrs: string, endCrs: string): Promise<ApiResult<ApiPisObject.PisObjects[]>> {
if (!IsValidCrs(startCrs)) {
throw new ValidationError("startCrs", "Invalid CRS Format")
}
if (!IsValidCrs(endCrs)) {
throw new ValidationError("endCrs", "Invalid CRS Format")
}
const path = `/pis/route/${encodeURIComponent(startCrs.toUpperCase())}/${encodeURIComponent(endCrs.toUpperCase())}`;
return this.client.request<ApiPisObject.PisObjects[]>(path, {
method: 'GET',
});
}
async getByCode(code: string): Promise<ApiResult<ApiPisObject.PisObjects[]>> {
if (!IsValidPis(code)) {
throw new ValidationError("code", "Invalid PIS Code Format")
}
const path = `/pis/code/${encodeURIComponent(code)}`;
return this.client.request<ApiPisObject.PisObjects[]>(path, {
method: 'GET',
})
}
}