/** @file * @author Edouard DUPIN * @copyright 2018, Edouard DUPIN, all right reserved * @license PROPRIETARY (see license file) */ import { Injectable } from '@angular/core'; import { HttpWrapperService } from './http-wrapper'; import { BddService } from './bdd'; import { DataInterface } from './dataInterface'; @Injectable() export class VideoService { // 0: Not hide password; 1 hide password; private identificationVersion: number = 1; private serviceName:string = 'video'; constructor(private http: HttpWrapperService, private bdd: BddService) { console.log('Start VideoService'); } get(id:number):any { let self = this; return new Promise((resolve, reject) => { self.bdd.get(this.serviceName) .then((response: DataInterface) => { let data = response.get(id); if(data === null || data === undefined) { reject('Data does not exist in the local BDD'); return; } resolve(data); }).catch((response) => { reject(response); }); }); } put(id:number, data:any):any { let ret = this.http.putSpecific(this.serviceName, id, data); return this.bdd.setAfterPut(this.serviceName, id, ret); } delete(id:number):any { let ret = this.http.deleteSpecific(this.serviceName, id); return this.bdd.delete(this.serviceName, id, ret); } getCoverUrl(coverId:number):any { return this.http.createRESTCall2({ api: `data/${coverId}`, addURLToken: true, }); } getCoverThumbnailUrl(coverId:number):any { return this.http.createRESTCall2({ api: `data/thumbnail/${coverId}`, addURLToken: true, }); } uploadFile(file:File, universe?:string, series?:string, seriesId?:number, season?:number, episode?:number, title?:string, typeId?:number, progress:any = null) { const formData = new FormData(); formData.append('fileName', file.name); // set the file at hte begining it will permit to abort the transmission formData.append('file', file?? null); formData.append('universe', universe?? null); if(seriesId !== null) { formData.append('seriesId', seriesId.toString()); } else { formData.append('seriesId', null); } formData.append('series', series?? null); if(season !== null) { formData.append('season', season.toString()); } else { formData.append('season', null); } if(episode !== null) { formData.append('episode', episode.toString()); } else { formData.append('episode', null); } formData.append('title', title?? null); if(typeId !== null) { formData.append('typeId', typeId.toString()); } else { formData.append('typeId', null); } return this.http.uploadMultipart(`${this.serviceName }/upload/`, formData, progress); } deleteCover(mediaId:number, coverId:number) { let self = this; return new Promise((resolve, reject) => { self.http.getSpecific(`${this.serviceName }/${ mediaId }/rm_cover`, coverId) .then((response) => { let data = response; if(data === null || data === undefined) { reject('error retrive data from server'); return; } self.bdd.asyncSetInDB(self.serviceName, mediaId, data); resolve(data); }).catch((response) => { reject(response); }); }); } uploadCover(file:File, mediaId:number, progress:any = null) { const formData = new FormData(); formData.append('fileName', file.name); formData.append('id', mediaId.toString()); formData.append('file', file); let self = this; return new Promise((resolve, reject) => { self.http.uploadMultipart(`${this.serviceName }/${ mediaId }/add_cover/`, formData, progress) .then((response) => { let data = response; if(data === null || data === undefined) { reject('error retrive data from server'); return; } self.bdd.asyncSetInDB(self.serviceName, mediaId, data); resolve(data); }).catch((response) => { reject(response); }); }); } uploadCoverBlob(blob:Blob, mediaId:number, progress:any = null) { const formData = new FormData(); formData.append('fileName', 'take_screenshoot'); formData.append('typeId', mediaId.toString()); formData.append('file', blob); let self = this; return new Promise((resolve, reject) => { self.http.uploadMultipart(`${this.serviceName }/${ mediaId }/add_cover/`, formData, progress) .then((response) => { let data = response; if(data === null || data === undefined) { reject('error retrive data from server'); return; } self.bdd.asyncSetInDB(self.serviceName, mediaId, data); resolve(data); }).catch((response) => { reject(response); }); }); } }