diff --git a/openmeet.ts b/openmeet.ts index 2a09836..c2d4ca7 100644 --- a/openmeet.ts +++ b/openmeet.ts @@ -22,6 +22,20 @@ export class OpenMeetClient { this.tokens = { ...tokens, tokenExpires: 0 }; } + private url(path: string): string { + return `${this.API_BASE}${path}`; + } + + private headers( + additionalHeaders?: RequestInit["headers"], + ): RequestInit["headers"] { + return { + "X-Tenant-Id": this.TENANT_ID, + Authorization: `Bearer ${this.tokens.token}`, + ...additionalHeaders, + }; + } + async getEvents( opts: { start: Temporal.PlainDateTime; @@ -29,18 +43,13 @@ export class OpenMeetClient { }, attempt = 1, ): Promise { - const url = new URL( - `${this.API_BASE}/api/groups/${this.GROUP_SLUG}/events`, - ); + const url = new URL(this.url(`/api/groups/${this.GROUP_SLUG}/events`)); url.searchParams.set("startDate", opts.start.toString()); url.searchParams.set("endDate", opts.end.toString()); const resp = await fetch(url, { - headers: { - "X-Tenant-Id": this.TENANT_ID, - Authorization: `Bearer ${this.tokens.token}`, - }, + headers: this.headers(), }); if (!resp.ok) { @@ -57,11 +66,8 @@ export class OpenMeetClient { } private async refreshTokens() { - const resp = await fetch(`${this.API_BASE}/api/v1/auth/refresh`, { - headers: { - Authorization: `Bearer ${this.tokens.refreshToken}`, - "X-Tenant-Id": this.TENANT_ID, - }, + const resp = await fetch(this.url("/api/v1/auth/refresh"), { + headers: this.headers(), method: "POST", body: JSON.stringify({ ...this.tokens }), });