Sha256: 6b2af0e328c9353047955dd5a81d2b0ddce3327d96af5e489045b80aa054b4ab

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 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)
      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.1 lib/api_auth/headers.rb