#![cfg_attr(docsrs, feature(doc_auto_cfg))]
use std::future::Future;
use std::pin::Pin;
#[allow(unused_extern_crates)]
extern crate self as rusty_gasket;
#[cfg(feature = "cache")]
#[cfg_attr(docsrs, doc(cfg(feature = "cache")))]
pub mod cache;
pub mod config;
pub mod error;
pub mod extract;
pub mod health;
pub mod jobs;
pub mod middleware;
pub mod observability;
#[cfg(feature = "openapi")]
#[cfg_attr(docsrs, doc(cfg(feature = "openapi")))]
pub mod openapi;
#[cfg(feature = "otlp")]
#[cfg_attr(docsrs, doc(cfg(feature = "otlp")))]
pub mod otel;
pub mod pipeline;
pub mod plugin;
pub mod presets;
pub mod rate_limit;
pub mod server;
#[cfg(feature = "auth")]
#[cfg_attr(docsrs, doc(cfg(feature = "auth")))]
pub mod auth;
#[cfg(feature = "aws")]
#[cfg_attr(docsrs, doc(cfg(feature = "aws")))]
pub mod aws;
#[cfg(feature = "db")]
#[cfg_attr(docsrs, doc(cfg(feature = "db")))]
pub mod db;
#[cfg(feature = "dynamodb")]
#[cfg_attr(docsrs, doc(cfg(feature = "dynamodb")))]
pub mod dynamodb;
#[cfg(feature = "templates")]
#[cfg_attr(docsrs, doc(cfg(feature = "templates")))]
pub mod templates;
#[cfg(feature = "testing")]
#[cfg_attr(docsrs, doc(cfg(feature = "testing")))]
pub mod testing;
pub mod prelude {
pub use crate::BoxError;
#[cfg(feature = "cache")]
pub use crate::cache::{
CacheAlgorithm, CacheBackendKind, CacheConfig, CacheError, CacheKey, CacheResult, CacheTtl,
MemcachedCacheConfig, MemoryBudget, ObjectCache, RedisCacheConfig, ResponseCachePolicy,
ResponseCacheScope, cached_get,
};
pub use crate::config::{AppConfig, AppConfigDefinition, Environment};
pub use crate::error::{ApiError, ErrorResponse, ProblemDetails};
pub use crate::extract::{
Context, IdempotencyKey, JsonBody, Pagination, PathParams, QueryParams, RequestContext,
Validate, Validated, ValidationError, ValidationErrors, seconds,
};
pub use crate::health::{HealthContributor, HealthPlugin};
pub use crate::jobs::SchedulerPlugin;
pub use crate::middleware::{
CompressionPlugin, CorsPlugin, SecureHeadersPlugin, TimeoutPlugin,
};
pub use crate::pipeline::MiddlewareSlot;
pub use crate::plugin::{
BoxPlugin, GasketApp, GasketAppBuilder, InitContext, LayerContext, Plugin, PluginHandle,
PluginOrdering, PrepareContext, RouteContext, RouteGroup, RouterTransform, TaggedLayer,
TaggedRoute,
};
#[cfg(feature = "cache")]
pub use crate::route_cache_get;
pub use crate::server::ServerPlugin;
pub use axum::{
Router,
routing::{delete, get, patch, post, put},
};
}
mod built_info {
include!(concat!(env!("OUT_DIR"), "/built.rs"));
}
pub type BoxError = Box<dyn std::error::Error + Send + Sync + 'static>;
pub type BoxFuture<'ctx, T> = Pin<Box<dyn Future<Output = T> + Send + 'ctx>>;