import $api from '@/http'; import { AxiosResponse } from 'axios'; import { VideoResponse, VideosResponse } from '@/models/response/VideoResponse'; import { IVideoReq } from '@/models/IVideo'; export default class VideoService { static async Create({ name, videoHQ, videoLQ, playlist, artist }: IVideoReq, setUploadProgress: (value: number) => void): Promise> { const formData = new FormData(); formData.append("name", name); videoHQ && formData.append("videoHQ", videoHQ[0]); videoLQ && formData.append("videoLQ", videoLQ[0]); formData.append("playlist", playlist ?? ''); formData.append("artist", artist); return $api.post('/video', formData, { withCredentials: true, onUploadProgress: function(progressEvent) { if(progressEvent.total) { const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total) setUploadProgress(percentCompleted); } } }) } static async GetAll({ page, search }: {page?: number, search?: string}): Promise> { return $api.get('/video', {withCredentials: true, params: {page, search}}) } static async GetOne(): Promise> { return $api.get('/video/random', {withCredentials: true}); } static async Edit(_id: string, { name, videoHQ, videoLQ, playlist, artist }: IVideoReq): Promise> { return $api.put('/video/'+_id, {name, videoHQ, videoLQ, playlist, artist}, {withCredentials: true}) } static async Delete(_id: string): Promise> { return $api.delete('/video/'+_id, {withCredentials: true}) } }