class Aws::Signers::V4
def presigned_url(request, options = {})
- 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