Skip to content

Commit cf2cfea

Browse files
committed
Merge branch 'master' of github.com:CargoSense/ex_aws
2 parents 7be12c0 + cbce71e commit cf2cfea

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

lib/ex_aws/s3/client.ex

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,13 @@ defmodule ExAws.S3.Client do
225225
bucket :: binary,
226226
objects :: [binary | {binary, binary}, ...], opts :: [quiet: true]):: ExAws.Request.response_t
227227

228+
defcallback delete_all_objects(
229+
bucket :: binary,
230+
objects :: [binary | {binary, binary}, ...]):: {:ok, [ExAws.Request.success_content, ...]} | ExAws.Request.error_t
231+
defcallback delete_all_objects(
232+
bucket :: binary,
233+
objects :: [binary | {binary, binary}, ...], opts :: [quiet: true]):: {:ok, [ExAws.Request.success_content, ...]} | ExAws.Request.error_t
234+
228235
@type get_object_response_opts :: [
229236
{:content_language, binary}
230237
| {:expires, binary}

lib/ex_aws/s3/impl.ex

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,20 @@ defmodule ExAws.S3.Impl do
234234
request(client, :post, bucket, "/?delete", body: body_binary, headers: %{"content-md5" => content_md5})
235235
end
236236

237+
def delete_all_objects(client, bucket, objects, opts \\ []) do
238+
do_delete_all(client, bucket, objects, opts, [])
239+
end
240+
241+
defp do_delete_all(_client, _bucket, [], _opts, acc) do
242+
{:ok, Enum.reverse(acc)}
243+
end
244+
defp do_delete_all(client, bucket, objects, opts, acc) do
245+
{objects, rest} = Enum.split(objects, 1000)
246+
with {:ok, result} <- delete_multiple_objects(client, bucket, objects, opts) do
247+
do_delete_all(client, bucket, rest, opts, [result | acc])
248+
end
249+
end
250+
237251
@response_params [:content_type, :content_language, :expires, :cache_control, :content_disposition, :content_encoding]
238252
@request_headers [:range, :if_modified_since, :if_unmodified_since, :if_match, :if_none_match]
239253
def get_object(client, bucket, object, opts \\ []) do

0 commit comments

Comments
 (0)