lib/ey-hmac/adapter/faraday.rb in ey-hmac-2.0.0 vs lib/ey-hmac/adapter/faraday.rb in ey-hmac-2.0.1

- old
+ new

@@ -8,20 +8,25 @@ end def content_digest if existing = %w[CONTENT-DIGEST CONTENT_DIGEST Content-Digest Content_Digest].inject(nil) { |r,h| r || request[:request_headers][h] } existing - elsif digestable = body && Digest::MD5.hexdigest(body) - request[:request_headers]['Content-Digest'] = digestable - else nil + elsif body + digestable = if body.respond_to?(:rewind) + body.rewind + body.read.tap { |_| body.rewind } + else + body.to_s + end + + request[:request_headers]['Content-Digest'] = Digest::MD5.hexdigest(digestable) end end def body if request[:body] && request[:body].to_s != "" request[:body] - else nil end end def date existing = %w[DATE Date].inject(nil) { |r,h| r || request[h] } @@ -31,10 +36,11 @@ def path request[:url].path end def sign!(key_id, key_secret) - %w[CONTENT-TYPE CONTENT_TYPE Content-Type Content_Type].inject(nil){|r,h| request[:request_headers][h]} + %w[CONTENT-TYPE CONTENT_TYPE Content-Type Content_Type].inject(nil) { |r,h| request[:request_headers][h] } + if options[:version] request[:request_headers]['X-Signature-Version'] = options[:version] end request[:request_headers][authorization_header] = authorization(key_id, key_secret)