import { defaultHttpService, getAllAcceleratorsUrl } from '../core/index.js'; import { HttpService } from '@kontent-ai/core-sdk'; import { IExportJson } from '../export/index.js'; import { IAccelerator, IAcceleratorResponse } from './accelerator-models.js'; export function getAcceleratorDataService(): AcceleratorDataService { return new AcceleratorDataService(); } export class AcceleratorDataService { private readonly httpService: HttpService = defaultHttpService; async getAllAcceleratorsAsync(): Promise { const response = await this.httpService.getAsync({ url: getAllAcceleratorsUrl }); return response.data.data.accelerators; } async getAcceleratorModelByCodenameAsync(codename: string): Promise { const item = (await this.getAllAcceleratorsAsync()).find( (m) => m.codename.toLowerCase() === codename.toLowerCase() ); if (!item) { throw Error(`Could not find accelerator model with codename '${codename}'`); } return item; } async extractJsonFromModelAsync(accelerator: IAccelerator): Promise { const assetBinaryData = await this.getBinaryDataFromUrlAsync(accelerator.exportUrl); return JSON.parse(assetBinaryData); } private async getBinaryDataFromUrlAsync(url: string): Promise { // temp fix for Kontent.ai Repository not validating url url = url.replace('#', '%23'); const response = await this.httpService.getAsync( { url }, { responseType: 'arraybuffer' } ); return response.data; } }