Windmark

crates.io docs.rs github.com

Windmark is an elegant and highly performant, async Gemini server framework for the modern age!

Usage

Check out an example starter project here!

Add Windmark and Tokio as Dependencies

```toml

Cargo.toml

[dependencies] windmark = "0.2.0" tokio = { version = "0.2.4", features = ["full"] }

If you would like to use the built-in logger (recommended)

windmark = { version = "0.2.0", features = ["logger"] }

If you would like to use the built-in MIME dedection when Success-ing a file

(recommended)

windmark = { version = "0.2.0", features = ["auto-deduce-mime"] }

```

Implement a Windmark server

```rust // src/main.rs

use windmark::Response;

[windmark::main]

async fn main() -> Result<(), Box> { windmark::Router::new() .setprivatekeyfile("windmarkprivate.pem") .setcertificatefile("windmarkpublic.pem") .mount("/", Box::new(|| Response::Success("Hello, World!".into()))) .seterrorhandler(Box::new(|_| { Response::PermanentFailure("This route does not exist!".into()) })) .run() .await } ```

Examples

Examples can be found within the examples/ directory.

An example of a fully featured Gemini capsule written using Windmark can be found here. This example Gemini capsule also happens to be the source code for Fuwn's (this library's author) personal Gemini capsule!

Modules

Modules are reusable extensions which can be procedurally mounted onto Windmark routers.

Add yours!

Capsules using Windmark

Add yours!

License

This project is licensed with the GNU General Public License v3.0.