From 196cc8783b577a4ed80b7e56a9d669f9d88df0c9 Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Wed, 12 Mar 2025 21:47:21 +0000 Subject: [PATCH] Implement PIS, User and Reference API classes --- src/clients/LocationReferenceClientV2.ts | 9 --------- src/clients/ReferenceClientV2.ts | 23 +++++++++++++++++++++++ src/clients/UserClientV2.ts | 13 +++++++++++++ src/clients/client.ts | 6 +++--- src/types/reference/ReferenceTypesV2.ts | 22 ++++++++++++++++++++++ src/types/user/UserTypesV2.ts | 5 +++++ 6 files changed, 66 insertions(+), 12 deletions(-) delete mode 100644 src/clients/LocationReferenceClientV2.ts create mode 100644 src/clients/ReferenceClientV2.ts create mode 100644 src/types/reference/ReferenceTypesV2.ts create mode 100644 src/types/user/UserTypesV2.ts diff --git a/src/clients/LocationReferenceClientV2.ts b/src/clients/LocationReferenceClientV2.ts deleted file mode 100644 index 920ad1d..0000000 --- a/src/clients/LocationReferenceClientV2.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseOwlBoardClient } from "./client"; - -export class LocationReferenceClientV2 { - private client: BaseOwlBoardClient; - - constructor(client: BaseOwlBoardClient) { - this.client = client; - } -} \ No newline at end of file diff --git a/src/clients/ReferenceClientV2.ts b/src/clients/ReferenceClientV2.ts new file mode 100644 index 0000000..ad83c70 --- /dev/null +++ b/src/clients/ReferenceClientV2.ts @@ -0,0 +1,23 @@ +import { validateReasonCode } from "../inputValidation/inputValidation"; +import { ReferenceV2_LocationReferenceCodes, ReferenceV2_LocationReferenceCodeType, ReferenceV2_ReasonCode } from "../types/reference/ReferenceTypesV2"; +import { BaseOwlBoardClient } from "./client"; + +export class ReferenceClientV2 { + private client: BaseOwlBoardClient; + + constructor(client: BaseOwlBoardClient) { + this.client = client; + } + + async defineReasonCode(reasonCode: number): Promise { + validateReasonCode(reasonCode); + const path = `/api/v2/ref/reasonCode/${reasonCode}` + return this.client.makeRequest("GET", path); + } + + async lookupLocationReference(type: ReferenceV2_LocationReferenceCodeType, referenceCode: string): Promise { + // Validation Required Here + const path = `/api/v2/ref/locationCode/${type}/${referenceCode}` + return this.client.makeRequest("GET", path); + } +} \ No newline at end of file diff --git a/src/clients/UserClientV2.ts b/src/clients/UserClientV2.ts index 9f08e01..dab9019 100644 --- a/src/clients/UserClientV2.ts +++ b/src/clients/UserClientV2.ts @@ -1,3 +1,5 @@ +import { validateUuid } from "../inputValidation/inputValidation"; +import { UserV2_RegistrationResponse } from "../types/user/UserTypesV2"; import { BaseOwlBoardClient } from "./client"; export class UserClientV2 { @@ -6,4 +8,15 @@ export class UserClientV2 { constructor(client: BaseOwlBoardClient) { this.client = client; } + + async getUser(uuid: string): Promise { + validateUuid(uuid); + const path = `/api/v2/user/${uuid}`; + return this.client.makeRequest("GET", path); + } + + async checkAuth(): Promise { + const path = '/api/v2/checkAuth' + return this.client.makeRequest("GET", path); + } } \ No newline at end of file diff --git a/src/clients/client.ts b/src/clients/client.ts index e8690f4..75ea4f4 100644 --- a/src/clients/client.ts +++ b/src/clients/client.ts @@ -1,6 +1,6 @@ import { version } from "../constants"; import { LdbClientV2 } from "./LdbClientV2"; -import { LocationReferenceClientV2 } from "./LocationReferenceClientV2"; +import { ReferenceClientV2 } from "./ReferenceClientV2"; import { MiscClientV2 } from "./MiscClientV2"; import { PisClientV2 } from "./PisClientV2"; import { TrainClientV2 } from "./TrainClientV2"; @@ -80,7 +80,7 @@ export class OwlBoardClientV2 extends BaseOwlBoardClient { pis: PisClientV2; train: TrainClientV2; user: UserClientV2; - locationReference: LocationReferenceClientV2; + reference: ReferenceClientV2; misc: MiscClientV2; ldb: LdbClientV2; @@ -89,7 +89,7 @@ export class OwlBoardClientV2 extends BaseOwlBoardClient { this.pis = new PisClientV2(this); this.train = new TrainClientV2(this); this.user = new UserClientV2(this); - this.locationReference = new LocationReferenceClientV2(this); + this.reference = new ReferenceClientV2(this); this.misc = new MiscClientV2(this); this.ldb = new LdbClientV2(this); } diff --git a/src/types/reference/ReferenceTypesV2.ts b/src/types/reference/ReferenceTypesV2.ts new file mode 100644 index 0000000..4bbb319 --- /dev/null +++ b/src/types/reference/ReferenceTypesV2.ts @@ -0,0 +1,22 @@ +// Location Reference codes are returned as an array containing one object +interface ReferenceV2_LocationReferenceCodesObject { + "3ALPHA": string; + NLC: number; + NLCDESC: string; + STANOX: string; + TIPLOC: string; + UIC: string; +}; + +export type ReferenceV2_LocationReferenceCodes = ReferenceV2_LocationReferenceCodesObject[]; + +// Reason codes are returned as an array containing one object +interface ReferenceV2_ReasonCodeObject { + code: string; + lateReason: string; + cancReason: string; +} + +export type ReferenceV2_ReasonCode = ReferenceV2_ReasonCodeObject[] + +export type ReferenceV2_LocationReferenceCodeType = "tiploc" | "crs" | "stanox" | "nlc" \ No newline at end of file diff --git a/src/types/user/UserTypesV2.ts b/src/types/user/UserTypesV2.ts new file mode 100644 index 0000000..7a7e453 --- /dev/null +++ b/src/types/user/UserTypesV2.ts @@ -0,0 +1,5 @@ +export interface UserV2_RegistrationResponse { + status: number; + message: string; + api_key: string; +} \ No newline at end of file