[package]
name = "deboa"
version = "0.0.9"
edition = "2021"
authors = ["Rogerio Araújo <rogerio.araujo@gmail.com>"]
repository = "https://github.com/ararog/deboa"
homepage = "https://github.com/ararog/deboa"
description = "A friendly rest client on top of hyper."
readme = "README.md"
license = "MIT"
keywords = ["http", "networking", "client", "fetch", "rest-client"]
publish = true
rust-version = "1.64.0"

[features]
default = ["tokio-rt"]

# runtimes
tokio-rt = ["http1", "http2", "dep:tokio", "dep:tokio-native-tls"]
smol-rt = [
    "http1",
    "http2",
    "dep:async-native-tls",
    "dep:smol",
    "dep:smol-hyper",
    "dep:async-executor",
    "dep:smol-macros",
    "dep:macro_rules_attribute",
]

# protocols
http1 = []
http2 = []
http3 = [
    "dep:h3",
    "dep:h3-quinn",
    "dep:quinn",
]

[dependencies]
async-executor = { version = "1.13.3", optional = true }
async-native-tls = { version = "0.5.0", optional = true }
async-trait = "0.1.89"
base64 = "0.22.1"
bytes = { version = "1.11", optional = false }
cookie = "0.15.2"
futures = "0.3.31"
h3 = { version = "0.0.6", optional = true }
h3-quinn = { version = "0.0.5", optional = true }
http = "1"
http-body = "1"
http-body-util = "0.1"
hyper = { version = "1.8.1", features = ["client", "http1", "http2"] }
hyper-util = { version = "0.1.19", features = [
  "http1",
  "http2",
  "client",
  "tokio",
] }
indexmap = "2.11.4"
macro_rules_attribute = { version = "0.2.2", optional = true }
mime = { version = "0.3.17" }
minimime = "1.0.0"
mockall = "0.14.0"
quinn = { version = "0.10.2", optional = true }
rand = "0.9.2"
regex = "1.9.6"
serde = { version = "1.0.217", features = ["derive"] }
smol = { version = "2.0.2", optional = true }
smol-hyper = { version = "0.1.0", optional = true, features = ["smol"] }
smol-macros = { version = "0.1.1", optional = true }
thiserror = "2.0.17"
time = "=0.2.27"
tokio = { version = "1.47.2", features = ["macros", "rt-multi-thread"], optional = true }
tokio-native-tls = { version = "0.3.1", optional = true }
url = "2.5.4"
urlencoding = "2.1.3"

[dev-dependencies]
criterion = { version = "0.8.1", features = [
  "html_reports",
  "async",
  "async_smol",
  "async_tokio"
] }
futures-util = "0.3.31"
httpmock = { version = "0.8.2", features = ["http2"] }
multer = "3.1.0"
smol = "2.0.2"
tokio = { version = "1.47.2" }

[[bench]]
name = "deboa_benchmark"
harness = false
