import axios from 'axios' import type { Album, Artist, SearchResult, Track, TrackDetail } from './types' const API_BASE = import.meta.env.VITE_API_BASE_URL ?? '' export const API_ROOT = `${API_BASE}/api` const API_KEY = import.meta.env.VITE_API_KEY export const furumiApi = axios.create({ baseURL: API_ROOT, headers: API_KEY ? { 'x-api-key': API_KEY } : {}, }) export async function getArtists(): Promise { const res = await furumiApi.get('/artists').catch(() => null) return res?.data ?? null } export async function getArtistAlbums(artistSlug: string): Promise { const res = await furumiApi.get(`/artists/${artistSlug}/albums`).catch(() => null) return res?.data ?? null } export async function getAlbumTracks(albumSlug: string): Promise { const res = await furumiApi.get(`/albums/${albumSlug}`).catch(() => null) return res?.data ?? null } export async function getArtistTracks(artistSlug: string): Promise { const res = await furumiApi.get(`/artists/${artistSlug}/tracks`).catch(() => null) return res?.data ?? null } export async function searchTracks(query: string): Promise { const res = await furumiApi .get(`/search?q=${encodeURIComponent(query)}`) .catch(() => null) return res?.data ?? null } export async function getTrackInfo(trackSlug: string): Promise { const res = await furumiApi.get(`/tracks/${trackSlug}`).catch(() => null) return res?.data ?? null } export async function preloadStream(trackSlug: string) { return await furumiApi.get(`/stream/${trackSlug}`, { responseType: 'blob' }).catch(() => null) }