aboutsummaryrefslogtreecommitdiff
path: root/lib/dead_drop.js
diff options
context:
space:
mode:
authorRubén Beltrán del Río <ben@nsovocal.com>2017-02-18 23:14:20 -0600
committerGitHub <noreply@github.com>2017-02-18 23:14:20 -0600
commit7404eac982a0d928866aeddaa1a0ea4d1f2d3870 (patch)
tree3834c528f1f88b52fcb33cc5025c6c7522bf21c7 /lib/dead_drop.js
parent5e981bca19ace2a7704f267175b6aa368e63bda0 (diff)
Handle Menus and Store / Recall recordings (#2)
* Update calls for menu parsing in paw * Add twilio and bodyparser dependencies * Integrate menu routes * Add redirects to all menu selections. * Add pause to menu message * Update paw to handle all recordings cases * Add rec menu handler, recordings dummy handler * Add redis related configs * Add redis node module * Add missing comma to config * Remove dangling comma from config * Update paw to validate input * Add post validation dependencies * Update yarn lock * Store recordings in redis * Say post id in spanish * Use the word for the pound sign * Use a timestamp shifted by 2 and truncated to 10
Diffstat (limited to 'lib/dead_drop.js')
-rw-r--r--lib/dead_drop.js72
1 files changed, 37 insertions, 35 deletions
diff --git a/lib/dead_drop.js b/lib/dead_drop.js
index 1ea86e8..6f97645 100644
--- a/lib/dead_drop.js
+++ b/lib/dead_drop.js
@@ -1,8 +1,13 @@
'use strict';
const Koa = require('koa');
+const KoaBodyParser = require('koa-bodyparser');
const KoaRoute = require('koa-route');
+const MainMenuController = require('./controllers/main_menu');
+const RecordingMenuController = require('./controllers/recording_menu');
+const RecordingsController = require('./controllers/recordings');
+
const internals = {};
/**
@@ -42,60 +47,57 @@ module.exports = internals.DeadDrop = class DeadDrop {
this._app = Koa();
- this._app.use(KoaRoute.get('/menus/main', function * () {
-
- this.body = 'I will return the main menu.';
- }));
-
- this._app.use(KoaRoute.post('/menus/main', function * () {
+ this._app.use(KoaBodyParser());
- this.body = 'I will parse the main menu.';
- }));
+ this._initializeMainMenuRoutes();
+ this._initializeRecordingMenuRoutes();
+ this._initializeRecordingsRoutes();
- this._app.use(KoaRoute.get('/menus/recording', function * () {
+ this._app.use(function * () {
- this.body = 'I will return the select recording menu.';
- }));
+ this.body = 'How did you get here? Shoo!';
+ });
- this._app.use(KoaRoute.post('/menus/recording', function * () {
+ }
- this.body = 'I will parse the select recording menu.';
- }));
+ // Starts listening
- this._app.use(KoaRoute.get('/recordings', function * () {
+ _startServer() {
- this.body = 'I will initiate recording process';
- }));
+ this._app.listen(this.port);
+ }
- this._app.use(KoaRoute.post('/recordings', function * () {
+ // Initializes the main menu routes.
- this.body = 'I will create a new recording';
- }));
+ _initializeMainMenuRoutes() {
- this._app.use(KoaRoute.get('/recordings/:id', function * (id) {
+ const mainMenuController = new MainMenuController();
- id = parseInt(id);
+ this._app.use(KoaRoute.get('/menus/main', mainMenuController.serveMenu()));
+ this._app.use(KoaRoute.post('/menus/main', mainMenuController.parseMenuSelection()));
+ }
- if (id === 0) {
- this.body = 'I will return a random recording';
- }
- else {
- this.body = 'I will return a specific recording';
- }
- }));
+ // Initializes the recording menu routes.
- this._app.use(function * () {
+ _initializeRecordingMenuRoutes() {
- this.body = 'hello, world';
- });
+ const recordingMenuController = new RecordingMenuController();
+ this._app.use(KoaRoute.get('/menus/recording', recordingMenuController.serveMenu()));
+ this._app.use(KoaRoute.post('/menus/recording', recordingMenuController.parseMenuSelection()));
}
- // Starts listening
+ // Initializes the recordings routes.
- _startServer() {
+ _initializeRecordingsRoutes() {
- this._app.listen(this.port);
+ const recordingsController = new RecordingsController({
+ redis: this.redis
+ });
+
+ this._app.use(KoaRoute.get('/recordings', recordingsController.startRecording()));
+ this._app.use(KoaRoute.post('/recordings', recordingsController.saveRecording()));
+ this._app.use(KoaRoute.get('/recordings/:id', recordingsController.getRecording()));
}
// Prints the banner.