use std::fmt::Debug;
use serde_json::Value;
use tracing::{Level};
pub use filters::EventFilters;
pub use worker::BackgroundWorker;
pub use worker::WorkerMessage;
pub mod filters;
mod worker;
pub mod layer;
mod aws_lambda;
pub type ChannelSender = tokio::sync::mpsc::UnboundedSender<WorkerMessage>;
pub type ChannelReceiver = tokio::sync::mpsc::UnboundedReceiver<WorkerMessage>;
pub trait WebhookMessage: Debug + Send + Sync {
fn webhook_url(&self) -> &str;
fn serialize(&self) -> String;
}
pub trait WebhookMessageFactory {
fn create(inputs: WebhookMessageInputs) -> impl WebhookMessage;
}
pub struct WebhookMessageInputs {
pub app_name: String,
pub message: String,
pub target: String,
pub span: String,
pub metadata: String,
pub webhook_url: String,
pub source_line: u32,
pub source_file: String,
pub event_level: Level,
}
#[allow(dead_code)]
#[derive(Clone, Debug)]
pub enum WebhookMessageSpec {
TextNoEmbed(String),
TextWithEmbed(String, Vec<Value>),
EmbedNoText(Vec<Value>),
}
pub trait Config {
fn webhook_url(&self) -> &str;
fn new_from_env() -> Self
where
Self: Sized;
}
#[cfg(test)]
mod tests {}