An open API service indexing awesome lists of open source software.

https://github.com/emadalblueshi/object-storage-client

Object storage client based on Vert.x
https://github.com/emadalblueshi/object-storage-client

amazon-s3 java object-storage reactive reactive-programming s3 vertx

Last synced: 5 months ago
JSON representation

Object storage client based on Vert.x

Awesome Lists containing this project

README

          

= Object Storage Client
:icons: font

image:https://github.com/EmadAlblueshi/object-storage-client/actions/workflows/ci.yml/badge.svg?branch=master["Build Status", link="https://github.com/EmadAlblueshi/object-storage-client/actions?query=workflow%3ACI"]

A convenient S3 client based on Vert.x that is compatible with
https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html[Amazon S3 REST API protocol]

WARNING: The module in active development, this means the API can change between versions.

== Example
[source,java]
----
// Create auth options
var authOptions = new S3AuthOptions()
.setSignatureVersion(S3SignatureVersion.V4)
.setAccessKey("access-key")
.setSecretKey("secret-key");

// Create client options
var clientOptions = new S3ClientOptions()
.setAuthOptions(authOptions)
.setRegion("region")
.setWebClientOptions(new WebClientOptions()
.setHost("s3.example.com")
.setPort(443)
.setSsl(true));

// Create the client
var client = S3Client.create(vertx, clientOptions);

// Create new bucket
client.putBucket(new S3BucketOptions(), "/my-bucket").onComplete(r -> {
if (r.succeeded()) {
System.out.println("Put bucket succeeded");
} else {
System.out.println("Put bucket failed!");
}
});

// Create object request options with content type
var objectOptions = new S3ObjectOptions()
.contentType("text/plain");

// Read existing text file
var fileBuffer = vertx.fileSystem().readFileBlocking("readme.txt");

// Create new object
client.putObject(objectOptions, "/my-bucket/my-file.txt", fileBuffer).onComplete(r -> {
if (r.succeeded()) {
System.out.println("Put object succeeded");
} else {
System.out.println("Put object failed!");
}
});

// The S3 Client now supports streaming for large objects
var asyncFile = vertx.fileSystem().openBlocking("large-image.png", new OpenOptions().setRead(true));
// Object content type
var options = new S3ObjectOptions().contentType("image/png");
// Upload large object as ReadStream
client.putObjectAsStream(options, "/my-bucket/large-object.png", asyncFile).onComplete(res -> {
if(res.succeeded()) {
System.out.println("Put large object as stream succeeded");
} else {
System.out.println("Put large object as stream failed!");
}
});
----

== Building

To launch the tests:
----
mvn clean test
----

To package:
----
mvn clean package -DskipTests
----

To package with site
----
mvn clean package -DskipTests site
----