import apiClient from './client' import { getApiUrl } from '@/lib/config' import { PodcastEpisode, EpisodeProfile, SpeakerProfile, PodcastGenerationRequest, PodcastGenerationResponse, } from '@/lib/types/podcasts' export type EpisodeProfileInput = Omit export type SpeakerProfileInput = Omit export async function resolvePodcastAssetUrl(path?: string | null): Promise { if (!path) { return undefined } if (/^https?:\/\//i.test(path)) { return path } const base = await getApiUrl() if (path.startsWith('/')) { return `${base}${path}` } return `${base}/${path}` } export const podcastsApi = { listEpisodes: async () => { const response = await apiClient.get('/podcasts/episodes') return response.data }, deleteEpisode: async (episodeId: string) => { await apiClient.delete(`/podcasts/episodes/${episodeId}`) }, listEpisodeProfiles: async () => { const response = await apiClient.get('/episode-profiles') return response.data }, createEpisodeProfile: async (payload: EpisodeProfileInput) => { const response = await apiClient.post( '/episode-profiles', payload ) return response.data }, updateEpisodeProfile: async (profileId: string, payload: EpisodeProfileInput) => { const response = await apiClient.put( `/episode-profiles/${profileId}`, payload ) return response.data }, deleteEpisodeProfile: async (profileId: string) => { await apiClient.delete(`/episode-profiles/${profileId}`) }, duplicateEpisodeProfile: async (profileId: string) => { const response = await apiClient.post( `/episode-profiles/${profileId}/duplicate` ) return response.data }, listSpeakerProfiles: async () => { const response = await apiClient.get('/speaker-profiles') return response.data }, createSpeakerProfile: async (payload: SpeakerProfileInput) => { const response = await apiClient.post( '/speaker-profiles', payload ) return response.data }, updateSpeakerProfile: async (profileId: string, payload: SpeakerProfileInput) => { const response = await apiClient.put( `/speaker-profiles/${profileId}`, payload ) return response.data }, deleteSpeakerProfile: async (profileId: string) => { await apiClient.delete(`/speaker-profiles/${profileId}`) }, duplicateSpeakerProfile: async (profileId: string) => { const response = await apiClient.post( `/speaker-profiles/${profileId}/duplicate` ) return response.data }, generatePodcast: async (payload: PodcastGenerationRequest) => { const response = await apiClient.post( '/podcasts/generate', payload ) return response.data }, }