170 lines
4.7 KiB
TypeScript

/** @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);
});
});
}
}