diff --git a/backend/src/app/storage.clj b/backend/src/app/storage.clj index 361d912f1..30064f913 100644 --- a/backend/src/app/storage.clj +++ b/backend/src/app/storage.clj @@ -26,7 +26,10 @@ [cuerdas.core :as str] [integrant.core :as ig] [lambdaisland.uri :as u] - [promesa.exec :as px])) + [promesa.exec :as px]) + (:import + java.io.InputStream)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Storage Module State @@ -159,8 +162,9 @@ ;; if the source and destination backends are different, we just ;; need to obtain the streams and proceed full copy of the data - (with-open [input (-> (resolve-backend storage (:backend object)) - (impl/get-object-data object))] + (with-open [^InputStream input + (-> (resolve-backend storage (:backend object)) + (impl/get-object-data object))] (-> (resolve-backend storage (:backend storage)) (impl/put-object object* (impl/content input (:size object)))))) diff --git a/backend/src/app/storage/s3.clj b/backend/src/app/storage/s3.clj index 739facef8..b0166a97a 100644 --- a/backend/src/app/storage/s3.clj +++ b/backend/src/app/storage/s3.clj @@ -24,6 +24,8 @@ java.io.InputStream java.io.OutputStream java.nio.file.Path + java.time.Duration + java.util.Collection software.amazon.awssdk.core.sync.RequestBody software.amazon.awssdk.regions.Region software.amazon.awssdk.services.s3.S3Client @@ -105,7 +107,7 @@ ;; --- HELPERS -(defn- lookup-region +(defn- ^Region lookup-region [region] (case region :eu-central-1 Region/EU_CENTRAL_1)) @@ -161,7 +163,7 @@ (bucket bucket) (key (str prefix (impl/id->path id))) (build)) - obj (.getObject ^S3Client client gor)] + obj (.getObject ^S3Client client ^GetObjectRequest gor)] (io/input-stream obj))) (def default-max-age @@ -175,10 +177,10 @@ (key (str prefix (impl/id->path id))) (build)) gopr (.. (GetObjectPresignRequest/builder) - (signatureDuration max-age) - (getObjectRequest gor) + (signatureDuration ^Duration max-age) + (getObjectRequest ^GetObjectRequest gor) (build)) - pgor (.presignGetObject ^S3Presigner presigner gopr)] + pgor (.presignGetObject ^S3Presigner presigner ^GetObjectPresignRequest gopr)] (u/uri (str (.url ^PresignedGetObjectRequest pgor))))) (defn- del-object-in-bulk @@ -189,7 +191,7 @@ (build))) ids) delc (.. (Delete/builder) - (objects oids) + (objects ^Collection oids) (build)) dor (.. (DeleteObjectsRequest/builder) (bucket bucket)