3 releases

0.1.2 Mar 9, 2024
0.1.1 Mar 4, 2024
0.1.0 Feb 2, 2024

#1698 in Web programming

MIT license

53KB
629 lines

utapi-rs

A high-level, ergonomic Rust crate for interacting with the Uploadthing API.

Why?

If you're using Rust and want to use Uploadthing for file uploading, utapi-rs streamlines the process by providing a set of convenient functions mirroring Uploadthing's API.

Setup

Add the following to your Cargo.toml file to include utapi-rs as a dependency:

[dependencies]
utapi-rs = "0.1.0"

Usage

Below is a quick example of using utapi-rs to list files and delete a file.

use utapi_rs::{UtApi, ListFilesOpts, DeleteFileResponse};

#[tokio::main]
async fn main() {
    // Assume `new` attempts to retrieve the API key from an environment variable.
    let api = UtApi::new(None).expect("API key must be set");

    // List the files
    let opts = Some(ListFilesOpts {
        limit: Some(10), // Just as an example, limits the results to 10 files
        offset: None, // No offset for this example
    });

    match api.list_files(opts).await {
        Ok(file_response) => println!("Files: {:?}", file_response),
        Err(e) => eprintln!("Error listing files: {:?}", e),
    }

    // Delete a file
    match api.delete_files(vec!["file_key_to_delete".to_string()]).await {
        Ok(DeleteFileResponse { success }) => println!("Successfully deleted file: {}", success),
        Err(e) => eprintln!("Error deleting file: {:?}", e),
    }
}

Ensure that you have the tokio async runtime in your dependencies, as this library is designed to work asynchronously.

API Key

For security purposes, it is recommended not to hardcode the API key in your codebase. Instead, you should set it up as an environment variable:

# .env
UPLOADTHING_SECRET=sk_*************************

Make sure to load the .env file or export the environment variable for your runtime accordingly.

Contributing

Contributions are welcome! Please read our contributing guidelines for more details.

License

utapi-rs is released under the MIT License. See the LICENSE file for details.

Dependencies

~7–19MB
~281K SLoC