use of com.workoss.boot.util.collection.Pair in project boot by workoss.
the class AbstractS3Client method downloadStream.
@Override
public StorageFileInfo downloadStream(String key, Consumer<StorageProgressEvent> consumer) {
key = formatKey(key, false);
MinioClient minioClient = getClient(key, "downloadObject");
try {
GetObjectResponse objectResponse = minioClient.getObject(GetObjectArgs.builder().bucket(config.getBucketName()).object(key).build());
StorageFileInfo storageFileInfo = new StorageFileInfo().setBucketName(config.getBucketName()).setKey(key).setHost(formatHost()).setContent(objectResponse);
Headers headers = objectResponse.headers();
if (headers != null && headers.toMultimap() != null) {
Map<String, Object> metadata = headers.toMultimap().entrySet().stream().map(stringListEntry -> {
List<String> value = stringListEntry.getValue();
if (value != null && value.size() >= 1) {
return Pair.of(stringListEntry.getKey(), value.get(0));
}
return Pair.of(stringListEntry.getKey(), null);
}).collect(Collectors.toMap(Pair::getFirst, Pair::getSecond));
storageFileInfo.setMetaData(metadata);
}
return storageFileInfo;
} catch (ErrorResponseException e) {
throw throwS3Exception(e);
} catch (Exception e) {
throw new StorageDownloadException("0002", ExceptionUtils.toShortString(e, 2));
}
}
Aggregations