summaryrefslogtreecommitdiff
path: root/src/cli.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli.rs')
-rw-r--r--src/cli.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cli.rs b/src/cli.rs
index 8d73109..154771b 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -13,6 +13,7 @@ use axum::{
use clap::{CommandFactory, Parser, Subcommand};
use sqlx::sqlite::SqlitePool;
use tokio::net;
+use web_push::{IsahcWebPushClient, WebPushClient};
use crate::{
app::App,
@@ -97,7 +98,8 @@ impl Args {
self.umask.set();
let pool = self.pool().await?;
- let app = App::from(pool);
+ let webpush = IsahcWebPushClient::new()?;
+ let app = App::from(pool, webpush);
match self.command {
None => self.serve(app).await?,
@@ -107,7 +109,10 @@ impl Args {
Result::<_, Error>::Ok(())
}
- async fn serve(self, app: App) -> Result<(), Error> {
+ async fn serve<P>(self, app: App<P>) -> Result<(), Error>
+ where
+ P: WebPushClient + Clone + Send + Sync + 'static,
+ {
let app = routes::routes(&app)
.route_layer(middleware::from_fn(clock::middleware))
.route_layer(middleware::map_response(Self::server_info()))
@@ -161,4 +166,5 @@ enum Error {
Database(#[from] db::Error),
Sqlx(#[from] sqlx::Error),
Umask(#[from] umask::Error),
+ Webpush(#[from] web_push::WebPushError),
}