novuhq / novu-rust

MIT License
17 stars 13 forks source link
hacktoberfest hacktoberfest-accepted novu rust

Novu's Rust SDK

NOTE: THIS PROJECT IS NOT CURRENTLY IN CRATES.IO

This is the Blazingly Fast (not really) SDK for novu. This SDK should be used in your server-side code. πŸš€

TODO

Quick Start

Requirements

  1. Rust
  2. An API key for novu. You can get one here by opening settings and clicking "Api Keys" tab. Or by using your selfhosted instance πŸ™‚

Triggering a notification

You need to add the novu dependency to your Cargo.toml. This can be done with cargo add novu. Currently not possible.

We currently only support async/await.

// Here you create the instance
// If you're selfhosting, You can replace `None` with `Some("your selfhosted novu instance api url")`
let novu = Novu::new("<your api key>", None).unwrap();

let result = novu
    .trigger(TriggerPayload {
        name: "<your template name>".to_string(),
        payload: HashMap::new(),
        to: TriggerRecipientsType::Single(
            TriggerRecipientBuilder::new("<your subscriber id>")
                .first_name("<first name>") // Optional
                .email("<email>") // Optional
                .build(),
        ),
    })
    .await;

// Here you can handle the outcome.
match result {
    Ok(event) => {
        println!(
            "Notification sent!!! \n\nack: {}\nstatus: {}\ntransaction_id: {}",
            event.acknowledged, event.status, event.transaction_id
        )
    }
    Err(api_error) => println!("An error occurred: {}", api_error),
}

Things you need to do

Optional

Contributing

Glad that you want to contribute! πŸŽ‰

Currently we don't have CONTRIBUTION.md or CODE_OF_CONDUCT.md, but these will be created soonβ„’

API Docs: docs.novu.co/api

Steps to follow

  1. Fork the repository
  2. Make your changes
  3. Test that those work πŸ˜„
  4. Push the changes to your fork and make a PR (Pull Request)
  5. Now someone will review it and hopefully merge it to the repository πŸŽ‰πŸŽ‰

Support

For support, join Novu's Discord server or email me@midka.dev.