Crate sentrystr

Crate sentrystr 

Source
Expand description

§SentryStr Core

Core functionality for SentryStr - a decentralized error tracking and alerting system using Nostr.

§Quick Start

use sentrystr::{Config, Event, Level, NostrSentryClient};
use nostr::Keys;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Basic setup
    let keys = Keys::generate();
    let relays = vec!["wss://relay.damus.io".to_string()];
    let config = Config::new(keys.secret_key().display_secret().to_string(), relays);

    // Create client
    let client = NostrSentryClient::new(config).await?;

    // Send events
    let event = Event::new()
        .with_message("Something went wrong")
        .with_level(Level::Error);

    client.capture_event(event).await?;
    client.capture_error("Database connection failed").await?;
    client.capture_message("System started").await?;

    Ok(())
}

§With Direct Messaging

use sentrystr::{Config, DirectMessageBuilder, Event, Level, NostrSentryClient};
use nostr::prelude::*;
use nostr_sdk::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Setup main client
    let keys = Keys::generate();
    let relays = vec!["wss://relay.damus.io".to_string()];
    let config = Config::new(keys.secret_key().display_secret().to_string(), relays.clone());
    let mut client = NostrSentryClient::new(config).await?;

    // Setup direct messaging
    let dm_keys = Keys::generate();
    let dm_client = Client::new(dm_keys.clone());
    dm_client.add_relay("wss://relay.damus.io").await?;
    dm_client.connect().await;

    let recipient = Keys::generate().public_key();
    let dm_sender = DirectMessageBuilder::new()
        .with_client(dm_client)
        .with_keys(dm_keys)
        .with_recipient(recipient)
        .with_min_level(Level::Error)
        .with_nip17(true)
        .build()?;

    client.set_direct_messaging(dm_sender);

    // Now errors will also send DMs
    client.capture_error("Critical system failure").await?;

    Ok(())
}

Re-exports§

pub use client::NostrSentryClient;
pub use config::Config;
pub use config::EncryptionVersion;
pub use encryption::validate_encryption_keys;
pub use encryption::EncryptionHelper;
pub use error::SentryStrError;
pub use event::Event;
pub use event::Exception;
pub use event::Frame;
pub use event::Level;
pub use event::Request;
pub use event::Stacktrace;
pub use event::User;
pub use messaging::DirectMessageBuilder;
pub use messaging::DirectMessageConfig;
pub use messaging::DirectMessageSender;
pub use messaging::MessageEvent;

Modules§

client
combined_example
config
encryption
error
event
messaging

Type Aliases§

Result