class Chebyte::OauthUtil
Attributes
callback_url[RW]
consumer_key[RW]
consumer_secret[RW]
oauth_version[RW]
params[RW]
req_method[RW]
sig_method[RW]
token[RW]
token_secret[RW]
Public Class Methods
new()
click to toggle source
# File lib/ruby-yql.rb, line 14 def initialize @consumer_key = '' @consumer_secret = '' @token = '' @token_secret = '' @req_method = 'GET' @sig_method = 'HMAC-SHA1' @oauth_version = '1.0' @callback_url = '' @params = [] end
Public Instance Methods
construct_req_url( url)
click to toggle source
# File lib/ruby-yql.rb, line 38 def construct_req_url( url) parsed_url = URI.parse( url ) parsed_url.scheme + '://' + parsed_url.host + parsed_url.path end
generate_nonce()
click to toggle source
# File lib/ruby-yql.rb, line 26 def generate_nonce Array.new( 5 ) { rand(256) }.pack('C*').unpack('H*').first end
generate_sig( args )
click to toggle source
# File lib/ruby-yql.rb, line 43 def generate_sig( args ) key = percent_encode( args[:consumer_secret] ) + '&' + percent_encode( args[:token_secret] ) text = args[:base_str] digest = OpenSSL::Digest::Digest.new( 'sha1' ) raw_sig = OpenSSL::HMAC.digest( digest, key, text ) Base64.encode64( raw_sig ).chomp.gsub( /\n/, '' ) end
normalize_req_params( params )
click to toggle source
# File lib/ruby-yql.rb, line 34 def normalize_req_params( params ) percent_encode( params.sort().join( '&' ) ) end
percent_encode( string )
click to toggle source
# File lib/ruby-yql.rb, line 30 def percent_encode( string ) URI.escape( string, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]") ) end
sign( url )
click to toggle source
# File lib/ruby-yql.rb, line 55 def sign( url ) parsed_url = URI.parse( url ) @params.push( 'oauth_consumer_key=' + @consumer_key ) @params.push( 'oauth_nonce=' + generate_nonce() ) @params.push( 'oauth_signature_method=' + @sig_method ) @params.push( 'oauth_timestamp=' + Time.now.to_i.to_s ) @params.push( 'oauth_version=' + @oauth_version ) if parsed_url.query @params = @params | parsed_url.query.split( '&' ) end normal_req_params = normalize_req_params( params ) req_url = parsed_url.scheme + '://' + parsed_url.host + parsed_url.path base_str = [ @req_method, percent_encode( req_url ), normal_req_params ].join( '&' ) # sign signature = generate_sig({ :base_str => base_str, :consumer_secret => @consumer_secret, :token_secret => @token_secret }) @params.push( 'oauth_signature=' + percent_encode( signature ) ) return self end
to_query_string()
click to toggle source
# File lib/ruby-yql.rb, line 51 def to_query_string @params.join('&') end