Skip to content

Commit c4121a4

Browse files
committed
further simplify the genericResponse handler as per comments
1 parent 2fba788 commit c4121a4

File tree

2 files changed

+51
-17
lines changed

2 files changed

+51
-17
lines changed

examples/add-file.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*!
2+
* This basic example shows how to fetch some deals
3+
* matching a specific filter from Pipedrive account.
4+
*
5+
* It starts by fetching the first deals filter from the
6+
* account, it then fetches 5 deals matching to this
7+
* filter.
8+
*
9+
* It will then display a list of found deals along
10+
* with the values and with how many activities they are
11+
* associated with.
12+
*
13+
* Usage:
14+
* node list-deals.js APITOKEN
15+
**/
16+
17+
if (!process.argv[2]) {
18+
process.stderr.write('Please provide API token!' + "\n");
19+
process.exit();
20+
}
21+
22+
var Pipedrive = require(__dirname + '/../index');
23+
var pipedrive = new Pipedrive.Client(process.argv[2]);
24+
var _ = require('lodash');
25+
26+
pipedrive.Files.add({ name: 'test.js' }, { data: __dirname + '/add-file.js' }, function(addFileErr, addFileData) {
27+
if (addFileErr) throw addFileErr;
28+
console.log(addFileData);
29+
});

lib/restHandlers.js

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,51 +24,56 @@
2424
return;
2525
}
2626

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 = {};
2831

2932
if (_.isString(responseBody)) {
3033
try {
3134
responseBody = JSON.parse(responseBody);
3235
}
33-
catch (err) {}
36+
catch (err) {
37+
responseError = new Error('Malformed Pipedrive API response');
38+
}
3439
}
3540

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;
3945
}
4046
else if (statusCodeGroup === 4 || statusCodeGroup === 5) {
41-
var errorObject = new Error();
42-
4347
if (_.isObject(rawResponse._error)) {
44-
errorObject = rawResponse._error;
48+
responseError = rawResponse._error;
4549
}
4650
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');
4852

4953
if (responseBody.error) {
50-
errorObject = new Error('Pipedrive API error:' + responseBody.error);
54+
responseError = new Error('Pipedrive API error:' + responseBody.error);
5155
}
5256
else {
5357
try {
5458
var errorBody = JSON.parse(rawResponse.rawEncoded.toString('utf8'));
5559
if (!_.isUndefined(errorBody.error)) {
56-
errorObject = new Error('Pipedrive API error:' + errorBody.error);
60+
responseError = new Error('Pipedrive API error:' + errorBody.error);
5761
}
5862
}
59-
catch (err) {}
63+
catch (err) {
64+
responseError = new Error('Malformed Pipedrive API response');
65+
}
6066
}
6167
}
6268

63-
callback(errorObject, null, null, rawRequest, rawResponse);
64-
return;
69+
responseData = null;
70+
responseAdditionalData = null;
6571
}
6672
else if (responseBody.error) {
67-
callback(responseBody.error, responseBody.data || {}, responseBody.additional_data || {}, rawRequest, rawResponse);
68-
return;
73+
responseError = new Error(responseBody.error);
6974
}
7075

71-
callback(null, responseBody.data || {}, responseBody.additional_data || {}, rawRequest, rawResponse);
76+
callback(responseError, responseData, responseAdditionalData, rawRequest, rawResponse);
7277
};
7378

7479
// GET /items

0 commit comments

Comments
 (0)