-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.js
82 lines (67 loc) · 2.5 KB
/
routes.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const express = require('express')
const fs = require('fs')
const getStat = require('util').promisify(fs.stat);
const path = require('path')
const multer = require('multer');
const uploadConfig = require('./src/config/upload');
const ArtistaControler = require('./src/controlers/ArtistaControler');
const MusicaControler = require('./src/controlers/MusicaControler');
const upload = multer(uploadConfig);
const routes = express.Router()
// HOME
routes.get('/', (req, res) => {
return res.sendFile(path.resolve(__dirname, "public", "main.html"))
})
routes.get('/upload', (req, res) => {
return res.sendFile(path.resolve(__dirname, "public", "upload.html"))
})
routes.get('/upload/artista', (req, res) => {
return res.sendFile(path.resolve(__dirname, "public", "artista.html"))
})
routes.get('/upload/musica', (req, res) => {
return res.sendFile(path.resolve(__dirname, "public", "musica.html"))
})
routes.get('/list', (req, res) => {
const musicas = fs.readdirSync(path.resolve(__dirname, "tmp"))
return res.json(musicas)
})
routes.get('/audio/:track', async (req, res) => {
const { track } = req.params
//console.log(track)
const stat = await getStat(path.resolve(__dirname, "tmp", "music", track));
const highWaterMark = 128;
//console.log(stat.size)
res.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size,
'Accept-Ranges': 'bytes',
});
const stream = fs.createReadStream(path.resolve(__dirname, "tmp", "music", track), { highWaterMark });
// só exibe quando terminar de enviar tudo
stream.on('end', () => console.log('acabou'));
// faz streaming do audio
stream.pipe(res);
});
// CONTROLER ARTISTA
// create
routes.post("/artista", upload.single('cover'), ArtistaControler.store);
// update
routes.put("/artista/:artistaId", upload.single('cover'), ArtistaControler.update);
// delete
routes.delete("/artista/:artistaId", ArtistaControler.delete);
// show
routes.get("/artista/:artistaId", ArtistaControler.show);
// index
routes.get("/artista", ArtistaControler.index);
// CONTROLER MUSICA
// create
routes.post("/musica", upload.fields([{ name: 'music', maxCount: 1 }, { name: 'cover', maxCount: 1 }]), MusicaControler.store);
// update
routes.put("/musica/:musicaId", MusicaControler.update);
// delete
routes.delete("/musica/:musicaId", MusicaControler.delete);
// show
routes.get("/musica/:musicaId", MusicaControler.show);
// index
routes.get("/musica", MusicaControler.index);
module.exports = routes;