class Aws::Signers::V4
def presigned_url(request, options = {})
- Api: - private
Returns:
-
(Seahorse::Client::Http::Request)- the signed request.
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'] = request.endpoint.host 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