canonicalResourceUri function
The canonical URI of an MCP server (RFC 8707 resource indicator): lower-case scheme and host, no fragment, no trailing slash.
Implementation
String canonicalResourceUri(String url) {
final u = Uri.parse(url);
if (!u.hasScheme || !u.hasAuthority) {
throw ArgumentError.value(url, 'url', 'is not an absolute URI');
}
var path = u.path;
while (path.endsWith('/')) {
path = path.substring(0, path.length - 1);
}
final port = u.hasPort ? ':${u.port}' : '';
return '${u.scheme.toLowerCase()}://${u.host.toLowerCase()}$port$path${u.hasQuery ? '?${u.query}' : ''}';
}