Reimplemented configurable http method for token requests using setClientOptions

This commit is contained in:
Raoul Millais
2011-08-17 08:42:58 +01:00
parent 49c83f1824
commit aca047eaeb
2 changed files with 48 additions and 35 deletions

View File

@ -28,6 +28,8 @@ exports.OAuth= function(requestUrl, accessUrl, consumerKey, consumerSecret, vers
this._headers= customHeaders || {"Accept" : "*/*",
"Connection" : "close",
"User-Agent" : "Node authentication"}
this._clientOptions= this._defaultClientOptions= {"requestTokenHttpMethod": "POST",
"accessTokenHttpMethod": "POST"};
};
exports.OAuthEcho= function(realm, verify_credentials, consumerKey, consumerSecret, version, signatureMethod, nonceSize, customHeaders) {
@ -402,6 +404,22 @@ exports.OAuth.prototype._performSecureRequest= function( oauth_token, oauth_toke
return;
}
exports.OAuth.prototype.setClientOptions= function(options) {
var key,
mergedOptions= {},
hasOwnProperty= Object.prototype.hasOwnProperty;
for( key in this._defaultClientOptions ) {
if( !hasOwnProperty.call(options, key) ) {
mergedOptions[key]= this._defaultClientOptions[key];
} else {
mergedOptions[key]= options[key];
}
}
this._clientOptions= mergedOptions;
};
exports.OAuth.prototype.getOAuthAccessToken= function(oauth_token, oauth_token_secret, oauth_verifier, callback) {
var extraParams= {};
if( typeof oauth_verifier == "function" ) {
@ -410,7 +428,7 @@ exports.OAuth.prototype.getOAuthAccessToken= function(oauth_token, oauth_token_s
extraParams.oauth_verifier= oauth_verifier;
}
this._performSecureRequest( oauth_token, oauth_token_secret, "POST", this._accessUrl, extraParams, null, null, function(error, data, response) {
this._performSecureRequest( oauth_token, oauth_token_secret, this._clientOptions.accessTokenHttpMethod, this._accessUrl, extraParams, null, null, function(error, data, response) {
if( error ) callback(error);
else {
var results= querystring.parse( data );
@ -475,43 +493,17 @@ exports.OAuth.prototype.post= function(url, oauth_token, oauth_token_secret, pos
* 2) As above but allows for provision of extra parameters to be sent as part of the query to the server (POST).
* getOAuthRequestToken( extraParams, callbackFunction )
*
* 3) A basic request with no extra parameters, using a specified HTTP method
* getOAuthRequestToken( httpMethod, callbackFunction )
*
* 4) A request with extra parameters that can using a specified HTTP method
* getOAuthRequestToken( httpMethod, extraParams, callbackFunction )
**/
exports.OAuth.prototype.getOAuthRequestToken= function( httpMethod, extraParams, callback ) {
if( typeof httpMethod == "function" ){ // 1
callback = httpMethod;
extraParams = {};
httpMethod= "POST";
} else {
if( typeof httpMethod == "string" && arguments.length == 2 ) {// 3
callback= extraParams;
extraParams= {};
}
else if( typeof httpMethod == "string" && arguments.length == 3 ) {// 4
// the given arguments will match!
}
else { //2
if( arguments.length != 2) {
throw new Error("Invalid arguments passed.");
}
else {
callback= extraParams;
extraParams= httpMethod;
httpMethod= "GET";
}
}
}
exports.OAuth.prototype.getOAuthRequestToken= function( extraParams, callback ) {
if( typeof extraParams == "function" ){
callback = extraParams;
extraParams = {};
}
// Callbacks are 1.0A related
if( this._authorize_callback ) {
extraParams["oauth_callback"]= this._authorize_callback;
}
this._performSecureRequest( null, null, httpMethod, this._requestUrl, extraParams, null, null, function(error, data, response) {
this._performSecureRequest( null, null, this._clientOptions.requestTokenHttpMethod, this._requestUrl, extraParams, null, null, function(error, data, response) {
if( error ) callback(error);
else {
var results= querystring.parse(data);