class Aws::Signers::V4

def presigned_url(request, options = {})

Other tags:
    Api: - private

Returns:
  • (String) -

Options Hash: (**options)
  • :body_digest (optional, String) -- The SHA256 hexdigest of
  • :expires_in (required, Integer) --

Parameters:
  • request (Seahorse::Client::Http::Request) --
def presigned_url(request, options = {})
  now = Time.now.utc.strftime("%Y%m%dT%H%M%SZ")
  body_digest = options[:body_digest] || hexdigest(request.body)
  request.headers['Host'] = host(request.endpoint)
  request.headers.delete('User-Agent')
  params = Aws::Query::ParamList.new
  request.headers.keys.each do |key|
    if key.match(/^x-amz/i)
      params.set(key, request.headers.delete(key))
    end
  end
  params.set("X-Amz-Algorithm", "AWS4-HMAC-SHA256")
  params.set("X-Amz-Credential", credential(now))
  params.set("X-Amz-Date", now)
  params.set("X-Amz-Expires", options[:expires_in].to_s)
  params.set("X-Amz-SignedHeaders", signed_headers(request))
  params.set('X-Amz-Security-Token', @credentials.session_token) if
    @credentials.session_token
  endpoint = request.endpoint
  if endpoint.query
    endpoint.query += '&' + params.to_s
  else
    endpoint.query = params.to_s
  end
  endpoint.to_s + '&X-Amz-Signature=' + signature(request, now, body_digest)
end