/
s3.clj
31 lines (23 loc) · 1023 Bytes
/
s3.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(ns andrewslai.clj.utils.files.protocols.s3
(:require [andrewslai.clj.utils.files.protocols.core :as protocols]
[ring.util.response :as ring-response]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Install multimethod to get resource-data from URLs using S3-PROTOCOL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def S3-PROTOCOL
"S3 protocol"
"s3p")
(defmethod ring-response/resource-data (keyword S3-PROTOCOL)
[url]
(let [conn (.openConnection url)]
{:content (.getContent url)}))
(comment
(require '[andrewslai.clj.persistence.s3 :as s3-storage])
(def loader
(-> (s3-storage/map->S3 {:bucket "andrewslai-wedding"
:creds s3-storage/CustomAWSCredentialsProviderChain})
(protocols/filesystem-loader)))
(.getResource loader "media/")
(ring-response/resource-response "media/" {:loader loader})
(ring-response/resource-response "media/rings.jpg" {:loader loader})
)