import { BaseApiClient } from '../base/BaseApiClient'; import type { RequestAvatarGenerationInputDto, RequestAvatarGenerationOutputDto, UploadMediaInputDto, UploadMediaOutputDto, GetMediaOutputDto, DeleteMediaOutputDto, GetAvatarOutputDto, UpdateAvatarInputDto, UpdateAvatarOutputDto, } from '../../dtos'; /** * Media API Client * * Handles all media-related API operations. */ export class MediaApiClient extends BaseApiClient { /** Upload media file */ uploadMedia(input: UploadMediaInputDto): Promise { const formData = new FormData(); formData.append('file', input.file); formData.append('type', input.type); if (input.category) { formData.append('category', input.category); } return this.post('/media/upload', formData); } /** Get media by ID */ getMedia(mediaId: string): Promise { return this.get(`/media/${mediaId}`); } /** Delete media by ID */ deleteMedia(mediaId: string): Promise { return this.delete(`/media/${mediaId}`); } /** Request avatar generation */ requestAvatarGeneration(input: RequestAvatarGenerationInputDto): Promise { return this.post('/media/avatar/generate', input); } /** Get avatar for driver */ getAvatar(driverId: string): Promise { return this.get(`/media/avatar/${driverId}`); } /** Update avatar for driver */ updateAvatar(input: UpdateAvatarInputDto): Promise { return this.put(`/media/avatar/${input.driverId}`, { avatarUrl: input.avatarUrl }); } }