Windmark is an elegant and highly performant async Gemini server framework for the modern age!
Now supporting both Tokio and async-std!
Note
Rossweisse lets you define a Windmark router using a struct and route attributes. See the Rossweisse guide for an example.
| Feature | Description |
|---|---|
default |
Base Windmark framework using Tokio |
auto-deduce-mime |
Enables Response::binary_success_auto to infer the MIME type of binary content |
tokio |
Marks Tokio as the asynchronous runtime |
async-std |
Marks async-std as the asynchronous runtime |
# Cargo.toml
[dependencies]
windmark = "0.8.0"
tokio = { version = "1.26.0", features = ["full"] }
# If you would like to use the built-in MIME deduction when `Success`-ing a file
# (recommended)
# windmark = { version = "0.8.0", features = ["auto-deduce-mime"] }// src/main.rs
use windmark::response::Response;
#[windmark::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
windmark::router::Router::new()
.set_private_key_file("windmark_private.pem")
.set_certificate_file("windmark_public.pem")
.mount("/", |_| Response::success("Hello, World!"))
.set_error_handler(|_|
Response::permanent_failure("This route does not exist!")
)
.run()
.await
}// src/main.rs
use rossweisse::route;
use windmark::response::Response;
#[rossweisse::router]
struct Router;
#[rossweisse::router]
impl Router {
#[route(index)]
pub fn index(
_context: windmark::context::RouteContext,
) -> Response {
Response::success("Hello, World!")
}
}
// ...Examples can be found within the
examples/ directory
along with a rundown of each of their purposes and useful facts.
Each entry in the examples guide lists the required
features. Generate local credentials with just gen-key, then use the listed
command or just example example_name (optionally followed by async-std).
Modules are composable extensions which can be procedurally mounted onto Windmark routers.
- Simple Stateless Module
- Mounts the
/smileyroute, returning an ๐ emoji - Simple Stateful Module - Adds a click tracker (route hit tracker) that additionally notifies before and after route visits
- Windmark Comments - A fully featured comment engine for your capsule
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.