Skip to content

Releases: tu6ge/oss-rs

V 0.13.0

03 Feb 02:47

Choose a tag to compare

What's Changed

  • 使用大模型优化了代码结构 by @tu6ge in #35

示例代码

use aliyun_oss_client::{Client, Bucket};
use futures_util::StreamExt;

async fn run() -> Result<(), aliyun_oss_client::Error> {
    let client = Client::from_env()?;
    // or let client = Client::new("key_xxx", "secret_yyy", "endpoint_url")?;

    // 获取 buckets 列表
    let buckets = client.get_buckets().await?;

    // 用流的方式获取文件列表
    // 接口每次请求只读取5个文件,随着 next() 函数的不断调用,每隔五个会重新调用一次接口,获取下一页的文件
    let mut stream = Client::from_env()?
        .bucket("honglei123")?
        .max_keys(5)
        .objects();

    let mut i = 0;
    while let Some(item) = stream.next().await {
        println!("{item:?}");
        i = i + 1;
        if i > 7 {
            // 不加限制的话,会获取所有文件
            break;
        }
    }

    // 完整的查询条件示例
    let mut stream = Client::from_env()?
        .bucket("honglei123")?
        .max_keys(5)
        .prefix("prefix1/")
        .delimiter("/")
        .continuation_token("foo")
        .encoding_type("foo2")
        .start_after("foo3")
        .fetch_owner(true)
        .objects();

    // 查询 Object 并转化成自定义类型
    #[derive(Debug, Deserialize)]
    struct MyObject {
        Key: String,
    }
    let mut stream = Client::from_env()?
        .bucket("honglei123")?
        .max_keys(5)
        .objects_as::<MyObject>();

    // 获取文件的详细信息
    let obj_info = Bucket::from_env()?
        .object("abc.txt")
        .get_info()
        .await?;

    // 上传文件
    let res = Bucket::from_env()?
        .object("abc2.txt")
        .content_type("text/plain;charset=utf-8")
        .upload("aaab")
        .await?;

    // 使用文件句柄上传文件
    let mut f = tokio::fs::File::open("example_file.txt").await?;
    let info = Bucket::from_env()?
        .object("abc_file.txt")
        .content_type("text/plain;charset=utf-8")
        .upload(f)
        .await?;

     // 使用目录上传文件
    let res = Bucket::from_env()?
        .object("abc2.txt")
        .content_type("text/plain;charset=utf-8")
        .upload_file("local.txt")
        .await?;

    // 下载文件到文件句柄
    // 使用流式下载,支持边下载边解压/压缩
    let mut file = tokio::fs::File::create("aaa.txt").await?;
    let res = Bucket::from_env()?
        .object("download1.jpg")
        .download(&mut file)
        .await?;

    //下载文件到指定文件路径
    let res = Bucket::from_env()?
        .object("download1.jpg")
        .download_to_file("local.jpg")
        .await?;

    //获取下载文件的 Vec<u8> 内容
    let content = Bucket::from_env()?
        .object("download1.jpg")
        .download_to_bytes()
        .await?;

    //获取下载文件的 String 内容
    let content = Bucket::from_env()?
        .object("download1.jpg")
        .download_to_string()
        .await?;

    // 复制文件
    let res = Bucket::from_env()?
        .object("new_file.txt")
        .copy_source("/bucket_name/source_file.txt")
        .content_type("text/plain;charset=utf-8")
        .copy()
        .await?;

    // 分片上传(大文件)
    let result = Bucket::from_env()?
        .object("myvideo23.mov")
        .multipart()
        //.part_size(3 * 1024 * 1024) // 调整分片大小,默认 1M
        .from_file("./video.mov")
        .upload()
        .await?;

    // 删除文件
    let result = Bucket::from_env()?
        .object("abc.txt")
        .delete()
        .await?;

    Ok(())
}

Full Changelog: v0.13.0-alpha12...v0.13.0

V0.12.7

14 Aug 00:56
43ba6d6

Choose a tag to compare

Internal changes

V0.12.6

14 Aug 00:55
5209234

Choose a tag to compare

Features

Bug Fixes

V0.12.5

14 Aug 00:54
ffcace9

Choose a tag to compare

Internal changes

V0.12.4

14 Aug 00:54
03ea026

Choose a tag to compare

Features

  • client: Reduce constraints on generic param (400d928)
  • object: add help fn in objects (4d1ac3f)

Bug Fixes

  • types: changed BucketName default fn (2ea507c)

V0.12.3

14 Aug 00:52
1d9924c

Choose a tag to compare

Internal changes

V0.12.2

14 Aug 00:51
6871b47

Choose a tag to compare

Bug Fixes

  • types: debug KeySecret hidden content (4956412)

v0.12.1

09 Jun 00:49
9998d69

Choose a tag to compare

Features

v0.12.0

01 Jun 07:43
df14b15

Choose a tag to compare

⚠ BREAKING CHANGES

  • object: object 构建器调整
  • object: object 构建器调整
  • decode: remove set_next_continuation_token
  • error: set field to private
  • types: change QueryKey to struct
  • types: change EndPoint to struct
  • decode: remove ItemError trait
  • types: change Query insert method
  • decode: next_token remove Option warp

Features

  • auth: 为 Request 附加 with_oss 方法 (114c1e0)
  • auth: change AuthError to struct (a4b7962)
  • auth: change with_oss args type (21820c7)
  • auth: set OssHost trait to private (2befdb5)
  • auth: set_sensitive with secret (7a02e84)
  • bucket: add to_vec method in blocking (2d63089)
  • bucket: change BucketError to struct (70dfe5b)
  • bucket: change ExtractItemError to struct (ff317e9)
  • builder: add Box in Error enum (5117b52)
  • builder: change BuilderError to struct (cd7f123)
  • config: add set_internal in BucketBase (576de60)
  • config: change InvalidConfig to struct (c80355d)
  • config: fixed InvalidConfig display info (7f31892)
  • core: decode xml return more info (0c3170f)
  • core: decoupling in Errors (9610ad6)
  • core: default datetime value update (a8c2bed)
  • core: renamed ObjectList, ListBuckets (8c17aa9)
  • decode: 解析 xml 错误时,返回更多信息 (c1dad3d)
  • decode: add Box in Error enum (985cb45)
  • decode: Add non_exhaustive in Error type (f39f76b)
  • decode: Add non_exhaustive in InnerListError (72f33c9)
  • decode: change enum to struct InnerListError (5ea1a06)
  • decode: change Error in trait (0dd2c1b)
  • decode: next_token remove Option warp (d91f473)
  • decode: remove ItemError trait (e0c8424)
  • decode: remove set_next_continuation_token (dd005f8)
  • decode: set ListErrorKind to private (5adfb2a)
  • derive: remove #[derive(CustomItemError)] (db6cca3)
  • error: change OssError to struct (e089790)
  • error: remove Input in Error enum (e8c6d4e)
  • error: set field to private (e0bbc43)
  • file: change FileError to struct (7fb1a0a)
  • file: change OssError enum item (a489952)
  • file: get_object support more num type (c8c111b)
  • file: rename BlockingFiles (25bb539)
  • lint: remove warning lint (9915737)
  • object: add ListBucketsSync type alias (8f567ae)
  • object: add new method of StorageClass (11ebb58)
  • object: add ObjectListSync type (e8012be)
  • object: change BuildInItemError to struct (5a8b4b5)
  • object: change ExtractListError to struct (8af9d72)
  • object: change ObjectListError to struct (d3cfe3c)
  • object: object 构建器调整 (d693e50)
  • object: object 构建器调整 (5a094b3)
  • object: set BuildInItemErrorKind private (6f6b198)
  • object: set object_list to private in struct (ba66764)
  • sts: set sensitive security-token (b9dad10)
  • type: change InvalidObjectBase inner (0e37837)
  • types: 从 env 转化配置的时候,处理 endpoint 的情况 (8e95b37)
  • types: 升级 KeySecret 类型的安全性 (29c44fc)
  • types: add non_exhaustive in QueryKey (2601b03)
  • types: Add priv in inner type (671cb12)
  • types: change EndPoint to struct (32628ee)
  • types: change InvalidBucketName display info (71df709)
  • types: change InvalidObjectDir display info (8da7edf)
  • types: change Query insert method (8e041c8)
  • types: change QueryKey to struct (12fe959)
  • types: Date only from DateTime (bdfed8c)
  • types: rename Trait (4fc1b87)
  • types: set ObjectBase::new to pub(crate) (7746c73)

Bug Fixes

  • auth: 解决模块之间的依赖问题 (3965c77)
  • no default features (98220d4)
  • object: fixed macro error (c7d4b4e)

Reverts

  • Revert "feat(file)!: GetStd GetStdWithPath remove method" (799cbff)
  • Revert "fix(test)" (9a3a7c5)

v0.11.9

31 May 08:58
f96c905

Choose a tag to compare

  • remove secret in HeaderMap
  • KeySecret methods add deprecate tip, next release KeySecret will not read plaintext.