| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { Converted } from '../api/links';
-
- const uploadedPath = '/home/kod3/projects/SoundWave/uploaded/';
-
- Router.route('/');
-
- Router.route("/:type/batch/:ids", function() {
- const fs = Meteor.npmRequire('fs');
- const path = Meteor.npmRequire('path');
-
- let { type, ids } = this.params;
- ids = ids.split(',');
- let file = (type === 'mp3' ? 'audio' : 'video');
- let videos = Converted.find({ id: { $in: ids } }).fetch();
- if (!videos.length) {
- this.response.writeHead(404);
- this.response.end("Files not found");
- } else {
- let zip = new JSZip();
- _.each(videos, video => zip.file(video[file], fs.readFileSync(path.resolve(uploadedPath, video[file]))));
- this.response.setHeader("Content-Type", "application/octet-stream");
- this.response.setHeader("Content-disposition", `attachment; filename=soundwave-${type}.zip`);
- this.response.writeHead(200);
- this.response.end(zip.generate({ type: "nodebuffer", compression: "DEFLATE" }));
- }
- }, { where: 'server'});
-
-
- Router.route("/:type/:id", function() {
- const fs = Meteor.npmRequire('fs');
- const path = Meteor.npmRequire('path');
-
- let { type, id } = this.params;
- let file = (type === 'mp3' ? 'audio' : 'video');
- let video = Converted.findOne({ id: id });
-
- if (!video) {
- this.response.writeHead(404);
- this.response.end("File not found");
- } else {
- const filePath = path.resolve(uploadedPath, video[file]);
- let stat = fs.statSync(filePath);
- this.response.writeHead(200, {
- 'Content-Type': (type === 'mp3' ? 'audio/mpeg' : 'video/mp4'),
- 'Content-Length': stat.size
- });
- fs.createReadStream(filePath).pipe(this.response);
- }
- }, { where: 'server'});
|