// functions. Once https://github.com/envoyproxy/envoy/issues/6588 lands, we can replace with GURL.
// We need to percent-encode authority, id, path and query params. Resource types should not have
return query_param_components.empty() ? "" : "?" + absl::StrJoin(query_param_components, "&");
std::string XdsResourceIdentifier::encodeUrl(const xds::core::v3::ResourceLocator& resource_locator,
absl::Status decodePath(absl::string_view path, std::string* resource_type, std::string& id) {
auto query_params_components = Http::Utility::QueryParamsMulti::parseQueryString(query_params);
decodeQueryParams(path.substr(query_params_start), *decoded_resource_name.mutable_context());