in storage/src/main/java/com/epam/aidial/core/storage/service/ResourceService.java [650:684]
private static Result blobToResult(Blob blob, BlobMetadata meta) {
String etag = extractEtag(meta.getUserMetadata());
String contentType = meta.getContentMetadata().getContentType();
Long contentLength = meta.getContentMetadata().getContentLength();
Long createdAt = meta.getUserMetadata().containsKey(CREATED_AT_ATTRIBUTE)
? Long.parseLong(meta.getUserMetadata().get(CREATED_AT_ATTRIBUTE))
: null;
Long updatedAt = meta.getUserMetadata().containsKey(UPDATED_AT_ATTRIBUTE)
? Long.parseLong(meta.getUserMetadata().get(UPDATED_AT_ATTRIBUTE))
: null;
String resourceType = meta.getUserMetadata().get(RESOURCE_TYPE_ATTRIBUTE);
// Get times from blob metadata if available for files that didn't store it in user metadata
if (createdAt == null && meta.getCreationDate() != null) {
createdAt = meta.getCreationDate().getTime();
}
if (updatedAt == null && meta.getLastModified() != null) {
updatedAt = meta.getLastModified().getTime();
}
byte[] body = ArrayUtils.EMPTY_BYTE_ARRAY;
if (blob != null) {
String encoding = meta.getContentMetadata().getContentEncoding();
try (InputStream stream = blob.getPayload().openStream()) {
body = stream.readAllBytes();
if (!StringUtils.isBlank(encoding)) {
body = Compression.decompress(encoding, body);
}
}
}
return new Result(body, etag, createdAt, updatedAt, contentType, null, contentLength, resourceType, true);
}