private static Result blobToResult()

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);
    }