Class: OAuthSimple::Request
- Inherits:
-
Object
- Object
- OAuthSimple::Request
- Defined in:
- lib/oauth-simple/request.rb
Constant Summary collapse
- VERSION =
"1.0"
Instance Attribute Summary collapse
-
#consumer ⇒ Object
Returns the value of attribute consumer.
Class Method Summary collapse
-
.from_consumer_and_token(consumer, token, url, options = {}) ⇒ Object
Builds a request from a consumer and (optionally) a token.
- .generate_nonce(size = 32) ⇒ Object
- .generate_timestamp ⇒ Object
Instance Method Summary collapse
- #build_signature(signature_klass, token = nil) ⇒ Object
- #get_nonoauth_parameters ⇒ Object
- #get_normalized_http_method ⇒ Object
- #get_normalized_http_url ⇒ Object
- #get_normalized_parameters ⇒ Object
- #get_parameter(k) ⇒ Object
-
#initialize(options = {}) ⇒ Request
constructor
A new instance of Request.
- #postdata_hash ⇒ Object
- #set_parameter(k, v) ⇒ Object
- #sign_request(signature_klass, token = nil) ⇒ Object
- #to_header(realm = nil) ⇒ Object
- #to_postdata ⇒ Object
- #to_url ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Request
Returns a new instance of Request.
26 27 28 29 30 |
# File 'lib/oauth-simple/request.rb', line 26 def initialize(={}) @http_method = [:http_method] || :GET @http_url = [:http_url] @parameters = [:parameters] || {} end |
Instance Attribute Details
#consumer ⇒ Object
Returns the value of attribute consumer.
25 26 27 |
# File 'lib/oauth-simple/request.rb', line 25 def consumer @consumer end |
Class Method Details
.from_consumer_and_token(consumer, token, url, options = {}) ⇒ Object
Builds a request from a consumer and (optionally) a token
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/oauth-simple/request.rb', line 33 def self.from_consumer_and_token(consumer, token, url, = {}) defaults = { 'oauth_consumer_key' => consumer.key, 'oauth_timestamp' => , 'oauth_nonce' => generate_nonce, 'oauth_version' => VERSION } .merge!(defaults) instance = new(:http_url => url, :parameters => ) instance.set_parameter('oauth_token', token.key) if token instance.consumer = consumer return instance end |
.generate_nonce(size = 32) ⇒ Object
123 124 125 126 |
# File 'lib/oauth-simple/request.rb', line 123 def self.generate_nonce(size=32) bytes = OpenSSL::Random.random_bytes(size) [bytes].pack('m').gsub(/\W/,'') end |
.generate_timestamp ⇒ Object
119 120 121 |
# File 'lib/oauth-simple/request.rb', line 119 def self. return Time.now.to_i.to_s end |
Instance Method Details
#build_signature(signature_klass, token = nil) ⇒ Object
134 135 136 |
# File 'lib/oauth-simple/request.rb', line 134 def build_signature(signature_klass, token=nil) return signature_klass.build_signature(self, consumer, token) end |
#get_nonoauth_parameters ⇒ Object
56 57 58 |
# File 'lib/oauth-simple/request.rb', line 56 def get_nonoauth_parameters @parameters.reject{|k,v| k =~ /^oauth_.*/} end |
#get_normalized_http_method ⇒ Object
102 103 104 |
# File 'lib/oauth-simple/request.rb', line 102 def get_normalized_http_method return @http_method.to_s.upcase end |
#get_normalized_http_url ⇒ Object
93 94 95 96 97 98 99 100 |
# File 'lib/oauth-simple/request.rb', line 93 def get_normalized_http_url parts = URI.parse(@http_url) if parts.port == 80 return "#{parts.scheme}://#{parts.host}#{parts.path}" else return "#{parts.scheme}://#{parts.host}:#{parts.port}#{parts.path}" end end |
#get_normalized_parameters ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/oauth-simple/request.rb', line 106 def get_normalized_parameters @parameters.sort.map do |k, values| if values.is_a?(Array) # multiple values were provided for a single key values.sort.collect do |v| [CGI.escape(k),CGI.escape(v)] * "=" end else [CGI.escape(k),CGI.escape(values)] * "=" end end * "&" end |
#get_parameter(k) ⇒ Object
52 53 54 |
# File 'lib/oauth-simple/request.rb', line 52 def get_parameter(k) @parameters[k] end |
#postdata_hash ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/oauth-simple/request.rb', line 73 def postdata_hash result = {} @parameters.sort.each do |k,v| result[k] = v end result end |
#set_parameter(k, v) ⇒ Object
48 49 50 |
# File 'lib/oauth-simple/request.rb', line 48 def set_parameter(k, v) @parameters[k] = v end |
#sign_request(signature_klass, token = nil) ⇒ Object
128 129 130 131 132 |
# File 'lib/oauth-simple/request.rb', line 128 def sign_request(signature_klass, token=nil) raise "Consumer is nothing" if @consumer.nil? set_parameter('oauth_signature_method', signature_klass.oauth_name) set_parameter('oauth_signature', build_signature(signature_klass, token)) end |
#to_header(realm = nil) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/oauth-simple/request.rb', line 60 def to_header(realm=nil) auth_header = "OAuth " pairs = [] pairs << "realm=#{realm}" @parameters.sort.each do |k, v| if k =~ /^oauth_/ pairs << "#{k}=#{CGI.escape(v)}" end end auth_header << pairs.join(", ") return {"Authorization" => auth_header} end |
#to_postdata ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/oauth-simple/request.rb', line 81 def to_postdata result = [] @parameters.sort.each do |key, value| result << "#{CGI.escape(key)}=#{CGI.escape(value)}" end return result.join("&") end |
#to_url ⇒ Object
89 90 91 |
# File 'lib/oauth-simple/request.rb', line 89 def to_url return "#{get_normalized_http_url}?#{to_postdata}" end |