[package]
edition = "2024"
rust-version = "1.98"
name = "webserver-base"
version = "0.2.2"
authors = ["Todd Everett Griffin <tgriffin115@gmail.com>"]
build = false
include = [
"**/*.rs",
"assets/**",
"Cargo.toml",
".clippy.toml",
"LICENSE",
"README.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A Rust library which contains shared logic for all of my webserver projects."
homepage = "https://www.toddgriffin.me/"
readme = "README.md"
keywords = [
"Todd",
"Everett",
"Griffin",
"webserver",
"base",
]
categories = ["web-programming"]
license-file = "LICENSE"
repository = "https://github.com/goddtriffin/webserver-base"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
[features]
analytics = [
"dep:axum",
"dep:reqwest",
]
default = []
full = [
"templates",
"analytics",
"sitemap",
"observability",
"telegram",
"webserver",
"pages",
"preset",
]
observability = [
"dep:sentry",
"dep:tracing-subscriber",
]
pages = [
"webserver",
"templates",
"sitemap",
"analytics",
]
preset = ["templates"]
sitemap = [
"dep:sitemap-rs",
"dep:xml-builder",
"dep:chrono",
]
telegram = [
"dep:reqwest",
"dep:tokio",
]
templates = [
"dep:handlebars",
"dep:chrono",
]
webserver = [
"dep:axum",
"dep:axum-extra",
"dep:tower",
"dep:tower-http",
"dep:tokio",
"dep:md5",
"dep:regex",
"dep:chrono",
"dep:resvg",
"dep:imagesize",
]
[lib]
name = "webserver_base"
path = "src/lib.rs"
[[test]]
name = "temp"
path = "tests/temp.rs"
[dependencies.axum]
version = "0.8.9"
features = [
"ws",
"multipart",
"tracing",
"macros",
"tokio",
]
optional = true
[dependencies.axum-extra]
version = "0.12.6"
optional = true
[dependencies.chrono]
version = "0.4.45"
features = [
"default",
"serde",
]
optional = true
[dependencies.handlebars]
version = "6.4.4"
optional = true
[dependencies.imagesize]
version = "0.15.0"
optional = true
[dependencies.md5]
version = "0.8.1"
optional = true
[dependencies.regex]
version = "1.13.1"
optional = true
[dependencies.reqwest]
version = "0.13.4"
features = [
"json",
"rustls",
"multipart",
]
optional = true
default-features = false
[dependencies.resvg]
version = "0.45.1"
features = ["text"]
optional = true
default-features = false
[dependencies.sentry]
version = "0.49.1"
features = [
"backtrace",
"contexts",
"panic",
"debug-images",
"tracing",
"tower",
"reqwest",
"rustls",
]
optional = true
default-features = false
[dependencies.serde]
version = "1.0.229"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.151"
[dependencies.sitemap-rs]
version = "0.4.0"
optional = true
[dependencies.thiserror]
version = "2.0.20"
[dependencies.tokio]
version = "1.53.1"
features = [
"full",
"tracing",
]
optional = true
[dependencies.tower]
version = "0.5.3"
features = ["full"]
optional = true
[dependencies.tower-http]
version = "0.7.0"
features = ["full"]
optional = true
[dependencies.tracing]
version = "0.1.44"
[dependencies.tracing-subscriber]
version = "0.3.23"
features = [
"env-filter",
"json",
]
optional = true
[dependencies.xml-builder]
version = "0.5.4"
optional = true
[dev-dependencies.tokio]
version = "1.53.1"
features = [
"full",
"tracing",
"test-util",
]
[lints.clippy.all]
level = "deny"
priority = -1
[lints.clippy.allow_attributes]
level = "forbid"
priority = 1
[lints.clippy.cargo]
level = "deny"
priority = -1
[lints.clippy.complexity]
level = "deny"
priority = -1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.multiple_crate_versions]
level = "allow"
priority = 1
[lints.clippy.nursery]
level = "allow"
priority = 0
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.clippy.perf]
level = "deny"
priority = -1
[lints.clippy.style]
level = "deny"
priority = -1
[lints.clippy.suspicious]
level = "deny"
priority = -1
[lints.rust.unfulfilled_lint_expectations]
level = "forbid"
priority = 1
[lints.rust.unsafe_code]
level = "forbid"
priority = 0