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