From 74f96dacfb992c0e2d00683c84d8b2409b5f12bd Mon Sep 17 00:00:00 2001 From: bill bittner <bittner.w@gmail.com> Date: Thu, 8 Mar 2018 21:49:59 -0800 Subject: [PATCH] turned the server into a class --- routes/api-routes.js | 2 +- server.js | 75 ++++++++++++++++++++++---------------------- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/routes/api-routes.js b/routes/api-routes.js index 2461c316..e65d0a1c 100644 --- a/routes/api-routes.js +++ b/routes/api-routes.js @@ -14,7 +14,7 @@ const { getChannelData, getChannelClaims, getClaimId } = require('../controllers const NO_CHANNEL = 'NO_CHANNEL'; const NO_CLAIM = 'NO_CLAIM'; -module.exports = (app, siteConfig) => { +module.exports = (app) => { // route to check whether site has published to a channel app.get('/api/channel/availability/:name', ({ ip, originalUrl, params }, res) => { checkChannelAvailability(params.name) diff --git a/server.js b/server.js index 1492f94a..d3918adc 100644 --- a/server.js +++ b/server.js @@ -7,7 +7,6 @@ const { populateLocalsDotUser, serializeSpeechUser, deserializeSpeechUser } = re const { logging: { logLevel } } = require('./config/speechConfig.js'); const logger = require('winston'); const helmet = require('helmet'); -const PORT = 3000; // set port const app = express(); // create an Express application const passport = require('passport'); const cookieSession = require('cookie-session'); @@ -16,20 +15,13 @@ const cookieSession = require('cookie-session'); require('./config/loggerConfig.js')(logger, logLevel); require('./config/slackConfig.js')(logger); -module.exports = { - speak (something) { - console.log(something); - }, - start (config) { - // parse config parameter - const { mysqlConfig, siteConfig, lbrynetConfig } = config; - - // get models - const db = require('./models')(mysqlConfig); - - // check for global config variables - require('./helpers/configVarCheck.js')(config); - +function SpeechServer (config) { + this.mysqlConfig = config.mysql; + this.siteConfig = config.siteConfig; + this.lbrynetConfig = config.lbrynetConfig; + this.db = require('./models')(this.mysqlConfig); + this.PORT = 3000; + this.app = (function () { // trust the proxy to get ip address for us app.enable('trust proxy'); @@ -46,14 +38,14 @@ module.exports = { // configure passport passport.serializeUser(serializeSpeechUser); passport.deserializeUser(deserializeSpeechUser); - const localSignupStrategy = require('./passport/local-signup.js')(db); - const localLoginStrategy = require('./passport/local-login.js')(db); + const localSignupStrategy = require('./passport/local-signup.js')(this.db); + const localLoginStrategy = require('./passport/local-login.js')(this.db); passport.use('local-signup', localSignupStrategy); passport.use('local-login', localLoginStrategy); // initialize passport app.use(cookieSession({ name : 'session', - keys : [siteConfig.session.sessionKey], + keys : [this.siteConfig.session.sessionKey], maxAge: 24 * 60 * 60 * 1000, // i.e. 24 hours })); app.use(passport.initialize()); @@ -70,32 +62,39 @@ module.exports = { // middleware to pass user info back to client (for handlebars access), if user is logged in app.use(populateLocalsDotUser); // note: I don't think I need this any more? - // start the server - module.exports.startServer(db, app, siteConfig, lbrynetConfig); - }, - startServer (db, app, siteConfig, lbrynetConfig) { - db.sequelize + // set the routes on the app + require('./routes/auth-routes.js')(app); + require('./routes/api-routes.js')(app); + require('./routes/page-routes.js')(app); + require('./routes/serve-routes.js')(app); + require('./routes/fallback-routes.js')(app); + + return app; + }()); + this.server = (function () { + const http = require('http'); + return http.Server(this.app); + })(); + this.speak = (something) => { + console.log(something); + }; + this.start = () => { + // print config variables + require('./helpers/configVarCheck.js')(this.config); + this.db.sequelize // sync sequelize .sync() - // require routes - .then(() => { - require('./routes/auth-routes.js')(app, siteConfig, lbrynetConfig); - require('./routes/api-routes.js')(app, siteConfig, lbrynetConfig); - require('./routes/page-routes.js')(app, siteConfig, lbrynetConfig); - require('./routes/serve-routes.js')(app, siteConfig, lbrynetConfig); - require('./routes/fallback-routes.js')(app, siteConfig, lbrynetConfig); - const http = require('http'); - return http.Server(app); - }) // start the server - .then(server => { - server.listen(PORT, () => { - logger.info('Trusting proxy?', app.get('trust proxy')); - logger.info(`Server is listening on PORT ${PORT}`); + .then(() => { + this.server.listen(this.PORT, () => { + logger.info('Trusting proxy?', this.app.get('trust proxy')); + logger.info(`Server is listening on PORT ${this.PORT}`); }); }) .catch((error) => { logger.error(`Startup Error:`, error); }); - }, + }; }; + +module.exports = SpeechServer;