smskit 0.2.0

Universal multi-provider SMS toolkit for Rust with framework-agnostic webhook processing
Documentation
[workspace]
members = [
    "crates/sms-core",
    "crates/sms-plivo",
    "crates/sms-twilio",
    "crates/sms-web-axum",
    "crates/sms-web-generic",
    "crates/sms-web-warp",
    "crates/sms-web-actix",
    "crates/sms-web-rocket",
    "crates/sms-web-poem",
    "crates/sms-web-hyper",
]
resolver = "2"

[workspace.package]
edition = "2024"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ciresnave/smskit"
homepage = "https://github.com/ciresnave/smskit"
readme = "README.md"

[workspace.dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "1.0"
async-trait = "0.1"
time = { version = "0.3", features = ["parsing", "formatting", "serde"] }
uuid = { version = "1.8", features = ["serde", "v4"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
config = "0.14"

[package]
name = "smskit"
version = "0.2.0"
edition = "2024"
license = "MIT OR Apache-2.0"
description = "Universal multi-provider SMS toolkit for Rust with framework-agnostic webhook processing"
keywords = ["sms", "webhook", "multi-provider", "plivo", "twilio"]
categories = ["api-bindings", "web-programming"]
repository = "https://github.com/ciresnave/smskit"
homepage = "https://github.com/ciresnave/smskit"
readme = "README.md"

[features]
default = []
warp = ["dep:warp", "sms-web-warp"]
actix-web = ["dep:actix-web", "sms-web-actix"]
rocket = ["dep:rocket", "sms-web-rocket"]
hyper = ["dep:hyper", "dep:hyper-util", "sms-web-hyper"]
hyper-util = ["dep:hyper-util"]

[dependencies]
sms-core = { version = "0.2.0", path = "crates/sms-core" }
sms-plivo = { version = "0.2.0", path = "crates/sms-plivo" }
sms-twilio = { version = "0.2.0", path = "crates/sms-twilio" }
sms-aws-sns = { version = "0.2.0", path = "crates/sms-aws-sns" }
sms-web-axum = { version = "0.2.0", path = "crates/sms-web-axum" }
sms-web-generic = { version = "0.2.0", path = "crates/sms-web-generic" }
sms-web-warp = { version = "0.2.0", path = "crates/sms-web-warp", optional = true }
sms-web-actix = { version = "0.2.0", path = "crates/sms-web-actix", optional = true }
sms-web-rocket = { version = "0.2.0", path = "crates/sms-web-rocket", optional = true }
sms-web-hyper = { version = "0.2.0", path = "crates/sms-web-hyper", optional = true }
# Framework dependencies for examples
warp = { version = "0.4", optional = true }
actix-web = { version = "4.0", optional = true }
rocket = { version = "0.5", optional = true }
hyper = { version = "1.0", features = ["full"], optional = true }
hyper-util = { version = "0.1", optional = true }
tokio = { version = "1.0", features = ["rt", "rt-multi-thread", "macros"] }
serde = { workspace = true }
serde_json = "1.0"
axum = "0.8"
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
config = { workspace = true }
tower = "0.5"
futures = "0.3"

[dev-dependencies]
sms-web-axum = { version = "0.2.0", path = "crates/sms-web-axum" }
criterion = { version = "0.5", features = ["html_reports", "async_tokio"] }

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

[[example]]
name = "send_plivo"
path = "examples/send_plivo.rs"

[[example]]
name = "unified_webhook"
path = "examples/unified_webhook.rs"

# Framework examples
[[example]]
name = "generic_integration"
path = "examples/frameworks/generic_integration.rs"
required-features = []

[[example]]
name = "warp_server"
path = "examples/frameworks/warp_server.rs"
required-features = ["warp"]

[[example]]
name = "actix_server"
path = "examples/frameworks/actix_server.rs"
required-features = ["actix-web"]

[[example]]
name = "hyper_server"
path = "examples/frameworks/hyper_server.rs"
required-features = ["hyper", "hyper-util"]