getItemByKref method
- String kref
inherited
Gets an item by its kref URI.
kref is the full kref URI (e.g., 'kref://project/space/item.kind').
Implementation
Future<ItemResponse> getItemByKref(String kref) async {
// Parse the kref to extract components
final sanitized = kref.startsWith('kref://')
? kref.substring('kref://'.length)
: kref.startsWith('/')
? kref.substring(1)
: kref;
final pathPart = sanitized.split('?').first;
final segments =
pathPart.split('/').where((segment) => segment.isNotEmpty).toList();
if (segments.isEmpty) {
throw ArgumentError('Invalid item kref format: $kref');
}
final fullItemName = segments.removeLast();
final dotIndex = fullItemName.lastIndexOf('.');
if (dotIndex <= 0) {
throw ArgumentError('Invalid item kref format - missing kind: $kref');
}
final itemName = fullItemName.substring(0, dotIndex);
final kind = fullItemName.substring(dotIndex + 1);
final parentPath = segments.isEmpty ? '/' : '/${segments.join('/')}';
return getItem(parentPath, itemName, kind);
}