Class: EventMachine::HttpClient

### Home Classes Methods

### In Files

- lib/oauth/client/em_http.rb

### Parent

Object

### Methods

- #combine_query
- #normalize_uri
- #normalized_oauth_uri
- #oauth!
- #set_oauth_body
- #set_oauth_header
- #set_oauth_query_string
- #signature_base_string

### Files

- LICENSE
- README.rdoc
- TODO

### Class/Module Index

Quicksearch

- OAuth
- OAuth::AccessToken
- OAuth::CLI
- OAuth::Client
- OAuth::Client::Helper
- OAuth::Consumer
- OAuth::ConsumerToken
- OAuth::Error
- OAuth::Helper
- OAuth::OAuthTestHelper
- OAuth::Problem
- OAuth::RequestProxy
- OAuth::RequestProxy::ActionControllerRequest
- OAuth::RequestProxy::Base
- OAuth::RequestProxy::Curl
- OAuth::RequestProxy::Curl::Easy
- OAuth::RequestProxy::EventMachine
- OAuth::RequestProxy::EventMachine::HttpRequest
- OAuth::RequestProxy::JabberRequest
- OAuth::RequestProxy::MockRequest
- OAuth::RequestProxy::Net
- OAuth::RequestProxy::Net::HTTP
- OAuth::RequestProxy::Net::HTTP::HTTPRequest
- OAuth::RequestProxy::RackRequest
- OAuth::RequestProxy::Typhoeus
- OAuth::RequestProxy::Typhoeus::Request
- OAuth::RequestProxy::UnknownRequestType
- OAuth::RequestToken
- OAuth::Server
- OAuth::ServerToken
- OAuth::Signature
- OAuth::Signature::Base
- OAuth::Signature::HMAC
- OAuth::Signature::HMAC::Base
- OAuth::Signature::HMAC::MD5
- OAuth::Signature::HMAC::RMD160
- OAuth::Signature::HMAC::SHA1
- OAuth::Signature::HMAC::SHA2
- OAuth::Signature::MD5
- OAuth::Signature::PLAINTEXT
- OAuth::Signature::RSA
- OAuth::Signature::RSA::SHA1
- OAuth::Signature::SHA1
- OAuth::Signature::UnknownSignatureMethod
- OAuth::Token
- OAuth::Unauthorized
- ActionController
- ActionController::Base
- ActionController::TestRequest
- Digest
- Digest::HMAC
- EventMachine
- EventMachine::HttpClient
- Net
- Net::HTTPGenericRequest
- Object
- String

No matching classes.

# EventMachine::HttpClient

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

### Attributes

oauth_helper[R]

### Public Instance Methods

normalize_uri() click to toggle source

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

    # 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 = {}) click to toggle source

Add the OAuth information to an HTTP request. Depending on the `options[:scheme]` 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: OAuth core spec version 1.0, section 5.4.1

    # 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 = {}) click to toggle source

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[:scheme]` 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: OAuth core spec version 1.0, section 9.1.1

    # 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

### Protected Instance Methods

combine_query(path, query, uri_query) click to toggle source

    # File lib/oauth/client/em_http.rb, line 80
    def combine_query(path, query, uri_query)
      combined_query = if query.kind_of?(Hash)
        query.map { |k, v| encode_param(k, v) }.join('&')
      else
        query.to_s
      end
      if !uri_query.to_s.empty?
        combined_query = [combined_query, uri_query].reject {|part| part.empty?}.join("&")
      end
      combined_query.to_s.empty? ? path : "#{path}?#{combined_query}"
    end

normalized_oauth_uri(http) click to toggle source

Since we expect to get the host etc details from the http instance (...), we create a fake url here. Surely this is a horrible, horrible idea?

    # File lib/oauth/client/em_http.rb, line 94
    def normalized_oauth_uri(http)
      uri = URI.parse(normalize_uri.path)
      uri.host = http.address
      uri.port = http.port

      if http.respond_to?(:use_ssl?) && http.use_ssl?
        uri.scheme = "https"
      else
        uri.scheme = "http"
      end
      uri.to_s
    end

set_oauth_body() click to toggle source

    # File lib/oauth/client/em_http.rb, line 112
    def set_oauth_body
      raise NotImplementedError, 'please use the set_oauth_header method instead'
    end

set_oauth_header() click to toggle source

    # File lib/oauth/client/em_http.rb, line 107
    def set_oauth_header
      headers = (self.options[:head] ||= {})
      headers['Authorization'] = @oauth_helper.header
    end

set_oauth_query_string() click to toggle source

    # File lib/oauth/client/em_http.rb, line 116
    def set_oauth_query_string
      raise NotImplementedError, 'please use the set_oauth_header method instead'
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.