pub mod prelude;
#[cfg(feature = "admin-api")]
pub mod admin;
pub mod authorization;
#[cfg(feature = "ban-manager")]
pub mod ban;
#[cfg(feature = "circuit-breaker")]
pub mod circuit;
mod clock;
pub mod config;
#[cfg(feature = "cli")]
pub mod cli;
#[cfg(any(feature = "postgres", feature = "sqlite", feature = "mysql"))]
pub mod adapters;
#[cfg(any(feature = "postgres", feature = "sqlite", feature = "mysql"))]
pub use adapters::{
DBNexusBanStorageAdapter, DBNexusQuotaStorageAdapter, DBNexusStorageAdapter, StorageFactory,
StorageFactoryConfig, StorageType, create_ban_storage_from_dsn, create_quota_storage_from_dsn,
create_storage_from_dsn,
};
#[cfg(feature = "cache-service")]
pub mod cache;
#[cfg(feature = "capacity-dial")]
pub mod capacity_dial;
pub(crate) mod constants;
#[cfg(any(feature = "postgres", feature = "sqlite", feature = "mysql"))]
mod dbnexus_entities;
#[cfg(any(feature = "postgres", feature = "sqlite", feature = "mysql"))]
pub use dbnexus_entities::{create_all_tables_ddl, create_all_tables_ddl_sqlite};
pub mod decision_chain;
#[cfg(feature = "event-system")]
mod events;
pub mod error; pub mod limiters; pub mod logging; mod rules; pub mod storage;
#[cfg(feature = "bulkhead")]
pub mod bulkhead;
#[cfg(feature = "fallback")]
pub mod fallback;
mod governor;
mod l1_cache;
#[cfg(feature = "macros")]
pub mod macros;
pub mod matchers;
#[cfg(feature = "lua-script")]
pub mod oxcache_lua;
#[cfg(feature = "plugins")]
pub mod plugins;
#[cfg(feature = "quota-control")]
pub mod quota;
#[cfg(feature = "retry")]
pub mod retry;
#[cfg(feature = "sync")]
pub mod sync;
#[cfg(any(feature = "telemetry", feature = "prometheus"))]
pub mod telemetry;
#[cfg(feature = "multi-tenant")]
mod tenant;
#[cfg(feature = "validation")]
pub mod validation;
#[cfg(feature = "webhook")]
pub(crate) mod webhook_validator;
pub mod i18n;
pub mod integrations;
#[cfg(feature = "tower-middleware")]
pub mod middleware;
#[cfg(feature = "ban-manager")]
pub use authorization::OperationAuthorizationProvider;
pub use authorization::{AuthorizationProvider, SimpleAuthorizationProvider};
#[cfg(feature = "ban-manager")]
pub use ban::{
BackoffConfig, BanDetail, BanFile, BanFileEntry, BanFileLoader, BanFilter, BanLoadError,
BanManager, BanManagerBuilder, BanManagerConfig, BanPriority, BanSource, LoadResult,
};
#[cfg(feature = "circuit-breaker")]
pub use circuit::{CircuitBreaker, CircuitBreakerConfig};
#[cfg(feature = "circuit-breaker")]
pub use circuit::{ManualCircuitBreaker, ManualCircuitBreakerConfig};
#[cfg(feature = "audit-log")]
pub use logging::audit::{AuditEvent, AuditLogConfig, AuditLogStats, AuditLogger};
#[cfg(feature = "sync")]
pub use sync::{CircuitCallError, RateLimitRejection, SyncCircuitBreaker, SyncFixedWindowLimiter};
#[cfg(feature = "cache-service")]
pub use cache::{Cache, CacheKey, CacheService, MemoryCache};
pub use config::ConfigLoader;
pub use config::{
ActionConfig, ChangeSource, ConfigChangeRecord, ConfigHistory, ConfigMatcher,
FlowControlConfig, LimiterConfig, Rule as ConfigRule,
};
pub use decision_chain::{ChainStats, DecisionChain, DecisionChainBuilder, DecisionNode};
pub use error::{
BanInfo, CircuitBreakerStats, CircuitState, ConsumeResult, Decision, LimiteronError,
LimiteronResult, StorageError,
};
#[cfg(feature = "event-system")]
pub use events::{Event, EventConfig, EventDispatcher, EventEmitter, EventHandler, EventType};
#[cfg(all(
feature = "event-system",
any(feature = "postgres", feature = "sqlite", feature = "mysql")
))]
pub use events::{EventOutboxStore, OutboxDialect, OutboxEntry, OutboxEventKind};
#[cfg(all(feature = "event-system", feature = "ban-sync"))]
pub use events::{
BanSyncApplier, BanSyncBus, BanSyncConfig, BanSyncKind, BanSyncListenerHandle, BanSyncMessage,
DEFAULT_BAN_SYNC_CHANNEL,
};
#[cfg(all(feature = "event-system", feature = "webhook"))]
pub use events::webhook_signature::{
SIGNATURE_HEADER, TIMESTAMP_HEADER, WebhookSignature, WebhookSigner, WebhookVerifyError,
global_webhook_signer, set_global_webhook_signer,
};
#[cfg(feature = "capacity-dial")]
pub use capacity_dial::{CapacityDial, DialLevel, DialThresholds, SystemMetrics};
pub use error::{
BanSafeError, ConfigSafeError, ErrorMessageAbstraction, GeneralSafeError, LimitSafeError,
SafeErrorMessage, StorageSafeError, ValidationSafeError,
};
#[cfg(feature = "fallback")]
pub use fallback::{ComponentType, FallbackConfig, FallbackManager, FallbackStrategy};
pub use governor::{
ChainIntrospection, Governor, GovernorStats, HealthIntrospection, HealthStatus,
IntrospectionSnapshot, L1Introspection, RuleIntrospection,
};
pub use l1_cache::{L1Cache, L1CacheConfig, RateLimitCacheKey};
pub use limiters::Limiter;
#[cfg(feature = "quota-control")]
pub use limiters::QuotaLimiter;
#[cfg(feature = "manager")]
pub use limiters::manager::{GLOBAL_LIMITER_MANAGER, LimiterManager};
#[cfg(feature = "macros")]
pub use macros::{
FlowControlConfig as MacroFlowControlConfig, QuotaLimit, RateLimit, flow_control,
parse_quota_limit, parse_rate_limit,
};
#[cfg(feature = "regex-matching")]
pub use matchers::custom::RegexPathMatcher;
pub use matchers::custom::{
CustomMatcher, CustomMatcherRegistry, CustomMatcherRegistryBuilder, HeaderMatchMode,
HeaderMatcher, HeaderMatcherBuilder, MethodMatcher, MethodMatcherBuilder, TimeWindowMatcher,
TimeWindowMatcherBuilder,
};
#[cfg(feature = "device-matching")]
pub use matchers::device::{
DeviceCacheStats, DeviceCondition, DeviceInfo, DeviceMatcher, DeviceMatcherBuilder, DeviceType,
};
pub use matchers::{
ApiKeyExtractor, ApiKeyExtractorBuilder, CompositeCondition, CompositeExtractor,
ConditionEvaluator, CustomExtractor, DeviceIdExtractor, DeviceIdExtractorBuilder, Identifier,
IdentifierExtractor, IpExtractor, IpExtractorBuilder, IpRange, LogicalOperator, MacExtractor,
MacExtractorBuilder, MatchCondition, MatcherStats, RequestContext, Rule, RuleMatcher,
UserIdExtractor, UserIdExtractorBuilder,
};
#[cfg(feature = "geo-matching")]
pub use matchers::{GeoCacheStats, GeoCondition, GeoInfo, GeoMatcher};
#[cfg(feature = "quota-control")]
pub use quota::QuotaController;
#[cfg(feature = "prometheus")]
pub use telemetry::{Metrics, set_global_metrics, try_global};
#[cfg(feature = "telemetry")]
pub use telemetry::{TelemetryConfig, Tracer, init_telemetry};
#[cfg(feature = "validation")]
pub use validation::{
validate_api_key, validate_ban_reason, validate_header_value, validate_ip_address,
validate_length, validate_mac_address, validate_path, validate_user_id,
};
#[cfg(all(feature = "validation", feature = "ban-manager"))]
pub use validation::validate_ban_target;
#[cfg(feature = "lua-script")]
pub use oxcache_lua::{
BURST_TOKEN_BUCKET_SCRIPT, FIXED_WINDOW_SCRIPT, LuaScriptInfo, LuaScriptType,
OxcacheLuaManager, QUOTA_CONSUME_SCRIPT, QUOTA_RESET_SCRIPT, SLIDING_WINDOW_LOG_SCRIPT,
SLIDING_WINDOW_SCRIPT, TOKEN_BUCKET_SCRIPT, execute_cached_script, execute_lua_script,
load_script,
};
pub use storage::{BanHistory, BanRecord, BanStorage, BanTarget, QuotaInfo, QuotaStorage, Storage};
#[cfg(feature = "parallel-checker")]
pub use storage::ParallelBanChecker;
#[cfg(feature = "cache-redis")]
pub use cache::CacheBanStorage;
#[cfg(feature = "cache-redis")]
pub use cache::CacheQuotaStorage;
#[cfg(feature = "cache-redis")]
pub use cache::CacheStorage;
#[cfg(feature = "gcra")]
pub use limiters::GcraLimiter;
pub use logging::{redact_basic, redact_email, redact_ip, redact_user_id};
#[cfg(feature = "log-redaction")]
pub use logging::{RedactionConfig, contains_sensitive_info, redact_advanced, redact_http_content};
pub use rules::RuleBuilder;
pub use rules::{StatsManager, StatsSnapshot};
pub use clock::Clock;
#[cfg(any(test, feature = "test-clock"))]
pub use clock::MockClock;
pub use clock::SystemClock;
#[cfg(feature = "multi-tenant")]
pub use tenant::{DefaultTenantResolver, HeaderTenantResolver, Namespace, TenantResolver};
#[cfg(feature = "tower-middleware")]
pub use middleware::{
IntoRequestContext, RateLimitConfig, RateLimitHeaderValues, RateLimitLayer, RateLimitService,
inject_rate_limit_headers,
};
pub use oxcache;
pub use async_trait;
pub use chrono;
pub use tokio;
#[cfg(any(feature = "tower-middleware", feature = "admin-api"))]
pub use tower;