# myust: 📋 => 🌐 => 🦀

crates.io Documentation MIT

## Introduction

myust is a rich and hybrid Rust wrapper for the mystb.in API that aims for user-flexibility.

myust supports hybrid clients:

⚠️ Synchronous clients are only available on the [sync] feature.

Authentication

You can authenticate with the API using the auth method with your [mystb.in], example:

```rust use myust::{Client, SyncClient};

let client = CLient::new().auth("YOURMYSTBINTOKEN").await; // or using synchronous client, let client = SyncCLient::new().auth("YOURMYSTBINTOKEN"); ```

It will panic if the provided token is invalid.

## Installation

Add myust = "1.0" to your Cargo.toml file.

toml [dependencies] myust = "1.0" tokio = "1.0"

If you want to use synchronous clients, add the sync feature.

toml [dependencies] myust = { version = "1.0", features = ["sync"] }

## Usage Examples

Asynchronously creating a paste with tomorrow expiration date, with error handling: ```rust use myust::{Client, Expiry};

[tokio::main]

async fn main() { let client = Client::new(); let tomorrow = Expiry { days: 1, ..Default::default() }; // other fields default to 0 let result = client .createpaste(|p| { p.filename("myust.txt") .content("Hello from myust!") .expires(tomorrow) }) .await; match result { Ok() => { let paste = result.unwrap(); println!("{paste:#?}"); let url = format!("https://mystb.in/{}", paste.id); println!("Result: {}", url) } Err() => { println!("Error code: {}", result.unwraperr().code) } } } Synchronously creating a multifile paste with a password (you must have the [`sync`][sync] feature enabled): rust use myust::SyncClient;

fn main() { let client = SyncClient::new(); let paste = client .createmultifilepaste(|p| { p.file(|f| { f.filename("myust1.txt") .content("first file") .password("myust") }); // set the password on the first file only, same for expiration date p.file(|f| f.filename("myust2.txt").content("second file")) }) .unwrap(); let url = format!("https://mystb.in/{}", paste.id); println!("Result: {}", url) } ```

Asynchronously deleting a paste (you must own the paste): ```rust use myust::AuthClient;

[tokio::main]

async fn main() { let client = AuthClient::new() .auth(std::env::var("MYSTBINTOKEN").unwrap()) .await; let result = client.deletepaste("EquipmentMovingExpensive").await; // The paste ID to delete match result { Ok() => println!("Successfully deleted the paste."), Err() => { println!("Error code: {}", result.unwrap_err().code) } } } ```

You can check for another example snippets in the test folder.

Help & Contributing

If you need any help regarding myust, feel free to open an issue about your problem, and feel free to make a pull request for code improvements, bugfixing, etc.