import { NotFoundError, RequestError } from "./errors"; export const VERSION = "v2beta"; export class Client { makeUrl(...url: string[]): string { return `/api/${VERSION}/${url.join("/")}/`; } fetch(...url: string[]): Promise { return fetch(this.makeUrl(...url)) .then((r) => { if (r.status > 300) { switch (r.status) { case 404: throw new NotFoundError(`URL ${this.makeUrl(...url)} not found`); default: throw new RequestError(r.statusText); } } return r; }) .then((r) => r.json()) .then((r) => r); } } export const DefaultClient = new Client(); export interface PBResponse { count: number; next: string; previous: string; results: Array; }