class Google::Auth::ExternalAccount::AwsRequestSigner

def canonical_request http_method, uri, headers, content_sha256

def canonical_request http_method, uri, headers, content_sha256
  headers = headers.sort_by(&:first) # transforms to a sorted array of [key, value]
  [
    http_method,
    uri.path.empty? ? "/" : uri.path,
    build_canonical_querystring(uri.query || ""),
    headers.map { |k, v| "#{k}:#{v}\n" }.join, # Canonical headers
    headers.map(&:first).join(";"), # Signed headers
    content_sha256
  ].join("\n")
end