PasteMyst.RS

pastemyst-rs is an api wrapper for pastemyst written in Rust.

⚠ This package is under development ⚠

### Sample usage To get a paste from pastemyst synchronously: ```rust use pastemyst::paste; use pastemyst::paste::PasteObject; fn main() -> Result<(), Box> { let paste: PasteObject = paste::get_paste("hipfqanx")?; println!("{}", paste.pasties[1].language); Ok(()) } ``` To create paste synchronously: ```rust use pastemyst::paste; use pastemyst::paste::PasteObject; fn main() -> Result<(), Box> { let pasties: Vec = vec![ PastyObject { _id: str!(""), language: str!(pastemyst::data::language::RUST), title: "A pasty title".to_string(), code: String::from("fn main() { println!(\"Hello World!\"); }"), }, PastyObject { _id: str!(""), title: "Another pasty title".to_string(), language: str!(pastemyst::data::language::CLANG), code: String::from("#include \"stdio.h\"\n\nint main() {\n\tprintf(\"Hello World!\");\n}"), }, ]; let data: CreateObject = CreateObject { title: String::from("[crates.io/crates/pastemyst] This is a title"), expiresIn: String::from("1d"), isPrivate: false, isPublic: false, tags: String::from(""), pasties: pasties, }; let paste: /*reqwest::Response*/ = paste::create_paste(data).unwrap(); // You don't need to add the commented part, that's jut for your information. println!("{}", paste._id); Ok(()) } ``` More from the [examples](./examples/) and [documentation](https://docs.rs/pastemyst/). ### Feature support | Feature | Support | Async | | :---------------------------------- | :-------: | -----: | | API v1 | ✔ | ⛔ | | API v2 | ✔ | ⛔ | | Get pastes | ✔ | ✔ | | Get private pastes | ✔ | ✔ | | Create pastes | ✔ | ✔ | | Create Private pastes* | ✔ | ✔ | | Edit pastes | ✔ | ✔ | | Delete pastes | ✔ | ✔ | | Get Users | ✔ | ✔ | | Check if a user exists | ✔ | ✔ | | Get a language by name | ✔ | ✔ | | Get a language by extension | ✔ | ✔ | | Time expires in to a unix timestamp | ✔ | ✔ | ✔ = Done/Implemented and fully functional ❌ = Not done/implemented ⛔ = N/A *This also includes a paste to be tied to your account, or create a private/public paste, or with tags. ### Repository structure This is the current structure of the code: ``` ./ ├───.github/ │ ├─.workflows/ │ │ └─ rust.yml │ └─ISSUE_TEMPLATES/ │ ├─ bug_report.md │ ├─ feature_request.md │ ├─ documentation.md │ └─ question.md ├───examples/ │ ├─ paste.rs │ ├─ time.rs │ ├─ data.rs │ └─ user.rs ├───src/ │ └─ lib.rs ├─── .gitattributes ├─── .gitignore ├─── Cargo.toml ├─── LICENSE └─── README.MD ``` ### Building and Running Being a Rust library, pastemyst-rs requires the Rust compiler installed. To check if it's installed, run: `rustc --version` and `cargo --version` to verify it. If it's not installed, install it from their [site](https://rust-lang.org). Once that's cleared out; run `cargo install` to get the packages. To test it on-hand, either 1. Create a main.rs with the main method and run those tests (`cargo run`). 2. Run from the examples using `cargo run --example example_name`, for example `cargo run --example get_paste`. #### Installation If you want to use it in your rust application, it is recommended to get the crate from https://crates.io/crates/pastemyst. In your `Cargo.toml` file, under `[dependencies]` paste this: ```toml pastemyst = "" # OR pastemyst = { version = "" } ``` ### Versioning pastemyst-rs uses [SemVer](https://semver.org/). > Given a version number MAJOR.MINOR.PATCH, increment the > > `MAJOR` version when you make incompatible API changes, > > `MINOR` version when you add functionality in a backwards compatible manner, and > > `PATCH` version when you make backwards compatible bug fixes. > > Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format. ### Help/Assistance You can [create an issue](https://github.com/ANF-Studios/BotANF/issues/new) or just join the support (discord) server. Discuss in the server