diff --git a/project.clj b/project.clj index 31160c0..f16576f 100644 --- a/project.clj +++ b/project.clj @@ -3,7 +3,8 @@ :url "https://github.com/weavejester/clj-aws-s3" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} - :dependencies [[org.clojure/clojure "1.2.1"] - [com.amazonaws/aws-java-sdk "1.7.5"] + :dependencies [[org.clojure/clojure "1.7.0"] + [com.amazonaws/aws-java-sdk "1.7.5" + :exclusions [joda-time]] [clj-time "0.6.0"]] :plugins [[codox "0.8.10"]]) diff --git a/src/aws/sdk/s3.clj b/src/aws/sdk/s3.clj index f9cc748..b90cdc4 100644 --- a/src/aws/sdk/s3.clj +++ b/src/aws/sdk/s3.clj @@ -442,6 +442,18 @@ (s3-client cred) (map->ListObjectsRequest (merge {:bucket bucket} options))))) +(defn key-seq + "Return a seq of keys matching a bucket and prefix." + [cred bucket prefix] + (let [step (fn step [marker] + (let [r (list-objects cred bucket + {:prefix prefix :marker marker})] + (lazy-seq + (cons (->> r :objects (map :key)) + (when (:truncated? r) + (step (:next-marker r)))))))] + (concat (step nil)))) + (defn delete-object "Delete an object from an S3 bucket." [cred bucket key]