170 lines
4.7 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|