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}