1 | xml2js = require("xml2js")
|
2 | _ = require('underscore')
|
3 |
|
4 | class Response
|
5 |
|
6 |
|
7 | message: null
|
8 | type: null
|
9 | data: null
|
10 | code: null
|
11 | _response: null
|
12 | _data: null
|
13 |
|
14 |
|
15 | constructor: (@_response) ->
|
16 | if @_response is undefined
|
17 | throw new Error('Requires response')
|
18 | return
|
19 |
|
20 | isError: () ->
|
21 | if @code != null
|
22 | return true
|
23 | return false
|
24 |
|
25 | parseBody: (body, cb) ->
|
26 | if not body
|
27 | throw new Error('Requires body')
|
28 | if not cb
|
29 | throw new Error('Requires callback')
|
30 |
|
31 | @_data = body
|
32 | xml2js.parseString @_data, (err, data) =>
|
33 | if err
|
34 | return cb(err, null)
|
35 | else
|
36 | @data = data
|
37 | if @data?.response?.error
|
38 | error = @data.response.error
|
39 |
|
40 | if _.isArray(error)
|
41 | error = _.first(error)
|
42 |
|
43 | if error?.code
|
44 | @code = error.code
|
45 |
|
46 | if error?.message
|
47 | @message = error.message
|
48 | else
|
49 | @message = "Unknown Error"
|
50 |
|
51 | return cb({code: @code, message: @message}, @);
|
52 |
|
53 | else if @data?.response?.nodata
|
54 | error = @data.response.nodata
|
55 |
|
56 | if _.isArray(error)
|
57 | error = _.first(error)
|
58 |
|
59 | if error?.code
|
60 | @code = error.code
|
61 | if _.isArray(@code)
|
62 | @code = _.first(@code)
|
63 |
|
64 | if error?.message
|
65 | @message = error.message
|
66 | if _.isArray(@message)
|
67 | @message = _.first(@message)
|
68 | else
|
69 | @message = "Unknown Error"
|
70 |
|
71 | return cb(null,@)
|
72 |
|
73 | else
|
74 |
|
75 | if @data?.response?.result
|
76 | if _.isArray(@data?.response?.result) and @data?.response?.result.length == 1
|
77 | record = _.first(@data?.response?.result)
|
78 | if record?.message
|
79 | @message = record.message
|
80 |
|
81 | if record?.recorddetail
|
82 | @data = record.recorddetail
|
83 | else
|
84 | @data = record
|
85 |
|
86 | else
|
87 | return cb(new Error("Multi result arrays not handled"), @)
|
88 |
|
89 | return cb(null, @)
|
90 |
|
91 |
|
92 | module.exports = Response
|