Crate foxy

Source
Expand description

Foxy - A zero-config, configuration-driven HTTP proxy library

Foxy offers a minimal attack-surface out of the box – it does nothing but forward HTTP/1.1 requests until you deliberately opt-in to extra behaviour via configuration files or extension traits.

§Quick-start

cargo add foxy-io
use foxy::{Foxy};
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
     
    let foxy = Foxy::loader()
        .with_config_file("config.json")
        .build().await?;

    foxy.start().await?;
    Ok(())
}

§Feature flags

featuredefaultdescription
opentelemetryEnables OpenTelemetry tracing integration

§Extension points

  • ConfigProvider – plug in an arbitrary configuration backend
  • Filter – inject pre/post processing stages
  • Predicate – custom routing logic

Re-exports§

pub use config::ConfigError;
pub use config::ConfigProvider;
pub use config::ConfigProviderExt;
pub use core::Filter;
pub use core::FilterType;
pub use core::HttpMethod;
pub use core::ProxyError;
pub use core::ProxyRequest;
pub use core::ProxyResponse;
pub use core::RequestContext;
pub use core::ResponseContext;
pub use core::Route;
pub use core::Router;
pub use filters::FilterFactory;
pub use filters::HeaderFilter;
pub use filters::LoggingFilter;
pub use filters::PathRewriteFilter;
pub use filters::PathRewriteFilterConfig;
pub use filters::TimeoutFilter;
pub use filters::register_filter;
pub use loader::Foxy;
pub use loader::FoxyLoader;
pub use loader::LoaderError;
pub use logging::init_with_config;
pub use logging::wrapper;
pub use router::HeaderPredicate;
pub use router::MethodPredicate;
pub use router::PathPredicate;
pub use router::Predicate;
pub use router::PredicateFactory;
pub use router::PredicateRouter;
pub use router::QueryPredicate;
pub use router::register_predicate;
pub use security::SecurityChain;
pub use security::SecurityProvider;
pub use security::SecurityStage;
pub use security::oidc::OidcConfig;
pub use security::oidc::OidcProvider;
pub use security::register_security_provider;
pub use server::ProxyServer;
pub use server::ServerConfig;

Modules§

config
Foxy configuration subsystem
core
Core primitives – requests, responses, filters & routing.
filters
Built-in filters
loader
High-level entry-point – “turn the key and go”.
logging
Logging utilities for Foxy.
router
Routing DSL – predicates & helper logic.
security
Security subsystem – runs before/after the main filter pipeline.
server
HTTP server implementation for Foxy.

Macros§

debug
Macro to log a debug message
debug_fmt
Macro to log a debug message with context.
error
Macro to log an error message
error_fmt
Macro to log an error message with context.
info
Macro to log an info message
info_fmt
Macro to log an info message with context.
trace
Macro to log a trace message
trace_fmt
Macro to log a trace message with context.
warn
Macro to log a warning message
warn_fmt
Macro to log a warning message with context.