Q = require 'q'
Http = require 'q-io/http'
Apps = require 'q-io/http-apps'
bunyan = require 'bunyan'
log = bunyan.createLogger {
name: 'asa-test-server'
level: 'debug'
}
noContent =
status: 204
headers: {}
route = Apps.Branch {
###
'ok': (rq,rs) => {
status: 200
headers: {}
data:
result: 'ok'
request:
path: rq.path
pathInfo: rq.pathInfo
response: rs
}
'post': Apps.Method {
'POST': Apps.JsonRequest((o, rq, rs) => {
status: 200
headers: {}
data:
data: o
request:
path: rq.path
pathInfo: rq.pathInfo
response: rs
})
}, Apps.methodNotAllowed
###
'login': Apps.Method {
'POST': Apps.JsonRequest((o, rq, rs) =>
log.info("Login", o)
{
status: 200
headers: {}
data:
configId: 'cfg1'
sessionId: 'sess1'
})
}, Apps.methodNotAllowed
'orders': (rq, rs) => {
status: 200
headers: {}
data:
orders: [{
orderId: 123
name: 'Order 1'
description: 'Description of order 1'
}, {
orderId: 554
name: 'Order 2'
description: 'Description of order 2'
}]
}
'event': Apps.Method {
'POST': Apps.JsonRequest((o, rq, rs) =>
log.info("Event", o)
noContent
)
}, Apps.methodNotAllowed
'ping': Apps.Method {
'POST': Apps.JsonRequest((o, rq, rs) =>
log.info("Ping", o)
noContent
)
}, Apps.methodNotAllowed
'log': Apps.Method {
'POST': Apps.JsonRequest((o, rq, rs) =>
log.info("Ping", o)
noContent
)
'GET': (rq, rs) => {
status: 200
headers: {}
data:
lastLog: new Date().toISOString()
}
}, Apps.methodNotAllowed
}
app = Apps.Chain()
.use(() => Apps.Log(Apps.HandleJsonResponses(route, null, " "),
(m) => log.info("Access: " + m)))
.end()
Http.Server(app).listen(3000)
# vim: et ts=2 sw=2