Skip to content

Commit

Permalink
web: Initial skeleton HTTP server
Browse files Browse the repository at this point in the history
  • Loading branch information
jonnor committed Apr 4, 2017
1 parent c94a0d8 commit 575adda
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 1 deletion.
1 change: 1 addition & 0 deletions config.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = {}
8 changes: 8 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
require('coffee-script/register');
var app = require('./src/app');

var port = process.env.PORT || 6666;
app.startServer(port).asCallback(function(err) {
if (err) throw err
console.log('Running on port', port);
});
11 changes: 10 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,14 @@
"bugs": {
"url": "https://github.com/msgflo/msgflo-example-imageresize/issues"
},
"homepage": "https://github.com/msgflo/msgflo-example-imageresize#readme"
"homepage": "https://github.com/msgflo/msgflo-example-imageresize#readme",
"dependencies": {
"amqplib": "^0.5.1",
"bluebird": "^3.5.0",
"body-parser": "^1.17.1",
"coffee-script": "^1.12.4",
"express": "^4.15.2",
"msgflo": "^0.10.7",
"msgflo-nodejs": "^0.10.1"
}
}
57 changes: 57 additions & 0 deletions src/app.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
express = require 'express'
bluebird = require 'bluebird'
bodyParser = require 'body-parser'
debug = require('debug')('msgflo-imageresize:web')

config = require '../config'
errors = require './errors'

routes = {}
routes.getJob = (req, res, next, jobId) ->
return next()

routes.resizeImages = (req, res, next) ->
return next()

setupApp = (app) ->
app.use bodyParser.json
limit: '1mb'

# API routes
app.post '/resize/', routes.resizeImages
app.get '/job/:id', routes.getJob

# 404 handler
app.use (req, res, next) ->
next new errors.HttpError "#{req.path} not found", 404
return

# Error handler
app.use (err, req, res, next) ->
debug 'error handler', err

unless err.type is 'HttpError'
# Convert regular errors to HTTP errors
err = new errors.HttpError err.message, 500
res.status err.code
res.json
message: err.message
errors: err.errors if err.errors?
return

return app

startWeb = (port) ->
# Expose extra Bluebird methods
bluebird.resolve().then () ->
# wrapped for Exception safety
app = express()
app = setupApp app
return new Promise (resolve, reject) ->
app.server = app.listen port, (err) ->
return reject err if err
return resolve app

exports.startServer = (port) ->
return startWeb port

8 changes: 8 additions & 0 deletions src/errors.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class HttpError extends Error
type: 'HttpError'
constructor: (message, code = 500) ->
@code = code
@message = message
super message

exports.HttpError = HttpError

0 comments on commit 575adda

Please sign in to comment.