1pub use webx_core::app::IHost;
22pub use webx_core::auth::{
23 IAuthenticationHandler, IAuthorizationPolicy, IClaims, IDynamicAuthorizer, IdentityUser,
24 RequestUser,
25};
26pub use webx_core::cache::{
27 cache_ext::DistributedCacheExtensions,
28 options::DistributedCacheEntryOptions,
29 trait_def::{CacheError, IDistributedCache},
30};
31pub use webx_core::config::{
32 bind_config, bind_root, load_appsettings, AppOptions, AppSection, CorsSection, CultureSection,
33 IAppOptions, JwtSection, MetricsSection, RateLimitSection, TlsSection,
34};
35pub use webx_core::dispatch_runtime::DispatchRuntime;
36pub use webx_core::error::{ActionResult, Error, Result};
37pub use webx_core::form::{
38 sanitize_file_name, set_spool_root, spool_root, FormField, FormFile, FormFileBuilder,
39 MultipartForm, SPOOL_FILE_PREFIX,
40};
41pub use webx_core::handler::{IEventHandler, IHostedService, IRequestHandler};
42pub use webx_core::http::{
43 content_disposition_value, read_json_body, write_json_response, ByteRange, Disposition,
44 FileBody, FileSource, HttpStatus, IClaimsExt, IHttpContext, IHttpRequest, IHttpResponse, Json,
45 ResponseBody, SeekableReader, STREAM_BUF_SIZE,
46};
47pub use webx_core::localization::{
48 IStringLocalizer, LocalizationOptions, LocalizedString, StringLocalizer, TextRef,
49};
50pub use webx_core::mediator::dispatch;
51pub use webx_core::mediator::{IEventRequest, IMediator, IRequest};
52pub use webx_core::middleware::{IMiddleware, MiddlewareSlot};
53pub use webx_core::mode::AppMode;
54pub use webx_core::operation::OperationResult;
55pub use webx_core::pagination::{PagedRequest, PagedResult};
56pub use webx_core::paths::{
57 app_base, framework_root, looks_like_app_base, looks_like_framework_root,
58};
59pub use webx_core::pipeline::{IPipelineBehavior, Next};
60pub use webx_core::problem::{FieldError, ProblemDetails};
61pub use webx_core::request_context::RequestContext;
62pub use webx_core::route::catalog::{
63 EndpointCatalog, EndpointDescriptor, EndpointInfo, IEndpointCatalog,
64};
65pub use webx_core::route::diagnostics::{
66 duplicate_handlers, format_route_diagnostics, orphan_handlers, orphan_route_details,
67 orphan_routes, route_snapshots,
68};
69pub use webx_core::routing::{HttpMethod, IEndpoint, IRouter, RouteMeta};
70
71pub use webx_core::route::binding;
73pub use webx_core::route::binding::RequestModel;
74pub use webx_core::route::ext::{is_mediator_active, should_scan_endpoints, IServiceCollectionExt};
75pub use webx_core::route::scan::{
76 AuthorizeRule, BoxedDispatch, BoxedDispatchFn, BoxedDispatchFuture, HandlerCache, HandlerEntry,
77 HandlerRegistration, HandlerRegistry, ParamMeta, RequestParamEntry, ResponseData,
78 RouteDispatch, RouteDispatchFn, RouteEntry,
79};
80
81pub use webx_host::auth_jwt::{init_jwt_secret, jwt_middleware, jwt_secret, JwtAuth, JwtClaims};
83pub use webx_host::authz::collect_authorizers;
84pub use webx_host::authz::resource_auth_middleware;
85pub use webx_host::authz::{AuthorizerSet, ResourceAuthorization};
86pub use webx_host::compression::{compress_gzip, CompressionConfig, CompressionMiddleware};
87pub use webx_host::context::{HttpContext, HttpRequest, HttpResponse};
88pub use webx_host::cors::{CorsConfig, CorsMiddleware};
89pub use webx_host::diagnostics::log_startup_diagnostics;
90pub use webx_host::endpoint::{
91 ControllerEndpoint, RequestEndpoint, StaticHtmlEndpoint, StaticJsonEndpoint,
92};
93pub use webx_host::health::{HealthCheckEntry, HealthCheckFn, HealthCheckRegistry, HealthStatus};
94pub use webx_host::memory_cache::MemoryCache;
95pub use webx_host::pipeline::{HandlerFn, MiddlewarePipeline};
96pub use webx_host::rate_limit::{RateLimitMiddleware, RateLimiter};
97pub use webx_host::request_id::RequestIdMiddleware;
98pub use webx_host::request_tracing::RequestTracing;
99pub use webx_host::router::Router;
100pub use webx_host::security_headers::SecurityHeadersMiddleware;
101pub use webx_host::server::{Host, HostAppBuilder, HostBuilder, Server, ServerHandle};
102#[cfg(feature = "testing")]
103pub use webx_host::testing::{free_port, spawn, spawn_with_health, wait_until_ready, TestServer};
104pub use webx_host::timing::TimingMiddleware;
105
106pub use webx_core::mediator::Mediator;
108
109pub use webx_spa::SpaMiddleware;
111
112pub mod spa {
122 pub use webx_spa::{
123 embed_assets, inventory, ContentEncoding, EmbeddedAsset, EmbeddedAssets, SpaMiddleware,
124 SpaSource, EMBED_ENV,
125 };
126}
127
128pub mod assets {
134 pub use webx_spa::assets::{read, read_str};
135}
136
137pub use webx_openapi::{generate_openapi_spec, APIUI_HTML};
139
140#[doc(hidden)]
142pub use webx_macros::{__webx_category, __webx_description, __webx_display};
143pub use webx_macros::{
144 authorize, category, delete, description, display, embed_assets, endpoint, get, handler, main,
145 post, put, WebxRequestMeta,
146};
147
148pub use rust_dix;
150pub use rust_dix::inject;
151pub use rust_dix::ScopeFactory;
152pub use rust_dix_macros;
153pub use rust_dix_macros::{module, Inject};
154
155pub use async_trait::async_trait;
157pub use hyper;
158pub use inventory;
160pub use serde;
161pub use serde_json;
162pub use tokio;