# node libraries
bodyParser = (require 'body-parser')
express = (require 'express')
sharedSession = (require 'express-socket.io-session')
helmet = (require 'helmet')
http = (require 'http')
path = (require 'path')

# my libraries
FFTCGSOCKET = (require './inc/socket')
FFTCGSESSION = (require './inc/session')
FFTCGROUTER = (require './inc/router')
FFTCGLOG = new (require './inc/console')('FFTCG')

# express framework
app = express()
app.use helmet()
app.use bodyParser.urlencoded
  extended: true

# sessions
sessionMiddleware = FFTCGSESSION(app)
app.use sessionMiddleware

# routes
app.use FFTCGROUTER

# socket.io
web = http.Server app
socket = new FFTCGSOCKET web, sharedSession sessionMiddleware

# Create server
web.listen 3000, ->
  FFTCGLOG.log 'Listening on port 3000 ...'

# Handle termination
process.on 'SIGINT', ->
  socket.close()
  FFTCGLOG.log 'shutting down after SIGINT'
  process.exit()
