class S3BinaryStore extends AbstractBinaryStore {

    @Override
    protected String getStoredMimeType(BinaryValue binaryValue) throws BinaryStoreException {
        try {
            return Optional.of(s3Client.getObjectMetadata(bucketName, binaryValue.getKey().toString()))
                    .filter(m -> Boolean.parseBoolean(m.getUserMetadata().get(USER_MIME_TYPE_KEY)))
                    .map(ObjectMetadata::getContentType)
                    .orElse(null);
        } catch (AmazonClientException e) {
            throw new BinaryStoreException(e);
        }
    }

    public  S3BinaryStore(String accessKey, String secretKey, String bucketName);
    public  S3BinaryStore(String accessKey, String secretKey, String bucketName, String endPoint);
    public  S3BinaryStore( String accessKey,
                          String secretKey,
                          String bucketName,
                          String endPoint,
                          Boolean deleteUnusedNatively );
    protected  S3BinaryStore(String bucketName, AmazonS3 s3Client, boolean deleteUnusedNatively);

}