S3 client and Signature V4 implementation for MoonBit
Dependencies
async test "客户端构造得出来,UTC 两串由时钟换算而不靠系统区域" {
let credentials = @sigv4.Credentials::new("ak", "sk")
let config = @sdk.Config::new(
"https://s3.example.invalid",
"us-east-1",
credentials,
addressing_style=@sdk.AddressingStyle::Path,
)
let _client = @sdk.Client::new(config, @transport.AsyncHttpTransport::new())
let (date, stamp) = @sdk.utc_stamps(1760000000000L)
assert_eq(date.length(), 8)
assert_eq(stamp.length(), 16)
let code = @sdk.xml_error_code(
"<Error><Code>NoSuchBucket</Code><Message>gone</Message></Error>",
)
assert_eq(code, "NoSuchBucket")
}| 存储侧要的那一格 | 本 SDK 的件 | 状态 |
|---|---|---|
| 上传 / 下载 / 删除 / 存在 | put_object get_object delete_object stat_object | 已实现 |
| 手动分片五步 | 五个件,见下注 | 已实现 |
| 预签名 GET 与 PUT | presigned_url presigned_get_url | 已实现 |
| 同平台复制 / 移动 | copy_object(移动=复制+delete_object) | 已实现 |
| 单层列举 | list_objects(含前缀与分隔符) | 已实现 |
| 对象 ACL 读写 | put_object_acl get_object_acl | 已实现 |
| 用户元数据 | response_user_metadata + 写入侧的 x-amz-meta-* | 已实现 |
| 桶族四法(端口不要,SDK 自用) | create_bucket bucket_exists list_buckets delete_bucket | 已实现 |
| 大文件"一条式"上传(自动切分片) | 无对应件,分片由调用侧按五步走 | 待开发 |
| 上传进度回调 | 无对应件 | 待开发 |
| 版本化对象(?versionId) | 无对应件 | 待开发 |
| 服务端加密头(x-amz-server-side-encryption) | 无对应件 | 待开发 |
moon add mldong/moon-s3Install
Download zipS3 client and Signature V4 implementation for MoonBit
Dependencies