Current section

Files

Jump to
alixir_oss lib alixir_oss.ex
Raw

lib/alixir_oss.ex

defmodule Alixir.OSS do
@moduledoc """
`Alixir.OSS` enables puting and deleting objects for Aliyun
OSS.
## Examples
```
Alixir.OSS.put_object(args...)
|> Alixir.request()
Alixir.OSS.delete_objects(args...)
|> Alixir.request()
```
See `put_object/4` and `delete_object/4` for more details.
"""
alias Alixir.OSS.Operation
@doc """
Put object to OSS. Return an `Alixir.OSS.Operation` struct which
could be passed to `Alixir.request` to perform the
request.
## Example
iex> operation = Alixir.OSS.put_object("foo_bucket", "foo/bar.jpg", File.stream!("test/data/bar.jpg"), "X-OSS-Object-Acl": "public-read")
...> with %Alixir.OSS.Operation{http_method: :put, bucket: "foo_bucket", object_key: "foo/bar.jpg",
...> file: %File.Stream{path: "test/data/bar.jpg"}, oss_headers: oss_headers} when is_list(oss_headers) <- operation, do: true
true
"""
@spec put_object(
String.t(),
String.t(),
Enumerable.t(),
list()
) :: %Alixir.OSS.Operation{http_method: :put}
def put_object(bucket, object_key, file, oss_headers \\ []) when is_list(oss_headers) do
%Operation{
http_method: :put,
bucket: bucket,
object_key: object_key,
file: file,
oss_headers: oss_headers
}
end
@doc """
Delete object from OSS. Return an `Alixir.OSS.Operation` struct which
could be passed to `Alixir.request` to perform the
request.
## Example
iex> operation = Alixir.OSS.delete_object("foo_bucket", "foo/bar.jpg")
...> with %Alixir.OSS.Operation{http_method: :delete, bucket: "foo_bucket", object_key: "foo/bar.jpg",
...> oss_headers: oss_headers} when is_list(oss_headers) <- operation, do: true
true
"""
@spec delete_object(
String.t(),
Enumerable.t(),
list()
) :: %Alixir.OSS.Operation{http_method: :delete}
def delete_object(bucket, object_key, oss_headers \\ []) when is_list(oss_headers) do
%Operation{
http_method: :delete,
bucket: bucket,
object_key: object_key,
oss_headers: oss_headers
}
end
end