getItemByKref method

Future<ItemResponse> getItemByKref(
  1. 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);
}