@@ -229,12 +229,39 @@ defmodule ExAws.S3 do
229229 )
230230 end
231231
232- @ doc "List metadata about all versions of the objects in a bucket."
232+ @ type list_object_versions_opts :: [
233+ { :delimiter , binary }
234+ | { :key_marker , binary }
235+ | { :version_id_marker , binary }
236+ | { :max_keys , 0 .. 1000 }
237+ | { :prefix , binary }
238+ | { :encoding_type , binary }
239+ ]
240+
241+ @ doc """
242+ List metadata about all versions of the objects in a bucket.
243+
244+ Can be streamed.
245+
246+ ## Examples
247+ ```
248+ S3.list_object_versions("my-bucket") |> ExAws.request
249+
250+ S3.list_object_versions("my-bucket") |> ExAws.stream!
251+ S3.list_object_versions("my-bucket", prefix: "backup/") |> ExAws.stream!
252+ ```
253+ """
233254 @ spec list_object_versions ( bucket :: binary ) :: ExAws.Operation.S3 . t ( )
234- @ spec list_object_versions ( bucket :: binary , opts :: Keyword . t ( ) ) ::
255+ @ spec list_object_versions ( bucket :: binary , opts :: list_object_versions_opts ) ::
235256 ExAws.Operation.S3 . t ( )
257+ @ params [ :delimiter , :key_marker , :version_id_marker , :max_keys , :prefix , :encoding_type ]
236258 def list_object_versions ( bucket , opts \\ [ ] ) do
237- request ( :get , bucket , "/" , [ resource: "versions" , params: opts ] ,
259+ params =
260+ opts
261+ |> format_and_take ( @ params )
262+
263+ request ( :get , bucket , "/" , [ resource: "versions" , params: params ] ,
264+ stream_builder: & ExAws.S3.Lazy . stream_object_versions! ( bucket , opts , & 1 ) ,
238265 parser: & ExAws.S3.Parsers . parse_object_versions / 1
239266 )
240267 end
0 commit comments