pub trait Subscriber: Send + Sync {
// Required methods
fn name(&self) -> &'static str;
fn emit(
&self,
event: &Event,
vars: &dyn Fn(&str) -> Option<String>,
) -> Option<Delivery>;
}Expand description
A destination for events (Rails’ event subscribers): turns an Event into the request to send.
vars looks up a Worker variable or secret by name. Return None to
send nothing, e.g. for events it ignores.
§Examples
use ocre::events::{Delivery, Event, Subscriber};
/// Posts every `order.*` event to an analytics endpoint.
struct Analytics;
impl Subscriber for Analytics {
fn name(&self) -> &'static str {
"analytics"
}
fn emit(&self, event: &Event, vars: &dyn Fn(&str) -> Option<String>) -> Option<Delivery> {
if !event.name.starts_with("order.") {
return None;
}
let body = serde_json::json!({ "event": event.name, "properties": event.payload }).to_string();
Some(Delivery { url: vars("ANALYTICS_URL")?, headers: vec![("content-type".into(), "application/json".into())], body })
}
}
ocre::events::subscribe(Analytics);Required Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".