class AkamaiCCU::Signer

Constants

HEADER_KEY
HEADER_NAME
POST
TAB

Attributes

request[R]

Public Class Methods

new(request, secret, headers = []) click to toggle source
# File lib/akamai_ccu/signer.rb, line 18
def initialize(request, secret, headers = [])
  @request = request
  @secret = secret
  @headers = Array(headers)
  @url = URI(path)
end

Public Instance Methods

call!() click to toggle source
# File lib/akamai_ccu/signer.rb, line 25
def call!
  @request[HEADER_KEY] = signed_headers
end
signed_header() click to toggle source
# File lib/akamai_ccu/signer.rb, line 63
def signed_header
  "#{HEADER_NAME}=#{signature}"
end

Private Instance Methods

body?() click to toggle source
# File lib/akamai_ccu/signer.rb, line 37
        def body?
  body && request_body_permitted?
end
canonical_headers() click to toggle source
# File lib/akamai_ccu/signer.rb, line 29
        def canonical_headers
  @headers.map do |header|
    next unless @request.key?(header)
    value = @request[header].strip.gsub(/\s+/, " ")
    "#{header.downcase}:#{value}"
  end.compact
end
signature() click to toggle source
# File lib/akamai_ccu/signer.rb, line 59
        def signature
  @secret.class.sign_HMAC(signed_key, signature_data.join(TAB))
end
signature_data() click to toggle source
# File lib/akamai_ccu/signer.rb, line 47
        def signature_data
  @signature_data ||= [].tap do |data|
    data << method
    data << @url.scheme
    data << @request.fetch("host") { @url.host }
    data << @url.request_uri
    data << canonical_headers.join(TAB)
    data << signed_body
    data << auth_header
  end
end
signed_body() click to toggle source
# File lib/akamai_ccu/signer.rb, line 41
        def signed_body
  return "" unless body?
  truncated = body[0...max_body]
  @secret.class.sign(truncated)
end
signed_headers() click to toggle source
# File lib/akamai_ccu/signer.rb, line 67
        def signed_headers
  @signed_headers ||= auth_header << signed_header
end