Coffrifydocs
⌘K
SDK

SDK Rust

Crate officiel, async/await avec tokio.

Version

Crate `coffrify` sur crates.io - Rust ≥ 1.75, async avec `tokio`.

Installation

terminal
$ cargo add coffrify
Updating crates.io index Adding coffrify v0.2.0 to dependencies

Utilisation

main.rsrust
use coffrify::{Client, CreateTransferParams, File};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new(std::env::var("COFFRIFY_API_KEY")?);

    let transfer = client
        .transfers()
        .create(CreateTransferParams {
            files: vec![File { name: "document.pdf".into(), size: 204800 }],
            expires_in: "7d".into(),
            ..Default::default()
        })
        .await?;

    println!("{}", transfer.short_code);
    println!("{}", transfer.share_url);

    // Upload
    let data = tokio::fs::read("document.pdf").await?;
    client.upload(&transfer.upload_urls[0], data).await?;
    client.transfers().finalize(&transfer.id).await?;

    Ok(())
}

Gestion des erreurs

use coffrify::Error;

match result {
    Err(Error::RateLimit { retry_after }) => {
        tokio::time::sleep(Duration::from_secs(retry_after)).await;
    }
    Err(Error::Api { status, code, message }) => {
        eprintln!("{status} {code}: {message}");
    }
    _ => {}
}