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;
33pub mod test_harness;
34
35pub use extract::{DEFAULT_BODY_LIMIT, ExtractError, FromRequest, Json, Path, Query};
36pub use ingress::{
37    HttpIngress, HttpRouteDescriptor, PathParams, Ranvier, WebSocketConnection, WebSocketError,
38    WebSocketEvent, WebSocketSessionContext,
39};
40pub use response::{
41    HttpResponse, IntoResponse, json_error_response, outcome_to_response,
42    outcome_to_response_with_error,
43};
44pub use service::RanvierService;
45pub use sse::{Sse, SseEvent};
46pub use test_harness::{TestApp, TestHarnessError, TestRequest, TestResponse};
47
48/// Prelude module for convenient imports
49pub mod prelude {
50    pub use crate::extract::{DEFAULT_BODY_LIMIT, ExtractError, FromRequest, Json, Path, Query};
51    pub use crate::ingress::{
52        HttpIngress, HttpRouteDescriptor, PathParams, Ranvier, WebSocketConnection, WebSocketError,
53        WebSocketEvent, WebSocketSessionContext,
54    };
55    pub use crate::response::{
56        HttpResponse, IntoResponse, json_error_response, outcome_to_response,
57        outcome_to_response_with_error,
58    };
59    pub use crate::service::RanvierService;
60    pub use crate::sse::{Sse, SseEvent};
61    pub use crate::test_harness::{TestApp, TestHarnessError, TestRequest, TestResponse};
62}