Comparing version 1.10.1 to 1.11.0
@@ -318,4 +318,3 @@ /** | ||
errors: errors, | ||
details: _.clone(ack), | ||
requestContext: _.omit(requestContext, _.functions(requestContext)) | ||
details: _.clone(ack) | ||
}; | ||
@@ -322,0 +321,0 @@ |
@@ -81,2 +81,4 @@ var | ||
note, `options` may be modified by ref. | ||
@param {function} callback: gets response | ||
@@ -103,3 +105,4 @@ */ | ||
var reqOptions = _.extend({}, { | ||
// allow options to override default url (and body) if they want to. | ||
options.reqOptions = _.extend({ | ||
url: buildRequestUrl(options), | ||
@@ -109,6 +112,6 @@ body: buildXmlInput(options), | ||
debug('XML request options', reqOptions); | ||
debug('XML request options', options.reqOptions); | ||
timer('time to initiate request', Date.now() - _startTime); | ||
request.post(reqOptions, function(error, response) { | ||
request.post(options.reqOptions, function(error, response) { | ||
@@ -156,6 +159,14 @@ debug('response', error ? {error: error} : {statusCode: response.statusCode, body: response.body}); | ||
timer('time to parsed JSON', Date.now() - _startTime); | ||
var extraErrorProps = {}; | ||
if (error) { | ||
// as much context as possible for forensic debugging. | ||
// (includes `serviceName`, `reqOptions`, etc; not functions.) | ||
extraErrorProps.requestContext = _.omit(options, _.functions(options)); | ||
extraErrorProps.requestContext.response = _.pick(response, ['statusCode', 'body']); | ||
if (/Ebay/i.test(error.name)) { | ||
callback(error, data); // already differentiated | ||
// already differentiated into custom error classes. | ||
_.extend(error, extraErrorProps); | ||
callback(error, data); | ||
} | ||
@@ -165,3 +176,4 @@ else { | ||
// @review - is the original stack trace lost here? | ||
callback(new EbayClientError("Error parsing JSON: " + error.message), data); | ||
error = new EbayClientError("Error parsing JSON: " + error.message, extraErrorProps); | ||
callback(error, data); | ||
} | ||
@@ -168,0 +180,0 @@ } |
{ | ||
"name": "ebay-api", | ||
"description": "eBay API Client", | ||
"version": "1.10.1", | ||
"version": "1.11.0", | ||
"homepage": "https://github.com/benbuckman/nodejs-ebay-api", | ||
@@ -6,0 +6,0 @@ "author": "Ben Buckman", |
@@ -278,5 +278,12 @@ require('./helpers'); | ||
expect(err).to.have.property('errors').that.is.instanceof(Array); | ||
expect(err).to.have.property('requestContext').that.have.property('serviceName', 'Trading'); | ||
expect(err).to.have.property('details'); | ||
expect(err).to.have.property('requestContext'); | ||
expect(err.requestContext).to.have.property('serviceName', 'Trading'); | ||
expect(err.requestContext).to.have.property('reqOptions'); | ||
expect(err.requestContext.reqOptions).to.have.property('body'); | ||
expect(err.requestContext.reqOptions).to.have.property('url'); | ||
expect(err.requestContext).to.have.property('response'); | ||
expect(err.requestContext.response).to.have.property('statusCode', 200); | ||
expect(err.requestContext.response).to.have.property('body').that.match(/^<\?xml/); | ||
expect(err.requestContext).not.to.have.property('parser'); // no functions | ||
expect(err).to.have.property('details'); | ||
}); | ||
@@ -316,4 +323,12 @@ | ||
expect(err).to.have.property('errors').that.is.instanceof(Array); | ||
expect(err).to.have.property('requestContext').that.have.property('serviceName', 'Trading'); | ||
expect(err).to.have.property('details'); | ||
expect(err).to.have.property('requestContext'); | ||
expect(err.requestContext).to.have.property('serviceName', 'Trading'); | ||
expect(err.requestContext).to.have.property('reqOptions'); | ||
expect(err.requestContext.reqOptions).to.have.property('body'); | ||
expect(err.requestContext.reqOptions).to.have.property('url'); | ||
expect(err.requestContext).to.have.property('response'); | ||
expect(err.requestContext.response).to.have.property('statusCode', 200); | ||
expect(err.requestContext.response).to.have.property('body').that.match(/^<\?xml/); | ||
expect(err.requestContext).not.to.have.property('parser'); // no functions | ||
}); | ||
@@ -320,0 +335,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
100754
1708