|
24 | 24 | return; |
25 | 25 | } |
26 | 26 |
|
27 | | - var statusCodeGroup = parseInt((rawResponse.statusCode || 0).toString().substr(0, 1), 10); |
| 27 | + var statusCodeGroup = parseInt((rawResponse.statusCode || 0).toString().substr(0, 1), 10), |
| 28 | + responseError = null, |
| 29 | + responseData = {}, |
| 30 | + responseAdditionalData = {}; |
28 | 31 |
|
29 | 32 | if (_.isString(responseBody)) { |
30 | 33 | try { |
31 | 34 | responseBody = JSON.parse(responseBody); |
32 | 35 | } |
33 | | - catch (err) {} |
| 36 | + catch (err) { |
| 37 | + responseError = new Error('Malformed Pipedrive API response'); |
| 38 | + } |
34 | 39 | } |
35 | 40 |
|
36 | | - if (responseBody.success === true) { |
37 | | - callback(null, responseBody.data, responseBody.additional_data, rawRequest, rawResponse); |
38 | | - return; |
| 41 | + if (!responseError && responseBody.success === true) { |
| 42 | + responseError = null; |
| 43 | + responseData = responseBody.data; |
| 44 | + responseAdditionalData = responseBody.additional_data; |
39 | 45 | } |
40 | 46 | else if (statusCodeGroup === 4 || statusCodeGroup === 5) { |
41 | | - var errorObject = new Error(); |
42 | | - |
43 | 47 | if (_.isObject(rawResponse._error)) { |
44 | | - errorObject = rawResponse._error; |
| 48 | + responseError = rawResponse._error; |
45 | 49 | } |
46 | 50 | else { |
47 | | - errorObject = new Error('Got HTTP response ' + rawResponse.statusCode + ' from Pipedrive API'); |
| 51 | + responseError = new Error('Got HTTP response ' + rawResponse.statusCode + ' from Pipedrive API'); |
48 | 52 |
|
49 | 53 | if (responseBody.error) { |
50 | | - errorObject = new Error('Pipedrive API error:' + responseBody.error); |
| 54 | + responseError = new Error('Pipedrive API error:' + responseBody.error); |
51 | 55 | } |
52 | 56 | else { |
53 | 57 | try { |
54 | 58 | var errorBody = JSON.parse(rawResponse.rawEncoded.toString('utf8')); |
55 | 59 | if (!_.isUndefined(errorBody.error)) { |
56 | | - errorObject = new Error('Pipedrive API error:' + errorBody.error); |
| 60 | + responseError = new Error('Pipedrive API error:' + errorBody.error); |
57 | 61 | } |
58 | 62 | } |
59 | | - catch (err) {} |
| 63 | + catch (err) { |
| 64 | + responseError = new Error('Malformed Pipedrive API response'); |
| 65 | + } |
60 | 66 | } |
61 | 67 | } |
62 | 68 |
|
63 | | - callback(errorObject, null, null, rawRequest, rawResponse); |
64 | | - return; |
| 69 | + responseData = null; |
| 70 | + responseAdditionalData = null; |
65 | 71 | } |
66 | 72 | else if (responseBody.error) { |
67 | | - callback(responseBody.error, responseBody.data || {}, responseBody.additional_data || {}, rawRequest, rawResponse); |
68 | | - return; |
| 73 | + responseError = new Error(responseBody.error); |
69 | 74 | } |
70 | 75 |
|
71 | | - callback(null, responseBody.data || {}, responseBody.additional_data || {}, rawRequest, rawResponse); |
| 76 | + callback(responseError, responseData, responseAdditionalData, rawRequest, rawResponse); |
72 | 77 | }; |
73 | 78 |
|
74 | 79 | // GET /items |
|
0 commit comments