OAuthAdapter.prototype.getRequestToken = function(pUrl, callback, responseHandler){ this.accessor.tokenSecret = ''; var message = createMessage(pUrl, this.consumerKey, this.signatureMethod); OAuth.setTimestampAndNonce(message); OAuth.completeRequest(message, this.accessor, callback); var parameterMap = OAuth.getParameterMap(message.parameters); for (var p in parameterMap) Ti.API.debug('param : ' + p + ': ' + parameterMap[p]); var oauthCallbackHandler = this.oauthCallbackHandler; var client = Ti.Network.createHTTPClient(); client.open('POST', pUrl); client.onload = function() { var responseParams = OAuth.getParameterMap(client.responseText); oauthCallbackHandler.setRequestToken(responseParams.oauth_token); oauthCallbackHandler.setRequestTokenSecret(responseParams.oauth_token_secret); Ti.API.debug('request token got the following response: ' + client.responseText); responseHandler.call(this, client.responseText); }; client.onerror = function(e) { for( var i in e ) Ti.API.error("getRequestToken failed: " + i + ' : ' + e[i]); } client.send(parameterMap); }
OAuthAdapter.prototype.getAccessToken = function(pUrl, callback){ this.accessor.tokenSecret = this.oauthCallbackHandler.getRequestTokenSecret(); var message = createMessage(pUrl, this.consumerKey, this.signatureMethod); message.parameters.push(['oauth_token', this.oauthCallbackHandler.getRequestToken()]); message.parameters.push(['oauth_verifier', this.oauthCallbackHandler.getPin()]); OAuth.setTimestampAndNonce(message); OAuth.completeRequest(message, this.accessor); var parameterMap = OAuth.getParameterMap(message.parameters); for (var p in parameterMap) Ti.API.debug('Param : ' + p + ': ' + parameterMap[p]); var oauthCallbackHandler = this.oauthCallbackHandler; var client = Ti.Network.createHTTPClient(); client.open('POST', pUrl, true); client.onload = function() { var responseParams = OAuth.getParameterMap(client.responseText); oauthCallbackHandler.setAccessToken(responseParams.oauth_token); oauthCallbackHandler.setAccessTokenSecret(responseParams.oauth_token_secret); Ti.API.debug('*** get access token, Response: ' + client.responseText); callback.call(this, client.responseText); } client.onerror = function(e) { Ti.API.error("getAccessToken failed: " + e); for (var p in e) Ti.API.error(p + ': ' + e[p]); } client.send(parameterMap); };
OAuthAdapter.prototype.createOAuthHeader = function (params) { var pUrl = params.url; var pMethod = params.method || "POST"; var message = createMessage(pUrl, this.consumerKey, this.signatureMethod, pMethod); this.accessor.tokenSecret = this.oauthCallbackHandler.getAccessTokenSecret(); message.parameters.push(['oauth_token', this.oauthCallbackHandler.getAccessToken()]); OAuth.setTimestampAndNonce(message); OAuth.SignatureMethod.sign(message, this.accessor); var parameterMap = OAuth.getParameterMap(message.parameters); var oAuthHeaderElms = []; for (var p in parameterMap) { oAuthHeaderElms.push( encodeURIComponent(p) + "=" + encodeURIComponent(parameterMap[p]) ); } return 'OAuth ' + oAuthHeaderElms.sort().join(', '); };
OAuthAdapter.prototype.generateParams = function(pUrl, pParameters){ Ti.API.debug('Sending a message to the service at [' + pUrl + '] with the following params: ' + JSON.stringify(pParameters)); if( this.oauthCallbackHandler.getAccessToken() == null || this.oauthCallbackHandler.getAccessTokenSecret() == null ){ this.actionsQueue.push({ url: pUrl, parameters: pParameters }); return; } this.accessor.tokenSecret = this.oauthCallbackHandler.getAccessTokenSecret(); var message = createMessage(pUrl, this.consumerKey, this.signatureMethod); message.parameters.push(['oauth_token', this.accessToken]); for (p in pParameters) message.parameters.push(pParameters[p]); OAuth.setTimestampAndNonce(message); OAuth.completeRequest(message, this.accessor); return OAuth.getParameterMap(message.parameters); };
OAuthAdapter.prototype.execute = function( url, params, callback, method ){ var method = method ? method : 'POST'; if (method == 'GET') url = makeGetURL(url, parameterMap); if( this.oauthCallbackHandler.getAccessToken() == null || this.oauthCallbackHandler.getAccessTokenSecret() == null ){ this.actionsQueue.push({ url: url, parameters: params }); Ti.API.debug("invalid param"); callback(null, { status: 401 }); } else { this.accessor.tokenSecret = this.oauthCallbackHandler.getAccessTokenSecret(); var message = createMessage(url, this.consumerKey, this.signatureMethod, method); message.parameters.push(['oauth_token', this.oauthCallbackHandler.getAccessToken()]); for (p in params){ message.parameters.push(params[p]); } OAuth.setTimestampAndNonce(message); OAuth.completeRequest(message, this.accessor); var parameterMap = OAuth.getParameterMap(message.parameters); for (var p in parameterMap) Ti.API.debug(p + ': ' + parameterMap[p]); var client = Ti.Network.createHTTPClient(); client.onload = function(){ client.onload = null; client.onreadystatechange = null; client.ondatastream = null; client.onerror = null; client = null; if( this.status == 200 ) { Ti.API.debug('data from http...' + this.responseText); try{ var request = JSON.parse(this.responseText); } catch( e ){ callback(null, {status:401}); } if ( request ) { callback(request, {status: 200}); } else { callback(null, {status: 400}); } } else { callback(null, {status: this.status }); } }; client.onerror = function(){ client.onload = null; client.onreadystatechange = null; client.ondatastream = null; client.onerror = null; client = null; Ti.API.debug("onload error " + url + ' : ' + this.responseText); if( this.status ) { callback(null, {status: this.status} ) } else { callback(null, {status: this.status}); } }; client.setTimeout(10000); if( method == 'GET' ){ var finalUrl = OAuth.addToURL(url, parameterMap); client.open(method, finalUrl, false); client.send(); } else { client.open(method, url, false); client.send(parameterMap); } Ti.API.debug("onload now " + url); } };