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