server.coffee
author Tomas Zeman <tzeman@volny.cz>
Sun, 15 Dec 2013 17:11:37 +0100
changeset 4 cbba85b1f677
parent 3 0fa2f12fcb3c
permissions -rw-r--r--
/orders, /event, /ping, /log
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
Q = require 'q'
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
Http = require 'q-io/http'
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     3
Apps = require 'q-io/http-apps'
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     4
bunyan = require 'bunyan'
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     5
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     6
log = bunyan.createLogger {
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     7
  name: 'asa-test-server'
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     8
  level: 'debug'
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     9
}
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    10
4
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    11
noContent =
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    12
  status: 204
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    13
  headers: {}
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    14
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    15
route = Apps.Branch {
4
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    16
  ###
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    17
  'ok': (rq,rs) => {
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
    status: 200
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    19
    headers: {}
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
    data:
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    21
      result: 'ok'
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    22
      request:
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    23
        path: rq.path
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    24
        pathInfo: rq.pathInfo
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    25
      response: rs
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    26
  }
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    27
  'post': Apps.Method {
2
26148011541f Simpler POST
Tomas Zeman <tzeman@volny.cz>
parents: 1
diff changeset
    28
    'POST': Apps.JsonRequest((o, rq, rs) => {
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
      status: 200
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
      headers: {}
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    31
      data:
2
26148011541f Simpler POST
Tomas Zeman <tzeman@volny.cz>
parents: 1
diff changeset
    32
        data: o
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
        request:
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
          path: rq.path
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
          pathInfo: rq.pathInfo
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    36
        response: rs
2
26148011541f Simpler POST
Tomas Zeman <tzeman@volny.cz>
parents: 1
diff changeset
    37
    })
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    38
  }, Apps.methodNotAllowed
4
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    39
  ###
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    40
 
3
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    41
  'login': Apps.Method {
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    42
    'POST': Apps.JsonRequest((o, rq, rs) =>
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    43
      log.info("Login", o)
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    44
      {
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    45
        status: 200
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    46
        headers: {}
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    47
        data:
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    48
          configId: 'cfg1'
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    49
          sessionId: 'sess1'
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    50
      })
4
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    51
  }, Apps.methodNotAllowed
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    52
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    53
  'orders': (rq, rs) => {
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    54
    status: 200
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    55
    headers: {}
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    56
    data:
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    57
      orders: [{
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    58
          orderId: 123
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    59
          name: 'Order 1'
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    60
          description: 'Description of order 1'
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    61
        }, {
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    62
          orderId: 554
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    63
          name: 'Order 2'
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    64
          description: 'Description of order 2'
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    65
        }]
3
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    66
  }
4
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    67
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    68
  'event': Apps.Method {
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    69
    'POST': Apps.JsonRequest((o, rq, rs) =>
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    70
      log.info("Event", o)
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    71
      noContent
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    72
    )
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    73
  }, Apps.methodNotAllowed
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    74
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    75
  'ping': Apps.Method {
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    76
    'POST': Apps.JsonRequest((o, rq, rs) =>
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    77
      log.info("Ping", o)
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    78
      noContent
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    79
    )
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    80
  }, Apps.methodNotAllowed
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    81
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    82
  'log': Apps.Method {
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    83
    'POST': Apps.JsonRequest((o, rq, rs) =>
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    84
      log.info("Ping", o)
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    85
      noContent
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    86
    )
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    87
    'GET': (rq, rs) => {
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    88
      status: 200
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    89
      headers: {}
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    90
      data:
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    91
        lastLog: new Date().toISOString()
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    92
    }
cbba85b1f677 /orders, /event, /ping, /log
Tomas Zeman <tzeman@volny.cz>
parents: 3
diff changeset
    93
  }, Apps.methodNotAllowed
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    94
}
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    95
3
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    96
app = Apps.Chain()
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    97
  .use(() => Apps.Log(Apps.HandleJsonResponses(route, null, "  "),
0fa2f12fcb3c /login handler; request logging via bunyan
Tomas Zeman <tzeman@volny.cz>
parents: 2
diff changeset
    98
    (m) => log.info("Access: " + m)))
1
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    99
  .end()
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   100
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   101
Http.Server(app).listen(3000)
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   102
411d80fcd66c Imported test server.
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
   103
# vim: et ts=2 sw=2