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.