Sha256: c0dd692482c9dd4dba9fb6e3290d6a3f1a8e893bed9007cd9fe624e90df98637

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

module ApiAuth
  
  # Builds the canonical string given a request object.
  class Headers
    
    include RequestDrivers
    
    def initialize(request)
      @original_request = request
      
      case request.class.to_s
      when /Net::HTTP/
        @request = NetHttpRequest.new(request)
      when /RestClient/
        @request = RestClientRequest.new(request)
      when /Curl::Easy/
        @request = CurbRequest.new(request)
      when /ActionController::Request/
        @request = ActionControllerRequest.new(request)
      when /ActionController::TestRequest/
        @request = ActionControllerRequest.new(request)
      when /ActionDispatch::Request/
        @request = ActionDispatchRequest.new(request)
      else
        raise UnknownHTTPRequest, "#{request.class.to_s} is not yet supported."
      end
      true
    end
    
    # Returns the canonical string computed from the request's headers
    def canonical_string
      [ @request.content_type,
        @request.content_md5,
        @request.request_uri,
        @request.timestamp
      ].join(",")
    end
    
    # Returns the authorization header from the request's headers
    def authorization_header
      @request.authorization_header
    end
    
    # Sets the request's authorization header with the passed in value.
    # The header should be the ApiAuth HMAC signature.
    #
    # This will return the original request object with the signed Authorization
    # header already in place.
    def sign_header(header)
      @request.set_auth_header header
    end
    
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
api-auth-0.9.2 lib/api_auth/headers.rb