import { NewFileUploads } from '.'; import ApiClient from './ApiClient'; import { mapFileUploadResponse, mapNewFileUploadsResponse, } from './FileUploadUtils'; import * as F from './types/Font'; import urls from './urls'; export const mapFontResponse = (font: F.FontResponse): F.Font => ({ id: font.id, name: font.name, weight: font.weight, fileUpload: mapFileUploadResponse(font.file_upload), }); export default class FontClient { async getFonts(this: ApiClient): Promise { const data = await this.requestProtected< F.GetFontsRequest, F.GetFontsResponse >({ method: 'GET', url: urls.fonts(), }); return data.map(mapFontResponse); } async createFont( this: ApiClient, data: F.CreateFontUploaderRequest, ): Promise<[F.Font, NewFileUploads]> { const { font, file_uploads } = await this.requestProtected< F.CreateFontUploaderRequest, F.CreateFontUploaderResponse >({ method: 'POST', url: urls.fonts(), body: data, }); return [mapFontResponse(font), mapNewFileUploadsResponse(file_uploads)]; } }