UNPKG

@spotable/attio-sdk

Version:
37 lines (28 loc) 1.08 kB
import { writeGeneratedFile } from "../../helpers/fs"; import { generateFileHeader } from "../types/fileHeader"; const FILE_NAME = "base.ts"; export function generateBaseFetcher(outputDir: string): void { const content = `${generateFileHeader(FILE_NAME)} import { Response } from "node-fetch"; import { AttioClient } from "../attioClient"; import { AttioAttributeValue } from "../types"; export class HTTPResponseError extends Error { constructor(public response: Response) { super(\`HTTP Error Response: $\{response.status} $\{response.statusText}\`); this.response = response; } } export abstract class BaseFetcher { constructor(protected readonly client: AttioClient) {} protected abstract createBaseUrl(...args: any[]): string; protected async extractData<R>(responsePromise: Promise<Response>): Promise<R> { const response = await responsePromise; if (response.ok) { return (await response.json() as { data: R; }).data as R; } throw new HTTPResponseError(response); } } `; writeGeneratedFile(outputDir, FILE_NAME, content); }