class GrapeAPISignature::AWSRequest
Constants
- RFC8601BASIC
Attributes
body[RW]
digester[RW]
headers[RW]
method[RW]
service[RW]
uri[RW]
Public Class Methods
formatted_time(time)
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 13 def self.formatted_time(time) time.utc.strftime(RFC8601BASIC) end
new(method, uri, headers, body, digester = GrapeAPISignature::AWSDigester)
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 17 def initialize(method, uri, headers, body, digester = GrapeAPISignature::AWSDigester) self.method = method.upcase self.uri = uri self.headers = headers.each_with_object({}) { |(key, value), result_hash| result_hash[key.downcase] = (value || '').strip } self.body = body self.service = uri.host.split('.', 2)[0] self.digester = digester end
Public Instance Methods
canonical_request()
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 26 def canonical_request [ method, clean_path, query_string, headers_as_str + "\n", headers.keys.sort.join(';'), digester.hexdigest(body || '') ].join("\n") end
date()
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 42 def date datetime[0, 8] end
datetime()
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 37 def datetime date_header = headers['date'] || headers['x-amz-date'] self.class.formatted_time(date_header ? Time.parse(date_header) : Time.now) end
Protected Instance Methods
clean_path()
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 52 def clean_path path = Pathname.new(uri.path).cleanpath.to_s path << '/' if uri.path.end_with?('/') && !path.end_with?('/') path end
headers_as_str()
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 48 def headers_as_str headers.sort.map { |k, v| [k, v].join(':') }.join("\n") end
query_string()
click to toggle source
# File lib/grape_api_signature/aws_request.rb, line 58 def query_string return nil if uri.query.nil? uri.query.split('&').sort.join('&') end