import type { DeleteMediaOutputDTO } from '../../types/generated/DeleteMediaOutputDTO'; import type { GetAvatarOutputDTO } from '../../types/generated/GetAvatarOutputDTO'; import type { GetMediaOutputDTO } from '../../types/generated/GetMediaOutputDTO'; import type { RequestAvatarGenerationInputDTO } from '../../types/generated/RequestAvatarGenerationInputDTO'; import type { RequestAvatarGenerationOutputDTO } from '../../types/generated/RequestAvatarGenerationOutputDTO'; import type { UpdateAvatarInputDTO } from '../../types/generated/UpdateAvatarInputDTO'; import type { UpdateAvatarOutputDTO } from '../../types/generated/UpdateAvatarOutputDTO'; import type { UploadMediaOutputDTO } from '../../types/generated/UploadMediaOutputDTO'; import type { ValidateFaceInputDTO } from '../../types/generated/ValidateFaceInputDTO'; import type { ValidateFaceOutputDTO } from '../../types/generated/ValidateFaceOutputDTO'; import { BaseApiClient } from '../base/BaseApiClient'; /** * Media API Client * * Handles all media-related API operations. */ export class MediaApiClient extends BaseApiClient { /** Upload media file */ uploadMedia(input: { file: File; type: string; category?: string }): 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 }); } /** Validate face photo for avatar generation */ validateFacePhoto(input: ValidateFaceInputDTO): Promise { return this.post('/media/avatar/validate-face', input); } }