1 | 'use strict'
|
2 |
|
3 | _ = require 'underscore'
|
4 | path = require 'path'
|
5 | restify = require 'restify'
|
6 | generator = require './generator'
|
7 | JaySchema = require 'jayschema'
|
8 | jaySchema = new JaySchema
|
9 |
|
10 | create = (config) ->
|
11 | files = config.files or []
|
12 |
|
13 | port = config.port or 4321
|
14 |
|
15 | forceError = !!config.forceError
|
16 |
|
17 | errorCode = config.errorCode or 500
|
18 |
|
19 | server = restify.createServer
|
20 | name: 'mock server'
|
21 | version: '0.0.1'
|
22 | server.use restify.acceptParser server.acceptable
|
23 | server.use restify.queryParser()
|
24 | server.use restify.bodyParser()
|
25 | server.use restify.CORS()
|
26 | server.use restify.jsonp()
|
27 | server.use restify.gzipResponse()
|
28 | files.forEach (file) ->
|
29 | filePath = path.resolve process.cwd(), "./schema/#{file}"
|
30 | schemas = require filePath
|
31 | schemas.forEach (schema) ->
|
32 | type = (schema.meta?.method or 'get').toLowerCase()
|
33 | type = 'del' if type is 'delete'
|
34 | uri = schema.meta?.uri or '/test'
|
35 | server[type] uri, (req, res, next) ->
|
36 | json = req.body
|
37 | json = req.params if type is 'get'
|
38 |
|
39 | if forceError
|
40 | res.send errorCode, generator.generate schema.error
|
41 | next()
|
42 |
|
43 | jaySchema.validate json, schema.params, (errs) ->
|
44 | unless errs
|
45 | success = generator.generate schema.success
|
46 | res.send 200, success
|
47 | next()
|
48 | else
|
49 | error = _.extend generator.generate(schema.error), validate_errors: errs
|
50 | res.send errorCode, error
|
51 | next()
|
52 |
|
53 | server.listen port, ->
|
54 | console.info "############# \n mock server #{server.name} listening at #{port} ... \n#############"
|
55 |
|
56 | module.exports =
|
57 | create: create |
\ | No newline at end of file |