Skip to main content

pilatus_axum/
lib.rs

1#![doc = include_str!("../README.md")]
2
3mod abort;
4mod dependency_provider;
5mod inject;
6mod into_response;
7mod minfac_extensions;
8mod routing;
9mod web_component;
10mod ws;
11
12use std::net::SocketAddr;
13
14use futures::{channel::oneshot, future::Shared};
15
16pub use abort::AbortServiceInterface;
17pub use axum::{
18    body::{Body, Bytes},
19    http,
20    response::{sse, AppendHeaders, Html, IntoResponse, Response},
21};
22pub use dependency_provider::DependencyProvider;
23pub use into_response::*;
24pub use minfac_extensions::ServiceCollectionExtensions;
25pub use routing::{MethodRouter, Router};
26pub use web_component::*;
27
28pub mod extract {
29    pub struct Inject<T: minfac::Resolvable>(pub T::ItemPreChecked);
30    pub struct InjectRegistered<T: std::any::Any>(pub T);
31    pub use super::abort::Abort;
32    pub struct InjectAll<T: std::any::Any>(pub ServiceIterator<T>);
33    pub use axum::body::Body;
34    pub use axum::extract::{FromRequestParts, Json, Path, Query};
35    use minfac::ServiceIterator;
36
37    pub mod ws {
38        pub use super::super::ws::{Dropper, WebSocketDropperService, WebSocketUpgrade};
39        pub use axum::extract::ws::{Message, WebSocket};
40    }
41}
42
43pub type MinfacRouter = pilatus::OnceExtractor<axum::Router>;
44
45pub struct Stats {
46    socket: Shared<oneshot::Receiver<SocketAddr>>,
47}
48impl Stats {
49    pub fn new(socket: Shared<oneshot::Receiver<SocketAddr>>) -> Self {
50        Self { socket }
51    }
52    pub async fn socket_addr(&self) -> SocketAddr {
53        self.socket
54            .clone()
55            .await
56            .expect("always resolved when server started")
57    }
58}