LibOss.Core.Acl (lib_oss v0.3.0)

View Source

ACL管理模块

负责:

  • 对象ACL:put_object_acl, get_object_acl
  • 存储桶ACL:put_bucket_acl, get_bucket_acl
  • ACL验证逻辑

Summary

Functions

将ACL字符串转换为权限描述

获取存储桶ACL

检查ACL是否为公共可读

检查ACL是否为公共可写

获取有效的ACL值列表

验证ACL值是否有效

Types

err_t()

@type err_t() :: {:error, LibOss.Exception.t()}

Functions

acl_to_description(acl)

@spec acl_to_description(LibOss.Typespecs.acl()) :: String.t()

将ACL字符串转换为权限描述

参数

  • acl: ACL值

返回值

  • String.t()

示例

iex> LibOss.Core.Acl.acl_to_description("public-read")
"Public read access"

get_bucket_acl(name, bucket)

@spec get_bucket_acl(module(), LibOss.Typespecs.bucket()) :: {:ok, map()} | err_t()

获取存储桶ACL

参数

  • name: Agent进程名称
  • bucket: 存储桶名称

返回值

  • | {:error, Exception.t()}

返回的map包含:

  • owner: 所有者信息
  • access_control_list: 访问控制列表

示例

iex> LibOss.Core.Acl.get_bucket_acl(MyOss, "my-bucket")
{:ok, %{
  owner: %{id: "owner-id", display_name: "owner-name"},
  access_control_list: [%{permission: "FULL_CONTROL", ...}]
}}

get_object_acl(name, bucket, object)

@spec get_object_acl(module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object()) ::
  {:ok, map()} | err_t()

获取对象ACL

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称

返回值

  • | {:error, Exception.t()}

返回的map包含:

  • owner: 所有者信息
  • access_control_list: 访问控制列表

示例

iex> LibOss.Core.Acl.get_object_acl(MyOss, "my-bucket", "my-object")
{:ok, %{
  owner: %{id: "owner-id", display_name: "owner-name"},
  access_control_list: [%{permission: "FULL_CONTROL", ...}]
}}

public_readable?(acl)

@spec public_readable?(LibOss.Typespecs.acl()) :: boolean()

检查ACL是否为公共可读

参数

  • acl: ACL值

返回值

  • boolean()

示例

iex> LibOss.Core.Acl.public_readable?("public-read")
true

iex> LibOss.Core.Acl.public_readable?("private")
false

public_writable?(arg1)

@spec public_writable?(LibOss.Typespecs.acl()) :: boolean()

检查ACL是否为公共可写

参数

  • acl: ACL值

返回值

  • boolean()

示例

iex> LibOss.Core.Acl.public_writable?("public-read-write")
true

iex> LibOss.Core.Acl.public_writable?("public-read")
false

put_bucket_acl(name, bucket, acl)

@spec put_bucket_acl(module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.acl()) ::
  :ok | err_t()

设置存储桶ACL

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • acl: ACL权限值

ACL权限值

  • "private": 私有权限
  • "public-read": 公共读权限
  • "public-read-write": 公共读写权限

返回值

  • :ok | {:error, Exception.t()}

示例

iex> LibOss.Core.Acl.put_bucket_acl(MyOss, "my-bucket", "public-read")
:ok

put_object_acl(name, bucket, object, acl)

@spec put_object_acl(
  module(),
  LibOss.Typespecs.bucket(),
  LibOss.Typespecs.object(),
  LibOss.Typespecs.acl()
) :: :ok | err_t()

设置对象ACL

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称
  • acl: ACL权限值

ACL权限值

  • "private": 私有权限
  • "public-read": 公共读权限
  • "public-read-write": 公共读写权限
  • "default": 继承存储桶权限

返回值

  • :ok | {:error, Exception.t()}

示例

iex> LibOss.Core.Acl.put_object_acl(MyOss, "my-bucket", "my-object", "public-read")
:ok

valid_acls()

@spec valid_acls() :: [String.t()]

获取有效的ACL值列表

返回值

  • [String.t()]

示例

iex> LibOss.Core.Acl.valid_acls()
["private", "public-read", "public-read-write", "default"]

validate_acl(acl)

@spec validate_acl(LibOss.Typespecs.acl()) :: :ok | {:error, LibOss.Exception.t()}

验证ACL值是否有效

参数

  • acl: 要验证的ACL值

返回值

  • :ok | {:error, Exception.t()}

示例

iex> LibOss.Core.Acl.validate_acl("public-read")
:ok

iex> LibOss.Core.Acl.validate_acl("invalid-acl")
{:error, %LibOss.Exception{}}