IG
Size: a a a
IG
IG
AR
(defn get-items
([] (get-items 0))
([page] (let [{:keys [items more?]} (receive-items page)]
(concat items (when more?
(lazy-seq (get-items (inc page))))))))
IG
_
(iter-objects [this bucket]
(iter-objects this bucket nil))
(iter-objects [this bucket prev-result]
(lazy-seq
(let [result (if prev-result
(s3/list-next-batch-of-objects creds prev-result)
(s3/list-objects creds bucket))
{:keys [object-summaries
truncated?]} result]
(concat object-summaries
(when truncated?
(lazy-seq (iter-objects this bucket result)))))))
IG
IG
lazy-seq
внутри лишнийIG
_
(iter-objects [this bucket]
(iter-objects this bucket nil))
(iter-objects [this bucket prev-result]
(lazy-seq
(let [result (if prev-result
(s3/list-next-batch-of-objects creds prev-result)
(s3/list-objects creds bucket))
{:keys [truncated?
object-summaries]} result]
(concat object-summaries
(when truncated?
(iter-objects this bucket result))))))
ST
_
(iter-objects [this bucket]
(iter-objects this bucket nil))
(iter-objects [this bucket prev-result]
(lazy-seq
(let [result (if prev-result
(s3/list-next-batch-of-objects creds prev-result)
(s3/list-objects creds bucket))
{:keys [truncated?
object-summaries]} result]
(concat object-summaries
(when truncated?
(iter-objects this bucket result))))))
(defn get-items
[]
{:items [1 2 3]
:has-more (rand-nth [true true false])})
(defn get-items*
[prev-result]
(-> (get-items)
(assoc :continue? (not (false? (:has-more prev-result))))))
(->> (iterate get-items* nil)
(drop 1)
(take-while :continue?)
(mapcat :items))
IG
IG
AI
IG
D
MP
MP
AC
AC
DL
IG