-
Notifications
You must be signed in to change notification settings - Fork 65
/
s3.clj
33 lines (26 loc) 路 899 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
32
33
(ns yetibot.api.s3
(:require
[schema.core :as sch]
[aws.sdk.s3 :as s3]
[clojure.string :as s]
[yetibot.core.config :refer [get-config]]))
(def s3-schema
{:access {:key sch/Str}
:secret {:key sch/Str}})
(defn config [] (get-config s3-schema [:s3]))
(defn transformed-config []
(when-let [c (:value (config))]
{:access-key (-> c :access :key)
:secret-key (-> c :secret :key)}))
(defn content [path]
(let [[bucket key] (s/split path #"\/" 2)]
(slurp (:content (s3/get-object (transformed-config) bucket key)))))
(defn put [path object]
(let [[bucket key] (s/split path #"\/" 2)]
(s3/put-object (transformed-config) bucket key object)))
(defn buckets []
(s3/list-buckets (transformed-config)))
(defn list-objects [bucket prefix]
(s3/list-objects (transformed-config)
bucket
{:delimiter "/" :prefix prefix}))