UNPKG

@tsavo/creatify-api-ts

Version:

TypeScript client for the Creatify AI API

66 lines (57 loc) 2.03 kB
import { CreatifyApiOptions } from '../types'; import { Musics } from '../types'; import { ICreatifyApiClient } from '../types/api-client'; import { apiClientFactory } from '../client-factory'; /** * Client for interacting with the Creatify Musics API * @see https://creatify.mintlify.app/api-reference/musics */ export class MusicsApi { private client: ICreatifyApiClient; /** * Create a new MusicsApi instance * @param options API client options * @param clientFactory Optional factory for creating API clients (useful for testing) */ constructor(options: CreatifyApiOptions, clientFactory = apiClientFactory) { this.client = clientFactory.createClient(options); } /** * Get a list of all available music categories * @returns Promise resolving to an array of music categories * @see https://creatify.mintlify.app/api-reference/musics/get-api-music-categories */ async getMusicCategories(): Promise<Musics.MusicCategory[]> { try { const categories = await this.client.get<Musics.MusicCategory[]>('/api/music_categories/'); // Ensure categories is an array if (!Array.isArray(categories)) { return []; } return categories; } catch (error) { console.error('Error fetching music categories:', error); return []; } } /** * Get a list of all available music tracks * @param category Optional category to filter by * @returns Promise resolving to an array of music tracks * @see https://creatify.mintlify.app/api-reference/musics/get-api-musics */ async getMusics(category?: string): Promise<Musics.MusicTrack[]> { try { const params = category ? { category } : undefined; const tracks = await this.client.get<Musics.MusicTrack[]>('/api/musics/', params); // Ensure tracks is an array if (!Array.isArray(tracks)) { return []; } return tracks; } catch (error) { console.error('Error fetching music tracks:', error); return []; } } }