All Downloads are FREE. Search and download functionalities are using the official Maven repository.

driven-adapter.s3-reactive.s3-operations.mustache Maven / Gradle / Ivy

Go to download

Gradle plugin to create a clean application in Java that already works, It follows our best practices!

There is a newer version: 3.20.10
Show newest version
package {{package}}.s3.operations;

import org.springframework.stereotype.Component;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
{{#lombok}}
import lombok.RequiredArgsConstructor;
{{/lombok}}
import software.amazon.awssdk.core.BytesWrapper;
import software.amazon.awssdk.core.async.AsyncRequestBody;
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
import software.amazon.awssdk.services.s3.S3AsyncClient;
import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.S3Object;

import java.io.File;
import java.nio.ByteBuffer;
import java.util.List;

@Component
{{#lombok}}
@RequiredArgsConstructor
{{/lombok}}
public class S3Operations {

    private final S3AsyncClient s3AsyncClient;

{{^lombok}}
    public S3Operations(S3AsyncClient s3AsyncClient ) {
        this.s3AsyncClient = s3AsyncClient;
    }
{{/lombok}}

    public Mono uploadObject(String bucketName,String objectKey, byte[] fileContent) {
        return Mono.fromFuture(
                s3AsyncClient.putObject(configurePutObject(bucketName,objectKey),
                        AsyncRequestBody.fromBytes(fileContent)))
                .map(response -> response.sdkHttpResponse().isSuccessful());
    }

    public Mono uploadObject(String bucketName,String objectKey, String fileContent) {
        return Mono.fromFuture(
                s3AsyncClient.putObject(configurePutObject(bucketName,objectKey),
                        AsyncRequestBody.fromString(fileContent)))
                .map(response -> response.sdkHttpResponse().isSuccessful());
    }

    public Mono uploadObject(String bucketName,String objectKey, File fileContent) {
        return Mono.fromFuture(
                s3AsyncClient.putObject(configurePutObject(bucketName,objectKey),
                        AsyncRequestBody.fromFile(fileContent)))
                .map(response -> response.sdkHttpResponse().isSuccessful());
    }

    public Mono> listBucketObjects(String bucketName){
        return Mono.fromFuture(s3AsyncClient.listObjects(ListObjectsRequest
                .builder()
                .bucket(bucketName)
                .build()))
                .map(ListObjectsResponse::contents);
    }

    public Flux getObject(String bucketName,String objectKey) {
        return Mono.fromFuture(s3AsyncClient.getObject(GetObjectRequest.builder()
                .key(objectKey)
                .bucket(bucketName)
                .build(), AsyncResponseTransformer.toPublisher()))
                .flatMapMany(Flux::from);
    }

    public Mono deleteObject(String bucketName,String objectKey) {
        return Mono.fromFuture(s3AsyncClient.deleteObject(DeleteObjectRequest.builder()
                .key(objectKey)
                .bucket(bucketName).build()))
                .map(response -> response.sdkHttpResponse().isSuccessful());
    }

    private PutObjectRequest configurePutObject(String bucketName,String objectKey) {
        return PutObjectRequest.builder()
                .bucket(bucketName)
                .key(objectKey)
                .build();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy