anypost 1.0.0

Official Rust SDK for the Anypost email API.
Documentation
[package]
name = "anypost"
version = "1.0.0"
edition = "2021"
rust-version = "1.75"
description = "Official Rust SDK for the Anypost email API."
license = "MIT"
homepage = "https://anypost.com"
repository = "https://github.com/anypost/anypost-rust"
documentation = "https://docs.rs/anypost"
readme = "README.md"
keywords = ["anypost", "email", "api", "sdk"]
categories = ["api-bindings", "email"]

[features]
default = []
# Adds a synchronous `anypost::blocking::Client` that wraps the async client in
# a current-thread Tokio runtime. Most callers want the async client.
blocking = []

[dependencies]
reqwest = { version = "0.12", default-features = false, features = ["default-tls", "charset"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
async-trait = "0.1"
base64 = "0.22"
hmac = "0.12"
sha2 = "0.10"
hex = "0.4"
subtle = "2.5"
fastrand = "2"
httpdate = "1"
percent-encoding = "2"
tokio = { version = "1", features = ["time", "rt"] }

# MSRV pins (not used directly). The current crates.io releases of these moved
# to edition 2024 / Rust 1.85; hold them at the last release that builds on the
# declared MSRV (1.75). Reqwest reaches them via url -> idna. Drop these once
# the MSRV moves past 1.85.
idna_adapter = "=1.2.0"
getrandom = "=0.2.15"
tempfile = "=3.10.1"

# Apple-only TLS backend crates that moved to edition 2024. Linux uses OpenSSL
# and never pulls these, so the pin is scoped to Apple targets. Drop once the
# MSRV moves past 1.85.
[target.'cfg(target_vendor = "apple")'.dependencies]
security-framework = "=2.11.1"
security-framework-sys = "=2.11.1"

[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread", "time"] }
serde_json = "1"
async-trait = "0.1"
hmac = "0.12"
sha2 = "0.10"
hex = "0.4"

[package.metadata.docs.rs]
all-features = true