rustglm 1.0.0

Production-oriented async Rust SDK for Zhipu GLM, Realtime, Batch, RAG, and MCP
Documentation
use std::path::Path;

use rustglm::{FileUploadRequest, ZhipuClient};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let input = std::env::args()
        .nth(1)
        .ok_or("usage: cargo run --example file_management -- path/to/file")?;
    let path = Path::new(&input);
    let file_name = path
        .file_name()
        .and_then(|value| value.to_str())
        .ok_or("path must have a UTF-8 file name")?;
    let client = ZhipuClient::new(std::env::var("ZHIPU_API_KEY")?)?;
    let uploaded = client
        .upload_file(FileUploadRequest::from_bytes(
            file_name,
            std::fs::read(path)?,
            "file-extract",
        ))
        .await?;
    println!("uploaded={}", uploaded.id);

    let files = client.files(Some("file-extract"), Some(20)).await?;
    println!("listed={}", files.data.len());
    let content = client.file_content(&uploaded.id).await?;
    println!("downloaded={} bytes", content.len());
    let deleted = client.delete_file(&uploaded.id).await?;
    println!("deleted={}", deleted.deleted);
    Ok(())
}