[package]
name = "reqkey"
version = "0.1.0"
edition = "2021"
rust-version = "1.88"
description = "Official Rust SDK for ReqKey API key validation, credit metering, and analytics"
license = "MIT"
readme = "README.md"
repository = "https://github.com/Req-Key/reqkey-rust"
homepage = "https://reqkey.com"
documentation = "https://docs.rs/reqkey"
keywords = ["api-keys", "authentication", "rate-limiting", "analytics", "middleware"]
categories = ["api-bindings", "authentication", "web-programming"]
include = [
"src/**/*.rs",
"examples/**/*.rs",
"tests/**/*.rs",
"Cargo.toml",
"README.md",
"CHANGELOG.md",
"LICENSE",
"SECURITY.md",
"docs/**/*.md",
]
[features]
default = ["rustls-tls", "blocking"]
rustls-tls = ["reqwest/rustls-tls"]
native-tls = ["reqwest/native-tls"]
blocking = ["reqwest/blocking"]
axum = ["dep:axum", "dep:bytes", "dep:futures-util", "dep:http-body-util", "dep:tower"]
actix-web = ["dep:actix-web", "dep:futures-util"]
rocket = ["dep:async-trait", "dep:rocket"]
warp = ["dep:warp"]
full = ["axum", "actix-web", "rocket", "warp"]
[dependencies]
http = "1"
reqwest = { version = "0.12", default-features = false, features = ["json"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tracing = "0.1"
url = "2"
actix-web = { version = "4", optional = true }
async-trait = { version = "0.1", optional = true }
axum = { version = "0.8", optional = true }
bytes = { version = "1", optional = true }
futures-util = { version = "0.3", optional = true }
http-body-util = { version = "0.1", optional = true }
rocket = { version = "0.5.1", optional = true, features = ["json"] }
tower = { version = "0.5", optional = true }
warp = { version = "0.4", optional = true, default-features = false, features = ["server"] }
[dev-dependencies]
tokio = { version = "1", features = ["macros", "net", "rt-multi-thread"] }
tower = { version = "0.5", features = ["util"] }
wiremock = "0.6"
warp = { version = "0.4", default-features = false, features = ["server", "test"] }
[[example]]
name = "plain_async"
path = "examples/plain_async.rs"
[[example]]
name = "plain_blocking"
path = "examples/plain_blocking.rs"
required-features = ["blocking"]
[[example]]
name = "axum"
path = "examples/axum.rs"
required-features = ["axum"]
[[example]]
name = "actix_web"
path = "examples/actix_web.rs"
required-features = ["actix-web"]
[[example]]
name = "rocket"
path = "examples/rocket.rs"
required-features = ["rocket"]
[[example]]
name = "warp"
path = "examples/warp.rs"
required-features = ["warp"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[lints.rust]
unsafe_code = "forbid"
missing_docs = "warn"
[lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
module_name_repetitions = "allow"
must_use_candidate = "allow"
doc_markdown = "allow"
large_enum_variant = "allow"
struct_excessive_bools = "allow"