Skip to main content

Crate sova_core

Crate sova_core 

Source
Expand description

Sova core — App, Router, Request, Response, middleware, server.

§Request path

acceptserver/connto_sova_requestCompiledRouter::dispatch → root middleware → matchit → route middleware → handler → IntoResponse → hyper response.

§Public surface

This crate root exports names used by applications. Plugin authors and advanced integrations use extend.

Product docs: https://s00d.github.io/sova/ (VitePress guide /guide/concepts).

Modules§

extend
Extension / plugin-author API (handlers, bodies, route introspection, …).

Structs§

App
Thin wrapper over Router plus server settings and lifecycle hooks.
BoundApp
App + bind target + optional programmatic shutdown.
Cell
Shared Clone value with change notifications (tokio::sync::watch under the hood).
CheckResult
Outcome of one named check from App::run_checks.
ClientAddr
Peer address stored on each request for rate-limiting etc.
ClientRequest
Builder for a single request; .await sends it via IntoFuture.
ConfigDoc
Full parsed sova.toml (raw root for plugins; profile name for overlays).
FormData
Parsed form body: text fields + file uploads (urlencoded or multipart).
Html
HTML body (text/html; charset=utf-8).
InstalledPlugin
Snapshot of an installed plugin (for CLI / introspection).
Json
JSON body (application/json).
LogConfig
Tracing install options (stdout and/or file).
LogRecord
Structured log event for external sinks (Elasticsearch, …).
MatchedRoute
Matched route path template (e.g. /users/:id), set after route match.
MatchedRouteCapture
Capture for root middleware: filled when a route matches (low-cardinality metrics).
NoContent
Empty 204 response.
OnUpgrade
Handle to finish an HTTP upgrade (e.g. WebSocket).
PluginMeta
Human-readable plugin metadata (CLI, docs, introspection).
PluginSdkVersion
Semantic version of the Plugin SDK (major.minor.patch).
RateLimitIdentity
Authenticated principal for rate-limit identity keys. Set by auth / passport when a user is hydrated; rate-limit falls back to IP if absent.
Redirect
HTTP redirect with explicit status.
Request
Incoming HTTP request with Express-style helpers.
RequestId
Per-request correlation id (inbound x-request-id or generated).
Response
Express-style HTTP response.
Router
Express-style router. Return from modules and app.mount("/blog", routes()).
Server
Compiled app ready to handle requests without recompiling the router.
Shutdown
Unified shutdown signal for BackgroundServices.
Slot
One-item ownership handoff between tasks (sockets, streams, anything non-Clone).
TestClient
Test client over a compiled Server, always tracking cookies.
Text
Plain text (text/plain; charset=utf-8).
UpgradePermit
Holds one slot in max_upgraded_connections until dropped.
Upload
One uploaded file (or any multipart part with a filename).
UploadRules
Per-file constraints for Upload::validate.

Enums§

CheckKind
Kind of app check — readiness probes vs deploy-time audits.
Error
Framework and application errors mapped to HTTP responses.
Http
HTTP protocol mode for a bound app.
LogRotate
How to rotate the log file when LogConfig::file is set.
SdkCompat
Result of comparing a plugin’s declared SDK against core.

Constants§

PLUGIN_SDK_VERSION
Current Plugin SDK version (author-facing surface, not crate semver).

Traits§

BackgroundService
Long-running work started after on_startup, stopped after connection drain.
IntoResponse
Convert a value into an HTTP response.
Plugin
Single extension trait for the framework.
ResponseAssert
Fluent assertions for HTTP responses in tests.

Functions§

check_plugin_sdk
Compare plugin SDK declaration against core (PLUGIN_SDK_VERSION).
ensure_request_id
Set RequestId from x-request-id or generate one (idempotent).
logger
Request logger (method, path, status, latency_ms, optional request_id).
parse_log_rotate
Parse rotate mode string (size / daily / never).
referer_or
Referer header value, or fallback when absent/empty.
request_id
Ensure RequestId, echo x-request-id, wrap in an http.server span.
set_log_event_hook
Register a global log sink hook (once). Used by Observability::with_elasticsearch().
with_state
Middleware with owned state — hides the Arc::clone dance.

Type Aliases§

LogEventHook
Callback invoked for every tracing event (after the local fmt layers).
Next
Call the rest of the middleware / handler chain.
RequestHook
Mutates a request before Server::handle (e.g. inject auth extensions).
Result