Files
keppler/site/app.class.js
T
2016-06-03 00:59:45 +02:00

125 lines
2.4 KiB
JavaScript

'use strict'
// Dependencies
let express = require( 'express' ),
helmet = require( 'helmet' ),
http = require( 'http' ),
socket_io = require( 'socket.io' ),
colors = require( 'colors' ),
ip = require( 'ip' ),
util = require( 'util' ),
Projects = require( './models/projects.class.js' )
/**
* App class
*/
class App
{
/**
* Constructor
*/
constructor( _options )
{
this.set_options( _options )
this.set_models()
this.set_express()
this.set_server()
this.set_socket()
}
/**
* Set models
*/
set_models()
{
// Set up
this.projects = new Projects()
// Tests
var project = this.projects.create_project( 'test' )
// project.create_folder( 'toto' )
// project.get_folder( 'toto//tutu/tete', true )
// project.create_file( 'coucou/coco.txt', 'content 0' )
// project.update_file( 'toto/tutu/tete/tutu.txt', 'content 1' )
// project.update_file( 'toto/tata/lorem.txt', 'content 2' )
// project.update_file( 'toto/tata/ipsum.txt', 'content 3' )
// project.delete_folder( 'toto/tutu', true )
// project.delete_file( 'toto/tata/ipsum.txt' )
console.log( util.inspect( project, { depth: null, colors: true } ) )
}
/**
* Set options
*/
set_options( _options )
{
// No option
if( typeof _options !== 'object' )
_options = {}
if( typeof _options.port === 'undefined' )
_options.port = 3000
// Save
this.options = _options
}
/**
* Set express
* Start express and set controllers
*/
set_express()
{
// Set up
this.express = express()
this.express.use( helmet() )
// Controllers
this.express.use( '/codes', require( './controllers/index.js' ) )
}
/**
* Set server
*/
set_server()
{
// Set up
this.server = http.createServer( this.express )
// Start
this.server.listen( this.options.port, () =>
{
// URL
let url = 'http://' + ip.address() + ':' + this.options.port
console.log( colors.green( '---------------------------' ) )
console.log( 'server'.green.bold + ' - ' + 'started'.cyan )
console.log( 'server'.green.bold + ' - ' + url.cyan )
} )
}
/**
* Set socket
*/
set_socket()
{
// Set up
this.io = socket_io.listen( this.server )
// Connection event
this.io.on( 'connection', ( socket ) =>
{
console.log( 'socket'.green.bold + ' - ' + 'connect'.cyan + ' - ' + socket.id.cyan )
socket.on( 'start_project', ( data ) =>
{
} )
} )
}
}
module.exports = App