Added URL normalisation
This commit is contained in:
17
lib/oauth.js
17
lib/oauth.js
@ -1,5 +1,6 @@
|
||||
var sha1= require('./sha1'),
|
||||
http= require('http');
|
||||
http= require('http'),
|
||||
URL= require('url');
|
||||
|
||||
exports.OAuth= function(requestUrl, accessUrl, authorizeUrl, consumerKey, consumerSecret, version, signatureMethod) {
|
||||
this._requestUrl= requestUrl;
|
||||
@ -41,6 +42,18 @@ exports.OAuth.prototype._getSignature= function(method, url, parameters, tokenSe
|
||||
return this._createSignature( signatureBase, tokenSecret );
|
||||
}
|
||||
|
||||
exports.OAuth.prototype._normalizeUrl= function(url) {
|
||||
var parsedUrl= URL.parse(url, true)
|
||||
var port ="";
|
||||
if( parsedUrl.port ) {
|
||||
if( (parsedUrl.protocol == "http:" && parsedUrl.port != "80" ) ||
|
||||
(parsedUrl.protocol == "https:" && parsedUrl.port != "443") ) {
|
||||
port= ":" + parsedUrl.port;
|
||||
}
|
||||
}
|
||||
return parsedUrl.protocol + "//" + parsedUrl.hostname + port + parsedUrl.pathname;
|
||||
}
|
||||
|
||||
exports.OAuth.prototype._splitQueryString= function(stringToSplit) {
|
||||
var result= {};
|
||||
var parameters= stringToSplit.split("&");
|
||||
@ -81,7 +94,7 @@ exports.OAuth.prototype._normaliseRequestParams= function(arguments) {
|
||||
}
|
||||
|
||||
exports.OAuth.prototype._createSignatureBase= function(method, url, parameters) {
|
||||
url= this._encodeData(url);
|
||||
url= this._encodeData( this._normalizeUrl(url) );
|
||||
parameters= this._encodeData(parameters);
|
||||
return method.toUpperCase() + "&" + url + "&" + parameters;
|
||||
}
|
||||
|
Reference in New Issue
Block a user