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