LibOss.Core.Acl (lib_oss v0.3.0)
View SourceACL管理模块
负责:
- 对象ACL:put_object_acl, get_object_acl
 - 存储桶ACL:put_bucket_acl, get_bucket_acl
 - ACL验证逻辑
 
Summary
Types
@type err_t() :: {:error, LibOss.Exception.t()}
Functions
@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"
  @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", ...}]
}}
  @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", ...}]
}}
  @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
  @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
  @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
  @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
  @spec valid_acls() :: [String.t()]
获取有效的ACL值列表
返回值
- [String.t()]
 
示例
iex> LibOss.Core.Acl.valid_acls()
["private", "public-read", "public-read-write", "default"]
  @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{}}