SDKs
Rust (Beta)
The Rust SDK is currently in beta.
Installing
Copy
[dependencies]
sailhouse = { version = "0.1" }
# Just for the examples below
tokio = { version = "1", features = ["full"] }
Basic Usage
Copy
use std::{collections::HashMap, env};
use sailhouse::SailhouseClient;
fn main() {
let token = match env::var("SAILHOUSE_TOKEN") {
Ok(value) => value,
Err(error) => {
eprintln!("Failed to read SAILHOUSE_TOKEN: {}", error);
return;
}
};
let client = SailhouseClient::new(token);
let mut data = HashMap::new();
data.insert("message", "Hello world!");
let publish_future = client.publish("example-topic", data);
let _ = tokio::runtime::Runtime::new().unwrap().block_on(publish_future);
}
Initialising the client
Copy
let token = match env::var("SAILHOUSE_TOKEN") {
Ok(value) => value,
Err(error) => {
eprintln!("Failed to read SAILHOUSE_TOKEN: {}", error);
return;
}
};
let client = SailhouseClient::new(token);
Admin Operations
The admin client provides methods for managing subscriptions programmatically.
Registering Push Subscriptions
Copy
use sailhouse::{SailhouseClient, Filter, ComplexFilter, FilterCondition};
use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = SailhouseClient::new(token);
// Basic push subscription
client.admin().register_push_subscription(
"user-events",
"welcome-email",
"https://api.example.com/webhooks/welcome",
None,
None,
None,
).await?;
// With simple filter
let simple_filter = Filter {
path: "user.type".to_string(),
value: "premium".to_string(),
};
client.admin().register_push_subscription(
"user-events",
"premium-users",
"https://api.example.com/webhooks/premium",
Some(simple_filter),
None,
None,
).await?;
// With advanced filter
let complex_filter = ComplexFilter {
filters: vec![
FilterCondition {
path: "user.type".to_string(),
condition: "equals".to_string(),
value: "premium".to_string(),
},
FilterCondition {
path: "user.status".to_string(),
condition: "not_equals".to_string(),
value: "inactive".to_string(),
},
],
operator: "and".to_string(),
};
client.admin().register_push_subscription(
"user-events",
"active-premium-users",
"https://api.example.com/webhooks/active-premium",
Some(Filter::Complex(complex_filter)),
Some("100/h".to_string()),
Some("5m".to_string()),
).await?;
Ok(())
}
Rate Limiting and Deduplication
- Rate Limit: Controls delivery frequency using formats like “100/h” (100 per hour), “10/m” (10 per minute)
- Deduplication: Prevents duplicate deliveries within a time window using formats like “5m” (5 minutes), “1h” (1 hour)
Assistant
Responses are generated using AI and may contain mistakes.