Files
website/scripts/server
T

63 lines
1.8 KiB
CoffeeScript
Executable File

#!/usr/bin/env coffee
#
# Crafting Guide - serve-build
#
# Copyright (c) 2014-2015 by Redwood Labs
# All rights reserved.
#
express = require 'express'
fs = require 'fs'
path = require 'path'
########################################################################################################################
ROOT = './dist/'
DATA_ROOT = '../crafting-guide-data'
CONTENT_TYPE = {
'.cg': 'text/plain'
'.css': 'text/css'
'.html': 'text/html'
'.js': 'text/javascript'
'.json': 'application/json'
'.map': 'application/json'
'.png': 'image/png'
'.ttf': 'application/octet-stream'
'.scss': 'text/css'
}
########################################################################################################################
app = express()
serveIndex = (request, response)->
response.set 'Content-Type', 'text/html'
filePath = "#{request.path}index.html".replace /^\//, ''
fs.stat "#{ROOT}#{filePath}", (err, stats)->
if not err?
response.sendFile filePath, root:ROOT
console.log ">>> #{filePath} (for #{request.path})"
else
response.sendFile '/app.html', root:ROOT
console.log ">>> app.html (for #{request.path})"
serveData = (request, response)->
console.log ">>> #{request.path}"
response.set 'Content-Type', CONTENT_TYPE[path.extname request.path]
response.sendFile request.path, root:DATA_ROOT
app.get '/data/*', serveData
app.get '/craft/*', serveIndex
app.get '/login', serveIndex
app.get '*/$', serveIndex
app.get '*', (request, response)->
console.log ">>> #{request.path}"
response.set 'Content-Type', CONTENT_TYPE[path.extname request.path]
response.sendFile request.path, root:ROOT
server = app.listen 8000, '127.0.0.1', ->
console.log "listening at: #{server.address().address}:#{server.address().port}"