qstash-rs

Crates.ioqstash-rs
lib.rsqstash-rs
version0.5.1
sourcesrc
created_at2023-09-11 03:24:09.133227
updated_at2024-06-25 12:16:02.356788
descriptionA Rust SDK for Upstash QStash
homepagehttps://github.com/DrSh4dow/qstash-rs
repositoryhttps://github.com/DrSh4dow/qstash-rs
max_upload_size
id969195
size47,561
Daniel Moretti V. (DrSh4dow)

documentation

README

qstash-rs 🦀: Upstash QStash SDK for Rust

Crates.io

About

qstash-rs is a Rust library for interacting with Upstash QStash. It contains a client and a server (WIP) module. The client library it is a wrapper around the Upstash QStash REST API.

Installation

You can install qstash-rs with cargo:

cargo add qstash-rs

Client Usage

To start using the client SDK, you need to instantiate the Client struct with your QStash token:

#[tokio::main]
async fn main() {
  let qstash_client = Client::new("<QSTASH_TOKEN>", None, None).expect("Could not create client");
}

Then you can access any of the methods that the client supports. For example to publish a new message with a JSON body to a queue:

#[tokio::main]
async fn main() {
    let qstash_client = Client::new("<QSTASH_TOKEN>", None, None).expect("Could not create client");

    match qstash_client
        .publish_json(
            PublishRequestUrl::Url("https://google.com".parse().expect("Could not parse URL")),
            HashMap::from([("test", "test")]),
            None,
        )
        .await
    {
        Ok(r) => {
            tracing::info!("Response: {:?}", r);
            for res in r {
                if res.error.is_some() {
                    panic!("This should NOT have an error");
                }
            }
        }
        Err(e) => {
            tracing::error!("{}", e.to_string());
            panic!("Could not publish");
        }
    };
}

A more comprehensive example can be found in the crate documentation

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue if you have a problem, question, or suggestion.

License

This project operates under the MIT License. Details in the LICENSE file.

Commit count: 36

cargo fmt