@spotable/attio-sdk
Version:
Client for Attio REST API
37 lines (32 loc) • 1.24 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateBaseFetcher = generateBaseFetcher;
const fs_1 = require("../../helpers/fs");
const fileHeader_1 = require("../types/fileHeader");
const FILE_NAME = "base.ts";
function generateBaseFetcher(outputDir) {
const content = `${(0, fileHeader_1.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);
}
}
`;
(0, fs_1.writeGeneratedFile)(outputDir, FILE_NAME, content);
}
//# sourceMappingURL=baseFetcher.js.map