Sindbad~EG File Manager
import VideoAbstract from './abstract';
import Uploader from '../uploader';
/**
* VideoFile class.
* @class VideoFile
*/
export default class VideoFile extends VideoAbstract {
/**
* Fetch video information.
* @return {Promise}
*/
fetch() {
return new Promise((resolve, reject) => {
if (this.data) {
resolve(this.data);
} else {
this.validate()
.then(() => {
this.upload()
.then(data => {
this.data = _.extend({}, data, {
html: `<iframe src="${data.link}embed" />`
});
resolve(this.data);
})
.catch(error => {
reject(error);
});
})
.catch(error => {
reject(error);
});
}
});
}
/**
* Validate video file to be uploaded.
* @returns {Promise}
*/
validate() {
return new Promise((resolve, reject) => {
let file = this.source.files[0],
params = { type: file.type, size: parseInt(file.size), is_audio: 1 };
peepso.postJson('videosajax.validate_video_upload', params, json => {
if (json && json.success) {
resolve();
} else {
reject(json && json.errors && json.errors[0]);
}
});
});
}
/**
* Upload video file.
* @returns {Promise}
*/
upload() {
return new Promise((resolve, reject) => {
let uploader = new Uploader(this.source, { data: { is_audio: 1 } });
uploader.on('progress', percent => {
this.emit('progress', percent);
});
uploader
.upload()
.then(data => {
resolve(data);
})
.catch(error => {
reject(error);
});
});
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists