resolve method
- String kref
inherited
Resolves a kref to a file location string, or null if it cannot be
resolved.
Mirrors Python's client.resolve: parses any tag (?t=/?tag=) or
timestamp (?time=) from the kref, calls the ResolveLocation RPC, and
returns the resulting location. Any RPC failure is swallowed and surfaced
as null.
Implementation
Future<String?> resolve(String kref) async {
String? tag;
String? time;
final queryIndex = kref.indexOf('?');
if (queryIndex >= 0) {
final params = kref.substring(queryIndex + 1).split('&');
for (final param in params) {
if (param.startsWith('t=') || param.startsWith('tag=')) {
tag = param.substring(param.indexOf('=') + 1);
} else if (param.startsWith('time=')) {
time = param.substring(param.indexOf('=') + 1);
}
}
}
try {
final response = await resolveLocation(kref, tag: tag, time: time);
return response.location;
} catch (_) {
return null;
}
}