[package]
edition = "2021"
rust-version = "1.85"
name = "sonos-sdk"
version = "0.8.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Sync-first, DOM-like SDK for controlling Sonos speakers via UPnP"
readme = "README.md"
keywords = [
"sonos",
"upnp",
"audio",
"smart-home",
]
categories = [
"multimedia::audio",
"network-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/tatimblin/sonos-sdk"
[features]
test-support = []
[lib]
name = "sonos_sdk"
path = "src/lib.rs"
[[example]]
name = "basic_usage_sdk"
path = "examples/basic_usage_sdk.rs"
[[example]]
name = "group_lifecycle_test"
path = "examples/group_lifecycle_test.rs"
[[example]]
name = "property_observer"
path = "examples/property_observer.rs"
[[example]]
name = "sdk_demo"
path = "examples/sdk_demo.rs"
[[example]]
name = "smart_dashboard"
path = "examples/smart_dashboard.rs"
[[example]]
name = "watch_grace_period_demo"
path = "examples/watch_grace_period_demo.rs"
[[test]]
name = "data_freshness"
path = "tests/data_freshness.rs"
[[test]]
name = "integration_real_speakers"
path = "tests/integration_real_speakers.rs"
[[test]]
name = "property_tests"
path = "tests/property_tests.rs"
[[test]]
name = "property_validation"
path = "tests/property_validation.rs"
[dependencies.dirs]
version = "6"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sonos-api]
version = "0.8.0"
[dependencies.sonos-discovery]
version = "0.8.0"
package = "sonos-sdk-discovery"
[dependencies.sonos-event-manager]
version = "0.8.0"
package = "sonos-sdk-event-manager"
[dependencies.sonos-state]
version = "0.8.0"
package = "sonos-sdk-state"
[dependencies.thiserror]
version = "2.0"
[dependencies.tracing]
version = "0.1"
[dev-dependencies.chrono]
version = "0.4"
[dev-dependencies.ctrlc]
version = "3.4"
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
"fmt",
]
[lints.clippy]
await_holding_lock = "deny"
await_holding_refcell_ref = "deny"
dbg_macro = "warn"
debug_assert_with_mut_call = "warn"
empty_enum = "warn"
exit = "warn"
explicit_into_iter_loop = "warn"
explicit_iter_loop = "warn"
filter_map_next = "warn"
flat_map_option = "warn"
from_iter_instead_of_collect = "warn"
index_refutable_slice = "warn"
invalid_upcast_comparisons = "warn"
let_underscore_lock = "deny"
lossy_float_literal = "warn"
manual_ok_or = "warn"
match_wild_err_arm = "warn"
mem_forget = "warn"
mut_mut = "warn"
mutex_atomic = "warn"
needless_collect = "warn"
needless_pass_by_ref_mut = "warn"
negative_feature_names = "warn"
path_buf_push_overwrite = "warn"
rest_pat_in_fully_bound_structs = "warn"
semicolon_if_nothing_returned = "warn"
significant_drop_in_scrutinee = "warn"
string_to_string = "warn"
todo = "warn"
unchecked_duration_subtraction = "warn"
unimplemented = "warn"
uninlined_format_args = "warn"
verbose_file_reads = "warn"
wildcard_dependencies = "warn"
zero_sized_map_values = "warn"
[lints.rust]
unreachable_pub = "warn"
unsafe_code = "forbid"
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -1