Skip to content

Latest commit

 

History

History
86 lines (61 loc) · 2.48 KB

File metadata and controls

86 lines (61 loc) · 2.48 KB

OSS Client

English | 简体中文


OSS Client

A lightweight and easy-to-use Alibaba Cloud OSS (Object Storage Service) client library, providing basic file operations and signed URL functionality.

Features

OssClientTrait (Unified Interface)

  • Unified Interface: Defines basic operation interfaces for OSS clients
  • Polymorphic Support: Supports unified usage of private bucket and public bucket clients
  • Code Reuse: Reduces duplicate code, improves maintainability

OssClient (Private Bucket Client)

  • File Operations: Upload, download, delete files
  • Signed URLs: Generate upload/download signed URLs with expiration time
  • File Management: Check file existence, generate unique object keys
  • Connection Test: Test OSS connection status

PublicOssClient (Public Bucket Client)

  • Public Access: Generate unsigned public download/access URLs
  • Batch Operations: Batch generate public URLs
  • File Operations: Upload, download, delete files (using public bucket)
  • Signed URLs: Generate upload signed URLs (using public bucket)
  • File Management: Check file existence, generate unique object keys
  • Connection Test: Test public bucket connection status
  • Metadata Retrieval: Get file metadata (via HTTP HEAD requests)

Installation

Add to your Cargo.toml:

[dependencies]
oss-client = { path = "../oss-client" }  # If in the same workspace
# or
oss-client = "0.1.0"  # If published to crates.io

Quick Start

Environment Variable Configuration

export OSS_ACCESS_KEY_ID="your_access_key_id"
export OSS_ACCESS_KEY_SECRET="your_access_key_secret"

Basic Usage

use oss_client::{OssClient, OssConfig};
use std::time::Duration;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create client from environment variables (recommended)
    let client = oss_client::create_client_from_env()?;

    // Upload file
    let upload_url = client.upload_file("local/document.pdf", "uploads/document.pdf")?;
    println!("File uploaded successfully: {}", upload_url);

    // Check if file exists
    let exists = client.file_exists("uploads/document.pdf")?;
    println!("File exists: {}", exists);

    // Download file
    client.download_file("uploads/document.pdf", "downloaded/document.pdf")?;
    println!("File downloaded successfully");

    Ok(())
}

License

MIT OR Apache-2.0

Contributing

Issues and Pull Requests are welcome!