Google Cloud Services - Storage
This extension allows to inject a com.google.cloud.storage.Storage
object inside your Quarkus application.
Be sure to have read the Google Cloud Services extension pack global documentation before this one, it contains general configuration and information.
Bootstrapping the project
First, we need a new project.Create a new project with the following command (replace the version placeholder with the correct one):
mvn io.quarkus:quarkus-maven-plugin:<quarkusVersion>:create \
-DprojectGroupId=org.acme \
-DprojectArtifactId=bigquery-quickstart \
-Dextensions="resteasy-reactive-jackson,quarkus-google-cloud-storage"
cd storage-quickstart
This command generates a Maven project, importing the Google Cloud Storage extension.
If you already have your Quarkus project configured, you can add the quarkus-google-cloud-storage
extension to your project by running the following command in your project base directory:
./mvnw quarkus:add-extension -Dextensions="quarkus-google-cloud-storage"
This will add the following to your pom.xml:
<dependency>
<groupId>io.quarkiverse.googlecloudservices</groupId>
<artifactId>quarkus-google-cloud-storage</artifactId>
</dependency>
Preparatory steps
To test Storage you first need to create a bucket named quarkus-hello
then upload a file hello.txt
in it.
This file will be read by the test and returned from the endpoint.
You can use gsutil
:
gsutil mb gs://quarkus-hello
echo "Hello World!" > hello.txt
gsutil cp hello.txt gs://my-bucket
Some example
This is an example usage of the extension: we create a REST resource with a single endpoint that gets the hello.txt
object
from the quarkus-hello
bucket and returns its content.
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
@Path("/storage")
public class StorageResource {
@Inject
Storage storage;// Inject Storage
@GET
@Produces(MediaType.TEXT_PLAIN)
public String storage() {
Bucket bucket = storage.get("quarkus-hello");// Get the bucket
Blob blob = bucket.get("hello.txt"); // Get the object
return new String(blob.getContent()); // Return its content
}
}