Class: EventMachine::HttpClient

Inherits:
Object
  • Object
show all
Defined in:
lib/oauth/client/em_http.rb

Overview

Extensions for em-http so that we can use consumer.sign! with an EventMachine::HttpClient instance. This is purely syntactic sugar.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#oauth_helperObject (readonly)

Returns the value of attribute oauth_helper.



10
11
12
# File 'lib/oauth/client/em_http.rb', line 10

def oauth_helper
  @oauth_helper
end

Instance Method Details

#normalize_uriObject

This code was lifted from the em-http-request because it was removed from the gem June 19, 2010 see: http://github.com/igrigorik/em-http-request/commit/d536fc17d56dbe55c487eab01e2ff9382a62598b



67
68
69
70
71
72
73
74
75
76
# File 'lib/oauth/client/em_http.rb', line 67

def normalize_uri
  @normalized_uri ||= begin
    uri = @uri.dup
    encoded_query = encode_query(@uri, @options[:query])
    path, query = encoded_query.split("?", 2)
    uri.query = query unless encoded_query.empty?
    uri.path  = path
    uri
  end
end

#oauth!(http, consumer = nil, token = nil, options = {}) ⇒ Object

Add the OAuth information to an HTTP request. Depending on the options setting this may add a header, additional query string parameters, or additional POST body parameters. The default scheme is header, in which the OAuth parameters as put into the Authorization header.

  • http - Configured Net::HTTP instance, ignored in this scenario except for getting host.
  • consumer - OAuth::Consumer instance
  • token - OAuth::Token instance
  • options - Request-specific options (e.g. request_uri, consumer, token, scheme, signature_method, nonce, timestamp)

This method also modifies the User-Agent header to add the OAuth gem version.

See Also: core spec version 1.0, section 5.4.1[http://oauth.net/core/1.0#rfc.section.5.4.1]



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/oauth/client/em_http.rb', line 26

def oauth!(http, consumer = nil, token = nil, options = {})
  options = { :request_uri      => normalized_oauth_uri(http),
              :consumer         => consumer,
              :token            => token,
              :scheme           => 'header',
              :signature_method => nil,
              :nonce            => nil,
              :timestamp        => nil }.merge(options)

  @oauth_helper = OAuth::Client::Helper.new(self, options)
  self.__send__(:"set_oauth_#{options[:scheme]}")
end

#signature_base_string(http, consumer = nil, token = nil, options = {}) ⇒ Object

Create a string suitable for signing for an HTTP request. This process involves parameter normalization as specified in the OAuth specification. The exact normalization also depends on the options being used so this must match what will be used for the request itself. The default scheme is header, in which the OAuth parameters as put into the Authorization header.

  • http - Configured Net::HTTP instance
  • consumer - OAuth::Consumer instance
  • token - OAuth::Token instance
  • options - Request-specific options (e.g. request_uri, consumer, token, scheme, signature_method, nonce, timestamp)

See Also: core spec version 1.0, section 9.1.1[http://oauth.net/core/1.0#rfc.section.9.1.1]



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/oauth/client/em_http.rb', line 52

def signature_base_string(http, consumer = nil, token = nil, options = {})
  options = { :request_uri      => normalized_oauth_uri(http),
              :consumer         => consumer,
              :token            => token,
              :scheme           => 'header',
              :signature_method => nil,
              :nonce            => nil,
              :timestamp        => nil }.merge(options)

  OAuth::Client::Helper.new(self, options).signature_base_string
end