# myust: 📋=>🌐=>🦀
## 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.
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};
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) } } } ```
Asynchronously deleting a paste (you must own the paste): ```rust use myust::AuthClient;
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) } } } ```
Synchronously creating a multifile paste with a password (you must have the 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) } ```
You can check for another example snippets in the test folder.
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.