UNPKG

cast-web-api

Version:

Web API for Google Cast enabled devices.

94 lines (79 loc) 2.5 kB
const Exoress = require("express"); const app = module.exports = Exoress(); app.get('/device/:id/play', function (req, res) { console.log('play'); evalResults( res, res.locals.device.play() ); }); app.get('/device/:id/pause', function (req, res) { console.log('pause'); evalResults( res, res.locals.device.pause() ); }); app.get('/device/:id/stop', function (req, res) { console.log('stop'); evalResults( res, res.locals.device.stop() ); }); app.get('/device/:id/seek/:time', function (req, res) { console.log('seek'); evalResults( res, res.locals.device.seek(req.params.time) ); }); app.get('/device/:id/muted/:target', function (req, res) { console.log('muted'); evalResults( res, res.locals.device.muted(req.params.target === 'true') ); }); app.get('/device/:id/volume/:target', function (req, res) { console.log('volume'); evalResults( res, res.locals.device.volume(req.params.target/100) ); }); app.get('/device/:id/volume/:target/group', function (req, res) { console.log('volume group'); evalResults( res, res.locals.device.volumeGroup(req.params.target/100) ); }); app.get('/device/:id/image', function (req, res) { console.log('image'); res.locals.device.downloadImage() .then(image => { res.status(200); res.set('Content-Type', image.headers['content-type']); image.pipe(res); }) .catch( status => { res.status(status).end(); }) }); app.get('/device/:id/subscribe/:url', function (req, res) { console.log('subscribe'); res.locals.device.subscribe(req.params.url); res.json({ response:'ok' }); }); app.get('/device/:id/unsubscribe', function (req, res) { console.log('unsubscribe'); res.locals.device.unsubscribe(); res.json({ response:'ok' }); }); app.get('/device/:id/disconnect', function (req, res) { console.log('disconnect'); res.locals.device.disconnect(); res.json({ response:'ok' }); }); app.get('/device/:id/remove', function (req, res) { console.log('remove'); // removeDevice( req.params.id ); TODO: res.json({ response:'ok' }); }); app.post('/device/:id/playMedia', function (req, res) { console.log('playMedia: '+JSON.stringify(req.body)); res.locals.device.playMedia(req.body); res.json({ response:'ok' }); }); app.get('/device/:id/playMediaGet/:media', function (req, res) { console.log('playMediaGet'); res.locals.device.playMedia(req.params.media); res.json({ response:'ok' }); }); function evalResults(res, result) { if (result.error) { res.status(500).json(result); } else { res.json(result); } }