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