class OpenKit::Request::Base

Public Class Methods

new(verb, the_delegate) click to toggle source
# File lib/openkit/request/base.rb, line 5
def initialize(verb, the_delegate)
  raise "Don't instantiate me!" if abstract_class?

  @delegate         = the_delegate
  @nonce            = SecureRandom.uuid
  @oauth_version    = '1.0'
  @signature_method = 'HMAC-SHA1'
  @timestamp        = Time.now.to_i
  @verb             = verb
end

Public Instance Methods

net_request() click to toggle source
# File lib/openkit/request/base.rb, line 25
def net_request
  net_request = @delegate.net_request()
  net_request['Authorization'] = authorization_header
  net_request
end
perform() click to toggle source
# File lib/openkit/request/base.rb, line 16
def perform
  http = Net::HTTP.new(@delegate.uri.host, @delegate.uri.port)
  http.use_ssl = (@delegate.scheme == 'https')
  http.start do
    response = http.request(self.net_request)
    response
  end
end

Private Instance Methods

abstract_class?() click to toggle source
# File lib/openkit/request/base.rb, line 67
def abstract_class?
  self.class == Base
end
authorization_header() click to toggle source
# File lib/openkit/request/base.rb, line 32
def authorization_header
  %|OAuth oauth_consumer_key="#{@delegate.app_key}", oauth_nonce="#{@nonce}", oauth_signature="#{escape(signature)}", oauth_signature_method="#{@signature_method}", oauth_timestamp="#{@timestamp}", oauth_version="#{@oauth_version}"|
end
escape(s) click to toggle source
# File lib/openkit/request/base.rb, line 63
def escape(s)
  CGI.escape(s)
end
params_in_signature() click to toggle source
# File lib/openkit/request/base.rb, line 53
def params_in_signature
  {
    oauth_consumer_key:       @delegate.app_key,
    oauth_nonce:              @nonce,
    oauth_signature_method:   @signature_method,
    oauth_timestamp:          @timestamp,
    oauth_version:            @oauth_version,
  }
end
params_string_for_signature() click to toggle source
# File lib/openkit/request/base.rb, line 49
def params_string_for_signature
  params_in_signature.sort_by{|k, _| k}.collect{ |k,v| k.to_s + '=' + v.to_s }.join("&")
end
signature() click to toggle source
# File lib/openkit/request/base.rb, line 36
def signature
  k = @delegate.secret_key + "&"
  hmac = Digest::HMAC.digest(signature_base_string, k, Digest::SHA1)
  Base64.encode64(hmac).chomp
end
signature_base_string() click to toggle source
# File lib/openkit/request/base.rb, line 42
def signature_base_string
  [ @verb.to_s.upcase,
    escape(@delegate.base_uri + @delegate.uri.path),
    escape(params_string_for_signature)
  ].join('&')
end