in storage/src/main/java/com/epam/aidial/core/storage/service/ResourceService.java [200:243]
public ResourceFolderMetadata getFolderMetadata(ResourceDescriptor descriptor, String token, int limit, boolean recursive) {
String blobKey = blobKey(descriptor);
PageSet<? extends StorageMetadata> set = blobStore.list(blobKey, token, limit, recursive);
if (set.isEmpty() && !descriptor.isRootFolder()) {
return null;
}
List<MetadataBase> resources = set.stream().map(meta -> {
Map<String, String> metadata = meta.getUserMetadata();
String path = meta.getName();
ResourceDescriptor description = descriptor.resolveByPath(path);
if (meta.getType() != StorageType.BLOB) {
return new ResourceFolderMetadata(description);
}
Long createdAt = null;
Long updatedAt = null;
if (metadata != null) {
createdAt = metadata.containsKey(CREATED_AT_ATTRIBUTE) ? Long.parseLong(metadata.get(CREATED_AT_ATTRIBUTE)) : null;
updatedAt = metadata.containsKey(UPDATED_AT_ATTRIBUTE) ? Long.parseLong(metadata.get(UPDATED_AT_ATTRIBUTE)) : null;
}
if (createdAt == null && meta.getCreationDate() != null) {
createdAt = meta.getCreationDate().getTime();
}
if (updatedAt == null && meta.getLastModified() != null) {
updatedAt = meta.getLastModified().getTime();
}
if (description.getType().requireCompression()) {
return new ResourceItemMetadata(description).setCreatedAt(createdAt).setUpdatedAt(updatedAt);
}
return new FileMetadata(description, meta.getSize(), BlobStorage.resolveContentType((BlobMetadata) meta))
.setCreatedAt(createdAt)
.setUpdatedAt(updatedAt);
}).toList();
return new ResourceFolderMetadata(descriptor, resources, set.getNextMarker());
}