(require '[boundary.storage.ports :as ports])
;; Store a file
(ports/store-file storage
{:bytes (.getBytes "file content") :content-type "text/plain"}
{:filename "document.txt"})
;=> {:key "ab/1234-uuid-hash.txt" :url "..." :size 7 :content-type "text/plain" :stored-at #inst"..."}
;; Retrieve a file
(ports/retrieve-file storage "ab/1234-uuid-hash.txt")
;=> {:bytes #bytes[...] :metadata {...}}
;; Check existence
(ports/file-exists? storage "ab/1234-uuid-hash.txt")
;; Delete
(ports/delete-file storage "ab/1234-uuid-hash.txt")
;; Signed URL (S3 only; local returns public URL)
(ports/generate-signed-url storage "ab/1234-uuid-hash.txt" 3600) ; expires in 1 hour