UNPKG

2.11 kBtext/coffeescriptView Raw
1xml2js = require("xml2js")
2_ = require('underscore')
3
4class Response
5
6 # instance values
7 message: null
8 type: null
9 data: null
10 code: null
11 _response: null
12 _data: null
13
14 # constuctor
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
92module.exports = Response