diff options
| author | MatthieuCoder <matthieu@matthieu-dev.xyz> | 2023-01-03 00:14:27 +0400 |
|---|---|---|
| committer | MatthieuCoder <matthieu@matthieu-dev.xyz> | 2023-01-03 00:14:27 +0400 |
| commit | 91a27342dbee8ca0478f862df93bf502337f4c6e (patch) | |
| tree | af5f4818d300934d8c9ea14896fe756fea13d578 /exes/webhook/src | |
| parent | c3e47ff0b1b06ff26830e78b7e37e212d1e47200 (diff) | |
add all in one binary
Diffstat (limited to 'exes/webhook/src')
| -rw-r--r-- | exes/webhook/src/config.rs | 2 | ||||
| -rw-r--r-- | exes/webhook/src/lib.rs | 54 | ||||
| -rw-r--r-- | exes/webhook/src/main.rs | 54 |
3 files changed, 57 insertions, 53 deletions
diff --git a/exes/webhook/src/config.rs b/exes/webhook/src/config.rs index e98de13..56a9b78 100644 --- a/exes/webhook/src/config.rs +++ b/exes/webhook/src/config.rs @@ -4,7 +4,7 @@ use ed25519_dalek::PublicKey; use serde::{Deserialize, Deserializer}; fn default_listening_address() -> SocketAddr { - SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 8080)) + SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 8091)) } #[derive(Debug, Deserialize, Clone, Copy)] diff --git a/exes/webhook/src/lib.rs b/exes/webhook/src/lib.rs new file mode 100644 index 0000000..13a4e60 --- /dev/null +++ b/exes/webhook/src/lib.rs @@ -0,0 +1,54 @@ +mod config; +mod handler; +use std::{future::Future, pin::Pin}; + +use crate::{ + config::WebhookConfig, + handler::{handler::WebhookService, make_service::MakeSvc}, +}; +use hyper::Server; +use leash::{AnyhowResultFuture, Component}; +use shared::{config::Settings, log::info, nats_crate::Client}; +use tokio::sync::oneshot; + +#[derive(Clone, Copy)] +pub struct WebhookServer {} + +impl Component for WebhookServer { + type Config = WebhookConfig; + const SERVICE_NAME: &'static str = "webhook"; + + fn start( + &self, + settings: Settings<Self::Config>, + stop: oneshot::Receiver<()>, + ) -> AnyhowResultFuture<()> { + Box::pin(async move { + info!("Starting server on {}", settings.server.listening_adress); + + let bind = settings.server.listening_adress; + info!("NAts connected!"); + let nats = + Into::<Pin<Box<dyn Future<Output = anyhow::Result<Client>> + Send>>>::into(settings.nats) + + .await?; + + let make_service = MakeSvc::new(WebhookService { + config: settings.config, + nats: nats.clone(), + }); + + let server = Server::bind(&bind).serve(make_service); + + server.with_graceful_shutdown(async { + stop.await.expect("should not fail"); + }).await?; + + Ok(()) + }) + } + + fn new() -> Self { + Self {} + } +}
\ No newline at end of file diff --git a/exes/webhook/src/main.rs b/exes/webhook/src/main.rs index 0215e51..f531725 100644 --- a/exes/webhook/src/main.rs +++ b/exes/webhook/src/main.rs @@ -1,54 +1,4 @@ -mod config; -mod handler; -use std::{future::Future, pin::Pin}; - -use crate::{ - config::WebhookConfig, - handler::{handler::WebhookService, make_service::MakeSvc}, -}; -use hyper::Server; -use leash::{ignite, AnyhowResultFuture, Component}; -use shared::{config::Settings, log::info, nats_crate::Client}; -use tokio::sync::oneshot; - -#[derive(Clone, Copy)] -struct WebhookServer {} - -impl Component for WebhookServer { - type Config = WebhookConfig; - const SERVICE_NAME: &'static str = "webhook"; - - fn start( - &self, - settings: Settings<Self::Config>, - stop: oneshot::Receiver<()>, - ) -> AnyhowResultFuture<()> { - Box::pin(async move { - info!("Starting server on {}", settings.server.listening_adress); - - let bind = settings.server.listening_adress; - let nats = - Into::<Pin<Box<dyn Future<Output = anyhow::Result<Client>>>>>::into(settings.nats) - .await?; - - let make_service = MakeSvc::new(WebhookService { - config: settings.config, - nats: nats.clone(), - }); - - let server = Server::bind(&bind).serve(make_service); - - server.with_graceful_shutdown(async { - stop.await.expect("should not fail"); - }).await?; - - Ok(()) - }) - } - - fn new() -> Self { - Self {} - } -} +use leash::ignite; +use webhook::WebhookServer; ignite!(WebhookServer); |
