LibOss.Core.Token (lib_oss v0.3.0)
View SourceToken生成模块
负责:
- Web上传令牌:get_token
- 策略和签名生成
Summary
Types
@type err_t() :: {:error, LibOss.Exception.t()}
Functions
@spec content_length_range(non_neg_integer(), non_neg_integer()) :: list()
创建文件大小限制条件
参数
- min_size: 最小文件大小(字节)
- max_size: 最大文件大小(字节)
返回值
- list()
示例
iex> LibOss.Core.Token.content_length_range(1024, 10485760)
["content-length-range", 1024, 10485760]
创建内容类型条件
参数
- content_type: MIME类型
返回值
- list()
示例
iex> LibOss.Core.Token.content_type_condition("image/jpeg")
["eq", "$content-type", "image/jpeg"]
@spec get_token( module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), non_neg_integer(), binary() ) :: {:ok, binary()} | err_t()
生成Web上传令牌
参数
- name: Agent进程名称
- bucket: 存储桶名称
- object: 对象名称前缀
- expire_sec: 过期时间(秒,默认3600秒)
- callback: 回调URL(可选)
返回值
| {:error, Exception.t()}
返回JSON格式的上传令牌,包含:
- accessid: 访问密钥ID
- host: 上传主机URL
- policy: Base64编码的策略
- signature: 签名
- expire: 过期时间戳
- dir: 对象前缀
- callback: Base64编码的回调信息
示例
iex> LibOss.Core.Token.get_token(MyOss, "my-bucket", "uploads/", 3600, "https://example.com/callback")
{:ok, "{"accessid":"...","host":"https://my-bucket.oss-cn-hangzhou.aliyuncs.com","policy":"...","signature":"...","expire":1640995200,"dir":"uploads/","callback":"..."}"}相关文档
@spec get_token_with_policy( module(), LibOss.Typespecs.bucket(), list(), non_neg_integer(), binary() ) :: {:ok, binary()} | err_t()
生成自定义策略的上传令牌
参数
- name: Agent进程名称
- bucket: 存储桶名称
- policy_conditions: 策略条件列表
- expire_sec: 过期时间(秒,默认3600秒)
- callback: 回调URL(可选)
策略条件示例
[
["starts-with", "$key", "uploads/"],
["content-length-range", 1, 10485760],
["eq", "$content-type", "image/jpeg"]
]返回值
| {:error, Exception.t()}
示例
iex> conditions = [["starts-with", "$key", "photos/"], ["content-length-range", 1, 5242880]]
iex> LibOss.Core.Token.get_token_with_policy(MyOss, "my-bucket", conditions, 3600)
{:ok, "{"accessid":"...","host":"...","policy":"...","signature":"...","expire":1640995200,"dir":"","callback":""}"}
解析上传令牌信息
参数
- token: 令牌JSON字符串
返回值
| {:error, Exception.t()}
示例
iex> LibOss.Core.Token.parse_token(token_json)
{:ok, %{
"accessid" => "...",
"host" => "https://...",
"expire" => 1640995200,
"dir" => "uploads/"
}}
创建键前缀条件
参数
- prefix: 对象键前缀
返回值
- list()
示例
iex> LibOss.Core.Token.starts_with_condition("uploads/images/")
["starts-with", "$key", "uploads/images/"]
验证上传令牌是否过期
参数
- token: 令牌JSON字符串
返回值
- boolean()
示例
iex> LibOss.Core.Token.token_expired?(token_json)
false
@spec token_remaining_time(binary()) :: {:ok, non_neg_integer()} | err_t()
获取令牌剩余有效时间(秒)
参数
- token: 令牌JSON字符串
返回值
| {:error, Exception.t()}
如果令牌已过期,返回0
示例
iex> LibOss.Core.Token.token_remaining_time(token_json)
{:ok, 3540}