Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions lib/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ var Connection = module.exports = function(options) {
proxyUrl: options.proxyUrl,
httpProxy: options.httpProxy
};
oauth2._logger = this._logger;

/**
* OAuth2 object
Expand All @@ -79,11 +80,11 @@ var Connection = module.exports = function(options) {

/** @private */
if (options.proxyUrl) {
this._transport = new Transport.ProxyTransport(options.proxyUrl);
this._transport = new Transport.ProxyTransport(options.proxyUrl, this._logger);
} else if (options.httpProxy) {
this._transport = new Transport.HttpProxyTransport(options.httpProxy);
this._transport = new Transport.HttpProxyTransport(options.httpProxy, this._logger);
} else {
this._transport = new Transport();
this._transport = new Transport(this._logger);
}

this.callOptions = options.callOptions;
Expand Down Expand Up @@ -204,7 +205,7 @@ Connection.prototype.initialize = function(options) {
if (this.signedRequest) {
this.accessToken = this.signedRequest.client.oauthToken;
if (Transport.CanvasTransport.supported) {
this._transport = new Transport.CanvasTransport(this.signedRequest);
this._transport = new Transport.CanvasTransport(this.signedRequest, this._logger);
}
}

Expand Down
16 changes: 13 additions & 3 deletions lib/logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,16 @@ var LogLevels = Logger.LogLevels = {
"FATAL" : 5
};

var logLevelNameByNumber = function (level) {
for (var k in LogLevels) {
if (LogLevels[k] == level) {
return k.toLowerCase();
}
}

return 'debug';
}

/**
* Output log
*
Expand All @@ -35,10 +45,10 @@ var LogLevels = Logger.LogLevels = {
*/
Logger.prototype.log = function(level, message) {
if (this._logLevel <= level) {
if (level < LogLevels.ERROR) {
console.log(message);
if (level < LogLevels.WARN) {
console.log(JSON.stringify({process: 'jsforce', level: logLevelNameByNumber(level), message: message}));
} else {
console.error(message);
console.error(JSON.stringify({process: 'jsforce', level: logLevelNameByNumber(level), message: message}));
}
}
};
Expand Down
11 changes: 7 additions & 4 deletions lib/oauth2.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

var querystring = require('querystring'),
_ = require('lodash/core'),
Transport = require('./transport');
Transport = require('./transport'),
Logger = require('./logger');

var defaults = {
loginUrl : "https://login.salesforce.com"
Expand All @@ -27,6 +28,8 @@ var defaults = {
* @param {String} options.redirectUri - URI to be callbacked from Salesforce OAuth2 authorization service.
*/
var OAuth2 = module.exports = function(options) {
this._logger = options._logger || new Logger();

if (options.authzServiceUrl && options.tokenServiceUrl) {
this.loginUrl = options.authzServiceUrl.split('/').slice(0, 3).join('/');
this.authzServiceUrl = options.authzServiceUrl;
Expand All @@ -42,11 +45,11 @@ var OAuth2 = module.exports = function(options) {
this.clientSecret = options.clientSecret;
this.redirectUri = options.redirectUri;
if (options.proxyUrl) {
this._transport = new Transport.ProxyTransport(options.proxyUrl);
this._transport = new Transport.ProxyTransport(options.proxyUrl, this._logger);
} else if (options.httpProxy) {
this._transport = new Transport.HttpProxyTransport(options.httpProxy);
this._transport = new Transport.HttpProxyTransport(options.httpProxy, this._logger);
} else {
this._transport = new Transport();
this._transport = new Transport(this._logger);
}
};

Expand Down
32 changes: 22 additions & 10 deletions lib/transport.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ var inherits = require('inherits'),

var request = require('requestretry'),
canvas = require('./browser/canvas'),
jsonp = require('./browser/jsonp');
jsonp = require('./browser/jsonp'),
Logger = require('./logger');

// set options if defaults setting is available in request, which is not available in xhr module.
if (request.defaults) {
Expand Down Expand Up @@ -66,7 +67,9 @@ function normalizeApiHost(apiHost) {
* @class
* @protected
*/
var Transport = module.exports = function() {};
var Transport = module.exports = function(logger) {
this._logger = logger || new Logger();
};

/**
* Make HTTP request, returns promise instead of stream
Expand All @@ -79,6 +82,7 @@ Transport.prototype.httpRequest = function(params, callback) {
var deferred = Promise.defer();
var req;
var httpRequest = this._getHttpRequestModule();
var logger = this._logger;
var createRequest = function() {
if (!req) {
var opts = {
Expand All @@ -88,11 +92,15 @@ Transport.prototype.httpRequest = function(params, callback) {
retryStrategy: request.RetryStrategies.HTTPOrNetworkError
};
req = httpRequest(opts, function(err, response) {
if (response.attempts > 1){
// just for tracking we're gonna log information about any retries we encounter
const attempts = response ? response.attempts : err ? err.attempts : 0
if (attempts > 1){
// just for tracking we're going to log information about any retries we encounter
// we're gonna do this as console to force it out as opposed to trying to pick up
// on whatever mechanisms this module may already be doing to controle logging
console.log("JSForce performed %s attempts when making requests to %s", response.attempts, opts.url)
// on whatever mechanisms this module may already be doing to control logging
logger.log(
Logger.LogLevels.WARN,
'JSForce performed ' + response.attempts + ' attempts when making requests to ' + opts.url
);
}
if (err) {
deferred.reject(err);
Expand All @@ -119,8 +127,9 @@ Transport.prototype._getHttpRequestModule = function() {
* @extends Transport
* @param {String} jsonpParam - Callback parameter name for JSONP invokation.
*/
var JsonpTransport = Transport.JsonpTransport = function(jsonpParam) {
var JsonpTransport = Transport.JsonpTransport = function(jsonpParam, logger) {
this._jsonpParam = jsonpParam;
this._logger = logger || new Logger();
};

inherits(JsonpTransport, Transport);
Expand All @@ -140,8 +149,9 @@ JsonpTransport.supported = jsonp.supported;
* @extends Transport
* @param {Object} signedRequest - Parsed signed request object
*/
var CanvasTransport = Transport.CanvasTransport = function(signedRequest) {
var CanvasTransport = Transport.CanvasTransport = function(signedRequest, logger) {
this._signedRequest = signedRequest;
this._logger = logger || new Logger();
};

inherits(CanvasTransport, Transport);
Expand All @@ -162,8 +172,9 @@ CanvasTransport.supported = canvas.supported;
* @extends Transport
* @param {String} proxyUrl - AJAX Proxy server URL
*/
var ProxyTransport = Transport.ProxyTransport = function(proxyUrl) {
var ProxyTransport = Transport.ProxyTransport = function(proxyUrl, logger) {
this._proxyUrl = proxyUrl;
this._logger = logger || new Logger();
};

inherits(ProxyTransport, Transport);
Expand Down Expand Up @@ -208,8 +219,9 @@ ProxyTransport.prototype.httpRequest = function(params, callback) {
* @extends Transport
* @param {String} httpProxy - URL of the HTTP proxy server
*/
var HttpProxyTransport = Transport.HttpProxyTransport = function(httpProxy) {
var HttpProxyTransport = Transport.HttpProxyTransport = function(httpProxy, logger) {
this._httpProxy = httpProxy;
this._logger = logger || new Logger();
};

inherits(HttpProxyTransport, Transport);
Expand Down