Split utils file
[oweals/peertube.git] / server.js
index 3f68fff1857f32bd30bc3f25801b8fb75b9dfda3..b8674b0b52c80b6e30a7cac8722818ee2ca131c1 100644 (file)
--- a/server.js
+++ b/server.js
@@ -1,23 +1,21 @@
 ;(function () {
   'use strict'
 
-  // ----------- Constantes -----------
-  global.API_VERSION = 'v1'
-
   // ----------- Node modules -----------
+  var bodyParser = require('body-parser')
   var express = require('express')
   var expressValidator = require('express-validator')
-  var path = require('path')
+  var http = require('http')
   var morgan = require('morgan')
-  var bodyParser = require('body-parser')
-  var multer = require('multer')
+  var path = require('path')
   var TrackerServer = require('bittorrent-tracker').Server
   var WebSocketServer = require('ws').Server
+
+  // Create our main app
   var app = express()
-  var http = require('http')
 
   // ----------- Checker -----------
-  var checker = require('./src/checker')
+  var checker = require('./initializers/checker')
 
   var miss = checker.checkConfig()
   if (miss.length !== 0) {
     process.exit(0)
   }
 
-  checker.createDirectories()
+  checker.createDirectoriesIfNotExist()
 
   // ----------- PeerTube modules -----------
   var config = require('config')
-  var logger = require('./src/logger')
-  var routes = require('./routes')
-  var utils = require('./src/utils')
-  var videos = require('./src/videos')
-  var webtorrent = require('./src/webTorrentNode')
-
+  var constants = require('./initializers/constants')
+  var customValidators = require('./helpers/customValidators')
+  var database = require('./initializers/database')
+  var logger = require('./helpers/logger')
+  var peertubeCrypto = require('./helpers/peertubeCrypto')
+  var poolRequests = require('./lib/poolRequests')
+  var routes = require('./controllers')
+  var utils = require('./helpers/utils')
+  var videos = require('./lib/videos')
+  var webtorrent = require('./lib/webTorrentNode')
+
+  // Get configurations
   var port = config.get('listen.port')
-  var uploads = config.get('storage.uploads')
+
+  // ----------- Database -----------
+  database.connect()
 
   // ----------- Command line -----------
 
   // ----------- App -----------
+
+  // For the logger
   app.use(morgan('combined', { stream: logger.stream }))
+  // For body requests
   app.use(bodyParser.json())
-  app.use(multer({ dest: uploads }))
   app.use(bodyParser.urlencoded({ extended: false }))
-  app.use(expressValidator())
+  // Validate some params for the API
+  app.use(expressValidator({
+    customValidators: customValidators
+  }))
 
   // ----------- Views, routes and static files -----------
 
     port: 35729
   }))
 
+  // Catch sefaults
   require('segfault-handler').registerHandler()
 
+  // Static files
   app.use(express.static(path.join(__dirname, '/public'), { maxAge: 0 }))
 
   // Jade template from ./views directory
   app.set('views', path.join(__dirname, '/views'))
   app.set('view engine', 'jade')
 
-  // API
-  var api_route = '/api/' + global.API_VERSION
+  // API routes
+  var api_route = '/api/' + constants.API_VERSION
   app.use(api_route, routes.api)
 
   // Views routes
   // Prod : no stacktraces leaked to user
   if (process.env.NODE_ENV === 'production') {
     app.use(function (err, req, res, next) {
-      logger.error('Error : ' + err.message, { error: err })
+      logger.error(err)
       res.status(err.status || 500)
       res.render('error', {
         message: err.message,
     })
   } else {
     app.use(function (err, req, res, next) {
-      logger.error('Error : ' + err.message, { error: err })
+      logger.error(err)
       res.status(err.status || 500)
       res.render('error', {
         message: err.message,
   }
 
   // ----------- Create the certificates if they don't already exist -----------
-  utils.createCertsIfNotExist(function (err) {
+  peertubeCrypto.createCertsIfNotExist(function (err) {
     if (err) throw err
     // Create/activate the webtorrent module
     webtorrent.create(function () {
 
       // ----------- Make the server listening -----------
       server.listen(port, function () {
-        videos.seedAll(function () {
+        // Activate the pool requests
+        poolRequests.activate()
+
+        videos.seedAllExisting(function () {
           logger.info('Seeded all the videos')
           logger.info('Server listening on port %d', port)
           app.emit('ready')