Skip to main content

ranvier_http/
lib.rs

1//! # ranvier-http - HTTP Ingress Adapter for Ranvier
2//!
3//! This crate provides the **Tower-native boundary layer** for Ranvier.
4//! It implements `Ranvier::http()` as an Ingress Circuit Builder (Discussion 193).
5//!
6//! ## Key Components
7//!
8//! - `Ranvier::http()` - Entry point for building HTTP ingress
9//! - `HttpIngress` - Builder for configuring routes and server
10//! - `RanvierService` - Tower Service adapter for Axon execution
11//!
12//! ## Example
13//!
14//! ```rust,ignore
15//! use ranvier_core::prelude::*;
16//! use ranvier_http::prelude::*;
17//!
18//! let hello = Axon::new("Hello")
19//!     .then(|_| async { "Hello, Ranvier!" });
20//!
21//! Ranvier::http()
22//!     .bind("127.0.0.1:3000")
23//!     .route("/", hello)
24//!     .run()
25//!     .await?;
26//! ```
27
28pub mod extract;
29pub mod ingress;
30pub mod response;
31pub mod service;
32pub mod sse;
33
34#[cfg(feature = "http3")]
35pub mod http3;
36pub mod test_harness;
37
38pub use extract::{CookieJar, DEFAULT_BODY_LIMIT, ExtractError, FromRequest, Header, Json, Path, Query};
39pub use ingress::{
40    HttpIngress, HttpRouteDescriptor, PathParams, Ranvier, WebSocketConnection, WebSocketError,
41    WebSocketEvent, WebSocketSessionContext,
42};
43pub use response::{
44    Html, HttpResponse, IntoResponse, json_error_response, outcome_to_response,
45    outcome_to_response_with_error,
46};
47pub use service::RanvierService;
48pub use sse::{Sse, SseEvent};
49pub use test_harness::{TestApp, TestHarnessError, TestRequest, TestResponse};
50
51/// Prelude module for convenient imports
52pub mod prelude {
53    pub use crate::extract::{CookieJar, DEFAULT_BODY_LIMIT, ExtractError, FromRequest, Header, Json, Path, Query};
54    pub use crate::ingress::{
55        HttpIngress, HttpRouteDescriptor, PathParams, Ranvier, WebSocketConnection, WebSocketError,
56        WebSocketEvent, WebSocketSessionContext,
57    };
58    pub use crate::response::{
59        Html, HttpResponse, IntoResponse, json_error_response, outcome_to_response,
60        outcome_to_response_with_error,
61    };
62    pub use crate::service::RanvierService;
63    pub use crate::sse::{Sse, SseEvent};
64    pub use crate::test_harness::{TestApp, TestHarnessError, TestRequest, TestResponse};
65}