Migration vers une forme unifiée des cargos
This commit is contained in:
34
Cargo.lock
generated
34
Cargo.lock
generated
@@ -3642,7 +3642,7 @@ dependencies = [
|
|||||||
"pmoflac",
|
"pmoflac",
|
||||||
"pmometadata",
|
"pmometadata",
|
||||||
"pmoserver",
|
"pmoserver",
|
||||||
"quick-xml 0.37.5",
|
"quick-xml",
|
||||||
"rusqlite",
|
"rusqlite",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@@ -3721,7 +3721,7 @@ dependencies = [
|
|||||||
"pmodidl",
|
"pmodidl",
|
||||||
"pmoserver",
|
"pmoserver",
|
||||||
"pmoupnp",
|
"pmoupnp",
|
||||||
"quick-xml 0.38.4",
|
"quick-xml",
|
||||||
"ratatui",
|
"ratatui",
|
||||||
"rust_cast",
|
"rust_cast",
|
||||||
"rustls",
|
"rustls",
|
||||||
@@ -3769,7 +3769,7 @@ dependencies = [
|
|||||||
"bevy_reflect",
|
"bevy_reflect",
|
||||||
"bevy_reflect_derive",
|
"bevy_reflect_derive",
|
||||||
"pmoutils",
|
"pmoutils",
|
||||||
"quick-xml 0.38.4",
|
"quick-xml",
|
||||||
"serde",
|
"serde",
|
||||||
"utoipa",
|
"utoipa",
|
||||||
"utoipa-swagger-ui",
|
"utoipa-swagger-ui",
|
||||||
@@ -3790,7 +3790,7 @@ dependencies = [
|
|||||||
"opus",
|
"opus",
|
||||||
"pmometadata",
|
"pmometadata",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror 1.0.69",
|
"thiserror 2.0.17",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
@@ -3804,7 +3804,7 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"pmodidl",
|
"pmodidl",
|
||||||
"pmoupnp",
|
"pmoupnp",
|
||||||
"quick-xml 0.38.4",
|
"quick-xml",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -3827,10 +3827,10 @@ dependencies = [
|
|||||||
"pmosource",
|
"pmosource",
|
||||||
"pmoupnp",
|
"pmoupnp",
|
||||||
"pmoutils",
|
"pmoutils",
|
||||||
"quick-xml 0.38.4",
|
"quick-xml",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"thiserror 1.0.69",
|
"thiserror 2.0.17",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -3909,7 +3909,7 @@ dependencies = [
|
|||||||
"rusqlite",
|
"rusqlite",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"thiserror 1.0.69",
|
"thiserror 2.0.17",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -3946,7 +3946,7 @@ dependencies = [
|
|||||||
"serde_yaml",
|
"serde_yaml",
|
||||||
"sha1",
|
"sha1",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror 1.0.69",
|
"thiserror 2.0.17",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-test",
|
"tokio-test",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -3998,7 +3998,7 @@ dependencies = [
|
|||||||
"pmoupnp",
|
"pmoupnp",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"thiserror 1.0.69",
|
"thiserror 2.0.17",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -4030,7 +4030,7 @@ dependencies = [
|
|||||||
"pmoplaylist",
|
"pmoplaylist",
|
||||||
"pmoserver",
|
"pmoserver",
|
||||||
"pmoutils",
|
"pmoutils",
|
||||||
"quick-xml 0.37.5",
|
"quick-xml",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@@ -4053,7 +4053,7 @@ dependencies = [
|
|||||||
"get_if_addrs",
|
"get_if_addrs",
|
||||||
"netstat2",
|
"netstat2",
|
||||||
"os_info",
|
"os_info",
|
||||||
"quick-xml 0.38.4",
|
"quick-xml",
|
||||||
"sysinfo",
|
"sysinfo",
|
||||||
"users",
|
"users",
|
||||||
"xmltree 0.10.3",
|
"xmltree 0.10.3",
|
||||||
@@ -4337,16 +4337,6 @@ version = "2.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quick-xml"
|
|
||||||
version = "0.37.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-xml"
|
name = "quick-xml"
|
||||||
version = "0.38.4"
|
version = "0.38.4"
|
||||||
|
|||||||
32
Cargo.toml
32
Cargo.toml
@@ -21,3 +21,35 @@ members = [
|
|||||||
"pmoflac",
|
"pmoflac",
|
||||||
"pmometadata", "pmocontrol",
|
"pmometadata", "pmocontrol",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
# Core
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
serde_yaml = "0.9"
|
||||||
|
|
||||||
|
# Async runtime
|
||||||
|
tokio = { version = "1.35", features = ["full"] }
|
||||||
|
tokio-util = { version = "0.7", features = ["io"] }
|
||||||
|
async-trait = "0.1"
|
||||||
|
|
||||||
|
# Error handling
|
||||||
|
anyhow = "1.0"
|
||||||
|
thiserror = "2.0" # ⚠️ Unifier sur 2.0 (vous avez 1.0 et 2.0)
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
tracing = "0.1.41"
|
||||||
|
tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
|
||||||
|
|
||||||
|
# HTTP/XML
|
||||||
|
reqwest = { version = "0.12", default-features = false }
|
||||||
|
ureq = "3.1"
|
||||||
|
quick-xml = { version = "0.38", features = ["serialize"] } # ⚠️ Unifier 0.37→0.38
|
||||||
|
|
||||||
|
# Utilities
|
||||||
|
chrono = { version = "0.4", features = ["serde"] }
|
||||||
|
uuid = { version = "1.18", features = ["v4"] }
|
||||||
|
crossbeam-channel = "0.5"
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
tokio-test = "0.4"
|
||||||
@@ -16,8 +16,8 @@ pmoaudio-ext = { path = "../pmoaudio-ext", features = ["all"] }
|
|||||||
pmoapp = { path = "../pmoapp", features = ["pmoserver"] }
|
pmoapp = { path = "../pmoapp", features = ["pmoserver"] }
|
||||||
pmocontrol = { path = "../pmocontrol", features = ["pmoserver"] }
|
pmocontrol = { path = "../pmocontrol", features = ["pmoserver"] }
|
||||||
|
|
||||||
tokio = { version = "1.35", features = ["rt-multi-thread", "macros", "sync", "time","signal"] }
|
tokio = { workspace = true, features = ["rt-multi-thread", "macros", "sync", "time", "signal"] }
|
||||||
tracing = "0.1.41"
|
tracing = { workspace = true }
|
||||||
tracing-subscriber = "0.3.20"
|
tracing-subscriber = "0.3.20"
|
||||||
axum = "0.8.4"
|
axum = "0.8.4"
|
||||||
serde_json = "1.0.145"
|
serde_json = "1.0.145"
|
||||||
|
|||||||
25
PMOMusic/Cargo.toml.backup
Normal file
25
PMOMusic/Cargo.toml.backup
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[package]
|
||||||
|
name = "PMOMusic"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
pmoconfig = { path = "../pmoconfig" }
|
||||||
|
pmoupnp = { path = "../pmoupnp"}
|
||||||
|
pmomediarenderer = { path = "../pmomediarenderer" }
|
||||||
|
pmomediaserver = { path = "../pmomediaserver", features = ["qobuz", "paradise", "paradise-api", "api"] }
|
||||||
|
pmosource = { path = "../pmosource", features = ["server"] }
|
||||||
|
pmoserver = { path = "../pmoserver" }
|
||||||
|
pmocovers = { path = "../pmocovers", features = ["pmoserver"] }
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache", features = ["pmoserver"]}
|
||||||
|
pmoaudio-ext = { path = "../pmoaudio-ext", features = ["all"] }
|
||||||
|
pmoapp = { path = "../pmoapp", features = ["pmoserver"] }
|
||||||
|
pmocontrol = { path = "../pmocontrol", features = ["pmoserver"] }
|
||||||
|
|
||||||
|
tokio = { version = "1.35", features = ["rt-multi-thread", "macros", "sync", "time","signal"] }
|
||||||
|
tracing = "0.1.41"
|
||||||
|
tracing-subscriber = "0.3.20"
|
||||||
|
axum = "0.8.4"
|
||||||
|
serde_json = "1.0.145"
|
||||||
|
utoipa = "5.4"
|
||||||
|
console-subscriber = "0.4.1"
|
||||||
15
pmoapp/Cargo.toml.backup
Normal file
15
pmoapp/Cargo.toml.backup
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoapp"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
rust-embed = "8.5.0"
|
||||||
|
|
||||||
|
[dependencies.pmoserver]
|
||||||
|
path = "../pmoserver"
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
pmoserver = ["dep:pmoserver"]
|
||||||
@@ -18,7 +18,7 @@ pmoplaylist = { path = "../pmoplaylist", optional = true }
|
|||||||
pmocache = { path = "../pmocache", optional = true }
|
pmocache = { path = "../pmocache", optional = true }
|
||||||
|
|
||||||
# Async runtime
|
# Async runtime
|
||||||
tokio = { version = "1.0", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
tokio-util = { version = "0.7" }
|
tokio-util = { version = "0.7" }
|
||||||
async-trait = "0.1"
|
async-trait = "0.1"
|
||||||
|
|
||||||
@@ -28,8 +28,8 @@ rand = "0.8"
|
|||||||
|
|
||||||
# HTTP streaming dependencies
|
# HTTP streaming dependencies
|
||||||
bytes = { version = "1.0", optional = true }
|
bytes = { version = "1.0", optional = true }
|
||||||
serde = { version = "1.0", features = ["derive"], optional = true }
|
serde = { workspace = true, optional = true }
|
||||||
serde_json = { version = "1.0", optional = true }
|
serde_json = { workspace = true, optional = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ default = []
|
|||||||
simd = []
|
simd = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tokio = { version = "1.42", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
tokio-util = { version = "0.7", features = ["io"] }
|
tokio-util = { version = "0.7", features = ["io"] }
|
||||||
async-trait = "0.1"
|
async-trait = { workspace = true }
|
||||||
futures-util = "0.3"
|
futures-util = "0.3"
|
||||||
pmoflac = { path = "../pmoflac" }
|
pmoflac = { path = "../pmoflac" }
|
||||||
pmometadata = { path = "../pmometadata" }
|
pmometadata = { path = "../pmometadata" }
|
||||||
@@ -18,7 +18,7 @@ paste = "1"
|
|||||||
soxr = "0.6.0"
|
soxr = "0.6.0"
|
||||||
bytemuck = "1.24.0"
|
bytemuck = "1.24.0"
|
||||||
reqwest = { version = "0.12", features = ["stream"] }
|
reqwest = { version = "0.12", features = ["stream"] }
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
cpal = "0.15"
|
cpal = "0.15"
|
||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
|
|
||||||
@@ -26,4 +26,4 @@ once_cell = "1.20"
|
|||||||
tokio-test = "0.4"
|
tokio-test = "0.4"
|
||||||
tempfile = "3"
|
tempfile = "3"
|
||||||
wiremock = "0.6"
|
wiremock = "0.6"
|
||||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
tracing-subscriber = { workspace = true }
|
||||||
|
|||||||
29
pmoaudio/Cargo.toml.backup
Executable file
29
pmoaudio/Cargo.toml.backup
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoaudio"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
simd = []
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio = { version = "1.42", features = ["full"] }
|
||||||
|
tokio-util = { version = "0.7", features = ["io"] }
|
||||||
|
async-trait = "0.1"
|
||||||
|
futures-util = "0.3"
|
||||||
|
pmoflac = { path = "../pmoflac" }
|
||||||
|
pmometadata = { path = "../pmometadata" }
|
||||||
|
paste = "1"
|
||||||
|
soxr = "0.6.0"
|
||||||
|
bytemuck = "1.24.0"
|
||||||
|
reqwest = { version = "0.12", features = ["stream"] }
|
||||||
|
tracing = "0.1"
|
||||||
|
cpal = "0.15"
|
||||||
|
once_cell = "1.20"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tokio-test = "0.4"
|
||||||
|
tempfile = "3"
|
||||||
|
wiremock = "0.6"
|
||||||
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||||
@@ -16,7 +16,7 @@ pmometadata = { path = "../pmometadata" }
|
|||||||
|
|
||||||
# Base de données
|
# Base de données
|
||||||
rusqlite = { version = "0.37", features = ["bundled"] }
|
rusqlite = { version = "0.37", features = ["bundled"] }
|
||||||
chrono = "0.4"
|
chrono = { workspace = true }
|
||||||
|
|
||||||
# Métadonnées audio
|
# Métadonnées audio
|
||||||
lofty = "0.22"
|
lofty = "0.22"
|
||||||
@@ -26,15 +26,15 @@ futures-util = "0.3"
|
|||||||
bytes = "1.0"
|
bytes = "1.0"
|
||||||
|
|
||||||
# Utilitaires
|
# Utilitaires
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
quick-xml = { version = "0.37", features = ["serialize"] }
|
quick-xml = { workspace = true }
|
||||||
paste = "1.0"
|
paste = "1.0"
|
||||||
async-trait = "0.1"
|
async-trait = { workspace = true }
|
||||||
|
|
||||||
# Async
|
# Async
|
||||||
tokio = { version = "1.0", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
|
|
||||||
# Singleton
|
# Singleton
|
||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
@@ -45,7 +45,7 @@ pmoconfig = { path = "../pmoconfig", optional = true }
|
|||||||
axum = { version = "0.8", optional = true }
|
axum = { version = "0.8", optional = true }
|
||||||
utoipa = { version = "5.3", features = ["axum_extras"], optional = true }
|
utoipa = { version = "5.3", features = ["axum_extras"], optional = true }
|
||||||
|
|
||||||
tracing = "0.1.41"
|
tracing = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tracing-subscriber = "0.3"
|
tracing-subscriber = "0.3"
|
||||||
|
|||||||
57
pmoaudiocache/Cargo.toml.backup
Normal file
57
pmoaudiocache/Cargo.toml.backup
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoaudiocache"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
# Cache générique
|
||||||
|
pmocache = { path = "../pmocache" }
|
||||||
|
|
||||||
|
# DIDL-Lite pour UPnP
|
||||||
|
pmodidl = { path = "../pmodidl" }
|
||||||
|
|
||||||
|
# Streaming FLAC asynchrone
|
||||||
|
pmoflac = { path = "../pmoflac" }
|
||||||
|
pmometadata = { path = "../pmometadata" }
|
||||||
|
|
||||||
|
# Base de données
|
||||||
|
rusqlite = { version = "0.37", features = ["bundled"] }
|
||||||
|
chrono = "0.4"
|
||||||
|
|
||||||
|
# Métadonnées audio
|
||||||
|
lofty = "0.22"
|
||||||
|
|
||||||
|
# Outils de streaming
|
||||||
|
futures-util = "0.3"
|
||||||
|
bytes = "1.0"
|
||||||
|
|
||||||
|
# Utilitaires
|
||||||
|
anyhow = "1.0"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
quick-xml = { version = "0.38", features = ["serialize"] }
|
||||||
|
paste = "1.0"
|
||||||
|
async-trait = "0.1"
|
||||||
|
|
||||||
|
# Async
|
||||||
|
tokio = { version = "1.0", features = ["full"] }
|
||||||
|
|
||||||
|
# Singleton
|
||||||
|
once_cell = "1.20"
|
||||||
|
|
||||||
|
# Serveur HTTP (optionnel pour l'extension)
|
||||||
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
|
pmoconfig = { path = "../pmoconfig", optional = true }
|
||||||
|
axum = { version = "0.8", optional = true }
|
||||||
|
utoipa = { version = "5.3", features = ["axum_extras"], optional = true }
|
||||||
|
|
||||||
|
tracing = "0.1.41"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tracing-subscriber = "0.3"
|
||||||
|
tempfile = "3"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["pmoserver"]
|
||||||
|
pmoconfig = ["dep:pmoconfig", "pmocache/pmoconfig"]
|
||||||
|
pmoserver = ["pmoconfig", "dep:pmoserver", "dep:axum", "dep:utoipa", "pmocache/pmoserver", "pmocache/openapi"]
|
||||||
@@ -394,7 +394,7 @@ impl TrackMetadata for AudioCacheTrackMetadata {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn touch(&mut self) -> MetadataResult<()> {
|
async fn touch(&mut self) -> MetadataResult<()> {
|
||||||
self.write_timestamp(Instant::now())?;
|
self.write_timestamp(SystemTime::now())?;
|
||||||
Ok(Some(()))
|
Ok(Some(()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,21 +17,21 @@ sha2 = "0.10"
|
|||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
|
|
||||||
# Utilitaires
|
# Utilitaires
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
async-trait = "0.1"
|
async-trait = { workspace = true }
|
||||||
chrono = "0.4"
|
chrono = { workspace = true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
bytes = "1.6"
|
bytes = "1.6"
|
||||||
paste = "1.0"
|
paste = "1.0"
|
||||||
pmoflac = { path = "../pmoflac" }
|
pmoflac = { path = "../pmoflac" }
|
||||||
|
|
||||||
# Async
|
# Async
|
||||||
tokio = { version = "1.0", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
tokio-util = { version = "0.7", features = ["io"] }
|
tokio-util = { version = "0.7", features = ["io"] }
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
|
|
||||||
# Feature pour OpenAPI
|
# Feature pour OpenAPI
|
||||||
utoipa = { version = "5.3", optional = true }
|
utoipa = { version = "5.3", optional = true }
|
||||||
|
|||||||
53
pmocache/Cargo.toml.backup
Normal file
53
pmocache/Cargo.toml.backup
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmocache"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
# Base de données
|
||||||
|
rusqlite = { version = "0.37.0", features = ["bundled"] }
|
||||||
|
|
||||||
|
# HTTP client
|
||||||
|
reqwest = { version = "0.12", features = ["blocking", "stream"] }
|
||||||
|
futures-util = "0.3"
|
||||||
|
|
||||||
|
# Cryptographie
|
||||||
|
sha1 = "0.10"
|
||||||
|
sha2 = "0.10"
|
||||||
|
hex = "0.4"
|
||||||
|
|
||||||
|
# Utilitaires
|
||||||
|
anyhow = "1.0"
|
||||||
|
async-trait = "0.1"
|
||||||
|
chrono = "0.4"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
bytes = "1.6"
|
||||||
|
paste = "1.0"
|
||||||
|
pmoflac = { path = "../pmoflac" }
|
||||||
|
|
||||||
|
# Async
|
||||||
|
tokio = { version = "1.0", features = ["full"] }
|
||||||
|
tokio-util = { version = "0.7", features = ["io"] }
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
tracing = "0.1"
|
||||||
|
|
||||||
|
# Feature pour OpenAPI
|
||||||
|
utoipa = { version = "5.3", optional = true }
|
||||||
|
|
||||||
|
# Feature pour pmoserver (extension HTTP)
|
||||||
|
axum = { version = "0.8", optional = true }
|
||||||
|
|
||||||
|
# Feature pour pmoconfig (extension de configuration)
|
||||||
|
pmoconfig = { path = "../pmoconfig", optional = true }
|
||||||
|
serde_yaml = { version = "0.9", optional = true }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempfile = "3"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
openapi = ["dep:utoipa"]
|
||||||
|
pmoserver = ["dep:axum"]
|
||||||
|
pmoconfig = ["dep:pmoconfig", "dep:serde_yaml"]
|
||||||
@@ -7,21 +7,21 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
pmoutils ={ path = "../pmoutils" }
|
pmoutils ={ path = "../pmoutils" }
|
||||||
|
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_yaml = "0.9.33"
|
serde_yaml = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
dirs = "6.0.0"
|
dirs = "6.0.0"
|
||||||
log = "0.4.20"
|
log = "0.4.20"
|
||||||
anyhow = "1.0.75"
|
anyhow = "1.0.75"
|
||||||
uuid = { version = "1.18.1", features = ["v4"] }
|
uuid = { workspace = true }
|
||||||
tracing = "0.1.41"
|
tracing = { workspace = true }
|
||||||
aes-gcm = "0.10"
|
aes-gcm = "0.10"
|
||||||
sha2 = "0.10"
|
sha2 = "0.10"
|
||||||
base64 = "0.22"
|
base64 = "0.22"
|
||||||
|
|
||||||
# Async
|
# Async
|
||||||
tokio = { version = "1.0", features = ["full"], optional = true }
|
tokio = { workspace = true, optional = true }
|
||||||
|
|
||||||
# Serveur HTTP (pour l'API REST)
|
# Serveur HTTP (pour l'API REST)
|
||||||
axum = { version = "0.8", optional = true }
|
axum = { version = "0.8", optional = true }
|
||||||
|
|||||||
32
pmoconfig/Cargo.toml.backup
Normal file
32
pmoconfig/Cargo.toml.backup
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
[package]
|
||||||
|
name = "pmoconfig"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
pmoutils ={ path = "../pmoutils" }
|
||||||
|
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_yaml = "0.9.33"
|
||||||
|
serde_json = "1.0"
|
||||||
|
lazy_static = "1.4.0"
|
||||||
|
dirs = "6.0.0"
|
||||||
|
log = "0.4.20"
|
||||||
|
anyhow = "1.0.75"
|
||||||
|
uuid = { version = "1.18.1", features = ["v4"] }
|
||||||
|
tracing = "0.1.41"
|
||||||
|
aes-gcm = "0.10"
|
||||||
|
sha2 = "0.10"
|
||||||
|
base64 = "0.22"
|
||||||
|
|
||||||
|
# Async
|
||||||
|
tokio = { version = "1.0", features = ["full"], optional = true }
|
||||||
|
|
||||||
|
# Serveur HTTP (pour l'API REST)
|
||||||
|
axum = { version = "0.8", optional = true }
|
||||||
|
utoipa = { version = "5.3", features = ["axum_extras"], optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
api = ["dep:tokio", "dep:axum", "dep:utoipa"]
|
||||||
@@ -6,13 +6,13 @@ edition = "2024"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
pmoupnp = { path = "../pmoupnp" }
|
pmoupnp = { path = "../pmoupnp" }
|
||||||
pmodidl = { path = "../pmodidl" }
|
pmodidl = { path = "../pmodidl" }
|
||||||
quick-xml = "0.38.4"
|
quick-xml = { workspace = true }
|
||||||
thiserror = "2.0.17"
|
thiserror = { workspace = true }
|
||||||
ureq = "3.1.4"
|
ureq = "3.1.4"
|
||||||
tracing = "0.1.41"
|
tracing = { workspace = true }
|
||||||
tracing-subscriber = "0.3"
|
tracing-subscriber = "0.3"
|
||||||
tracing-log = "0.1"
|
tracing-log = "0.1"
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
xmltree = "0.11.0"
|
xmltree = "0.11.0"
|
||||||
crossbeam-channel = "0.5"
|
crossbeam-channel = "0.5"
|
||||||
ratatui = { version = "0.26", default-features = false, features = ["crossterm"] }
|
ratatui = { version = "0.26", default-features = false, features = ["crossterm"] }
|
||||||
@@ -28,9 +28,9 @@ smol = "2.0"
|
|||||||
pmoserver = { path = "../pmoserver", optional = true }
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
utoipa = { version = "5.4.0", optional = true }
|
utoipa = { version = "5.4.0", optional = true }
|
||||||
axum = { version = "0.8.4", optional = true }
|
axum = { version = "0.8.4", optional = true }
|
||||||
serde = { version = "1.0", features = ["derive"], optional = true }
|
serde = { workspace = true, optional = true }
|
||||||
serde_json = { version = "1.0", optional = true }
|
serde_json = { workspace = true, optional = true }
|
||||||
tokio = { version = "1", features = ["sync", "rt"], optional = true }
|
tokio = { workspace = true, features = ["sync", "rt"], optional = true }
|
||||||
tokio-util = { version = "0.7", optional = true }
|
tokio-util = { version = "0.7", optional = true }
|
||||||
async-trait = { version = "0.1", optional = true }
|
async-trait = { version = "0.1", optional = true }
|
||||||
tokio-stream = { version = "0.1", features = ["sync"], optional = true }
|
tokio-stream = { version = "0.1", features = ["sync"], optional = true }
|
||||||
@@ -38,8 +38,8 @@ async-stream = { version = "0.3", optional = true }
|
|||||||
chrono = { version = "0.4", features = ["serde"], optional = true }
|
chrono = { version = "0.4", features = ["serde"], optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
percent-encoding = "2.3"
|
percent-encoding = "2.3"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
|||||||
48
pmocontrol/Cargo.toml.backup
Normal file
48
pmocontrol/Cargo.toml.backup
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmocontrol"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
pmoupnp = { path = "../pmoupnp" }
|
||||||
|
pmodidl = { path = "../pmodidl" }
|
||||||
|
quick-xml = "0.38.4"
|
||||||
|
thiserror = "2.0.17"
|
||||||
|
ureq = "3.1.4"
|
||||||
|
tracing = "0.1.41"
|
||||||
|
tracing-subscriber = "0.3"
|
||||||
|
tracing-log = "0.1"
|
||||||
|
anyhow = "1.0"
|
||||||
|
xmltree = "0.11.0"
|
||||||
|
crossbeam-channel = "0.5"
|
||||||
|
ratatui = { version = "0.26", default-features = false, features = ["crossterm"] }
|
||||||
|
crossterm = "0.27"
|
||||||
|
rust_cast = "0.19"
|
||||||
|
rustls = { version = "0.23", features = ["aws-lc-rs"] }
|
||||||
|
mdns = "3.0"
|
||||||
|
async-std = "1.12"
|
||||||
|
futures-util = "0.3"
|
||||||
|
smol = "2.0"
|
||||||
|
|
||||||
|
# pmoserver extension support (optional)
|
||||||
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
|
utoipa = { version = "5.4.0", optional = true }
|
||||||
|
axum = { version = "0.8.4", optional = true }
|
||||||
|
serde = { version = "1.0", features = ["derive"], optional = true }
|
||||||
|
serde_json = { version = "1.0", optional = true }
|
||||||
|
tokio = { version = "1", features = ["sync", "rt"], optional = true }
|
||||||
|
tokio-util = { version = "0.7", optional = true }
|
||||||
|
async-trait = { version = "0.1", optional = true }
|
||||||
|
tokio-stream = { version = "0.1", features = ["sync"], optional = true }
|
||||||
|
async-stream = { version = "0.3", optional = true }
|
||||||
|
chrono = { version = "0.4", features = ["serde"], optional = true }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
percent-encoding = "2.3"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
# Active l'API REST pmoserver
|
||||||
|
pmoserver = ["dep:pmoserver", "dep:utoipa", "dep:axum", "dep:serde", "dep:serde_json", "dep:tokio", "dep:tokio-util", "dep:async-trait", "dep:tokio-stream", "dep:async-stream", "dep:chrono"]
|
||||||
@@ -15,12 +15,12 @@ webp = "0.3"
|
|||||||
reqwest = { version = "0.12", features = ["blocking"] }
|
reqwest = { version = "0.12", features = ["blocking"] }
|
||||||
|
|
||||||
# Utilitaires
|
# Utilitaires
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
|
|
||||||
# Async
|
# Async
|
||||||
tokio = { version = "1.0", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
|
|
||||||
# Singleton
|
# Singleton
|
||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
@@ -32,7 +32,7 @@ async-trait = { version = "0.1", optional = true }
|
|||||||
axum = { version = "0.8", optional = true }
|
axum = { version = "0.8", optional = true }
|
||||||
utoipa = { version = "5.3", features = ["axum_extras"], optional = true }
|
utoipa = { version = "5.3", features = ["axum_extras"], optional = true }
|
||||||
|
|
||||||
tracing = "0.1.41"
|
tracing = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3"
|
tempfile = "3"
|
||||||
|
|||||||
51
pmocovers/Cargo.toml.backup
Normal file
51
pmocovers/Cargo.toml.backup
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmocovers"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
# Cache générique
|
||||||
|
pmocache = { path = "../pmocache" }
|
||||||
|
|
||||||
|
# Gestion d'images
|
||||||
|
image = "0.25"
|
||||||
|
webp = "0.3"
|
||||||
|
|
||||||
|
# HTTP client
|
||||||
|
reqwest = { version = "0.12", features = ["blocking"] }
|
||||||
|
|
||||||
|
# Utilitaires
|
||||||
|
anyhow = "1.0"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
|
||||||
|
# Async
|
||||||
|
tokio = { version = "1.0", features = ["full"] }
|
||||||
|
|
||||||
|
# Singleton
|
||||||
|
once_cell = "1.20"
|
||||||
|
|
||||||
|
# Serveur HTTP (optionnel pour l'extension)
|
||||||
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
|
pmoconfig = { path = "../pmoconfig", optional = true }
|
||||||
|
async-trait = { version = "0.1", optional = true }
|
||||||
|
axum = { version = "0.8", optional = true }
|
||||||
|
utoipa = { version = "5.3", features = ["axum_extras"], optional = true }
|
||||||
|
|
||||||
|
tracing = "0.1.41"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempfile = "3"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["pmoserver"]
|
||||||
|
pmoconfig = ["dep:pmoconfig", "pmocache/pmoconfig"]
|
||||||
|
pmoserver = [
|
||||||
|
"pmoconfig",
|
||||||
|
"dep:pmoserver",
|
||||||
|
"dep:axum",
|
||||||
|
"dep:utoipa",
|
||||||
|
"pmocache/openapi",
|
||||||
|
"pmocache/pmoserver",
|
||||||
|
"dep:async-trait",
|
||||||
|
]
|
||||||
@@ -4,10 +4,10 @@ version = "0.1.0"
|
|||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
serde = "1.0.228"
|
serde = { workspace = true }
|
||||||
utoipa = { version = "5.4.0", features = ["axum_extras"] }
|
utoipa = { version = "5.4.0", features = ["axum_extras"] }
|
||||||
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
||||||
quick-xml = { version = "0.38.3", features = ["serialize"] }
|
quick-xml = { workspace = true }
|
||||||
bevy_reflect = "0.17.1"
|
bevy_reflect = "0.17.1"
|
||||||
bevy_reflect_derive = "0.17.1"
|
bevy_reflect_derive = "0.17.1"
|
||||||
pmoutils = { path = "../pmoutils" }
|
pmoutils = { path = "../pmoutils" }
|
||||||
|
|||||||
14
pmodidl/Cargo.toml.backup
Normal file
14
pmodidl/Cargo.toml.backup
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmodidl"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = "1.0.228"
|
||||||
|
utoipa = { version = "5.4.0", features = ["axum_extras"] }
|
||||||
|
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
||||||
|
quick-xml = { version = "0.38.3", features = ["serialize"] }
|
||||||
|
bevy_reflect = "0.17.1"
|
||||||
|
bevy_reflect_derive = "0.17.1"
|
||||||
|
pmoutils = { path = "../pmoutils" }
|
||||||
|
xmltree = "0.10"
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
use bevy_reflect::Reflect;
|
use bevy_reflect::Reflect;
|
||||||
use pmoutils::ToXmlElement;
|
use pmoutils::ToXmlElement;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
use std::time::SystemTime;
|
||||||
use std::{borrow::Cow, time::Instant};
|
use std::{borrow::Cow, time::Instant};
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
@@ -36,7 +37,7 @@ pub struct ParsedMetadata<T> {
|
|||||||
/// Timestamp du parsing (exclu de la réflexion car SystemTime n'implémente pas Reflect)
|
/// Timestamp du parsing (exclu de la réflexion car SystemTime n'implémente pas Reflect)
|
||||||
#[reflect(ignore)]
|
#[reflect(ignore)]
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub parsed_at: Option<Instant>,
|
pub parsed_at: Option<SystemTime>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> ParsedMetadata<T> {
|
impl<T> ParsedMetadata<T> {
|
||||||
@@ -44,7 +45,7 @@ impl<T> ParsedMetadata<T> {
|
|||||||
Self {
|
Self {
|
||||||
format: format.into(),
|
format: format.into(),
|
||||||
data,
|
data,
|
||||||
parsed_at: Some(Instant::now()),
|
parsed_at: Some(SystemTime::now()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ lofty = "0.22"
|
|||||||
minimp3 = "0.5"
|
minimp3 = "0.5"
|
||||||
opus = "0.3"
|
opus = "0.3"
|
||||||
pmometadata = { path = "../pmometadata" }
|
pmometadata = { path = "../pmometadata" }
|
||||||
thiserror = "1.0"
|
thiserror = { workspace = true }
|
||||||
tokio = { version = "1.37", features = ["rt", "rt-multi-thread", "macros", "sync", "io-util", "fs"] }
|
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "sync", "io-util", "fs"] }
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3.10"
|
tempfile = "3.10"
|
||||||
tokio = { version = "1.37", features = ["rt", "rt-multi-thread", "macros", "sync", "io-util", "time", "fs"] }
|
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "sync", "io-util", "time", "fs"] }
|
||||||
|
|||||||
29
pmoflac/Cargo.toml.backup
Executable file
29
pmoflac/Cargo.toml.backup
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoflac"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
authors = ["PMOMusic"]
|
||||||
|
description = "Asynchronous FLAC <-> PCM streaming utilities"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
name = "pmoflac"
|
||||||
|
path = "src/lib.rs"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
bytes = "1.6"
|
||||||
|
claxon = "0.4"
|
||||||
|
lewton = "0.10"
|
||||||
|
libc = "0.2"
|
||||||
|
libflac-sys = { version = "0.3.3", default-features = false, features = ["build-flac"] }
|
||||||
|
lofty = "0.22"
|
||||||
|
minimp3 = "0.5"
|
||||||
|
opus = "0.3"
|
||||||
|
pmometadata = { path = "../pmometadata" }
|
||||||
|
thiserror = "2.0"
|
||||||
|
tokio = { version = "1.37", features = ["rt", "rt-multi-thread", "macros", "sync", "io-util", "fs"] }
|
||||||
|
tracing = "0.1"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempfile = "3.10"
|
||||||
|
tokio = { version = "1.37", features = ["rt", "rt-multi-thread", "macros", "sync", "io-util", "time", "fs"] }
|
||||||
@@ -10,4 +10,4 @@ pmodidl = { path = "../pmodidl" }
|
|||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
bevy_reflect = "0.17.1"
|
bevy_reflect = "0.17.1"
|
||||||
htmlescape = "0.3"
|
htmlescape = "0.3"
|
||||||
quick-xml = "0.38.3"
|
quick-xml = { workspace = true }
|
||||||
|
|||||||
13
pmomediarenderer/Cargo.toml.backup
Normal file
13
pmomediarenderer/Cargo.toml.backup
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmomediarenderer"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
pmoupnp = { path = "../pmoupnp" }
|
||||||
|
pmodidl = { path = "../pmodidl" }
|
||||||
|
|
||||||
|
once_cell = "1.20"
|
||||||
|
bevy_reflect = "0.17.1"
|
||||||
|
htmlescape = "0.3"
|
||||||
|
quick-xml = "0.38.3"
|
||||||
@@ -11,13 +11,13 @@ pmoserver = { path = "../pmoserver" }
|
|||||||
|
|
||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
bevy_reflect = "0.17.1"
|
bevy_reflect = "0.17.1"
|
||||||
tokio = { version = "1", features = ["sync"] }
|
tokio = { workspace = true, features = ["sync"] }
|
||||||
async-trait = "0.1"
|
async-trait = { workspace = true }
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
quick-xml = { version = "0.38.3", features = ["serialize"] }
|
quick-xml = { workspace = true }
|
||||||
thiserror = "1.0"
|
thiserror = { workspace = true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
pmoutils = { path = "../pmoutils" }
|
pmoutils = { path = "../pmoutils" }
|
||||||
|
|
||||||
# Optional dependencies
|
# Optional dependencies
|
||||||
|
|||||||
54
pmomediaserver/Cargo.toml.backup
Normal file
54
pmomediaserver/Cargo.toml.backup
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmomediaserver"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
pmoupnp = { path = "../pmoupnp" }
|
||||||
|
pmodidl = { path = "../pmodidl" }
|
||||||
|
pmosource = { path = "../pmosource" }
|
||||||
|
pmoserver = { path = "../pmoserver" }
|
||||||
|
|
||||||
|
once_cell = "1.20"
|
||||||
|
bevy_reflect = "0.17.1"
|
||||||
|
tokio = { version = "1", features = ["sync"] }
|
||||||
|
async-trait = "0.1"
|
||||||
|
tracing = "0.1"
|
||||||
|
quick-xml = { version = "0.38.3", features = ["serialize"] }
|
||||||
|
thiserror = "2.0"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
pmoutils = { path = "../pmoutils" }
|
||||||
|
|
||||||
|
# Optional dependencies
|
||||||
|
axum = { version = "0.8", optional = true }
|
||||||
|
utoipa = { version = "5.3", optional = true }
|
||||||
|
pmoqobuz = { path = "../pmoqobuz", optional = true }
|
||||||
|
pmoparadise = { path = "../pmoparadise", optional = true }
|
||||||
|
pmoconfig = { path = "../pmoconfig", optional = true }
|
||||||
|
anyhow = { version = "1.0", optional = true }
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache", optional = true }
|
||||||
|
pmocovers = { path = "../pmocovers", optional = true, features = ["pmoserver"] }
|
||||||
|
pmoplaylist = { path = "../pmoplaylist", optional = true }
|
||||||
|
tokio-util = { version = "0.7", features = ["io"], optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["pmosource/server"]
|
||||||
|
# Feature pour activer l'API REST de gestion des sources
|
||||||
|
api = ["dep:axum", "dep:utoipa", "pmosource/server"]
|
||||||
|
# Feature pour activer le support Qobuz configuré
|
||||||
|
qobuz = ["api", "dep:pmoqobuz", "dep:pmoconfig", "pmoqobuz/server"]
|
||||||
|
# Feature pour activer le support Radio Paradise
|
||||||
|
paradise = [
|
||||||
|
"api",
|
||||||
|
"dep:pmoparadise",
|
||||||
|
"pmoparadise/full",
|
||||||
|
"dep:anyhow",
|
||||||
|
"dep:pmoaudiocache",
|
||||||
|
"dep:pmocovers",
|
||||||
|
"pmocovers/pmoserver",
|
||||||
|
"dep:pmoplaylist",
|
||||||
|
"dep:tokio-util"
|
||||||
|
]
|
||||||
|
# Feature pour activer l'API REST de Radio Paradise (en plus de la source UPnP)
|
||||||
|
paradise-api = ["paradise", "pmoparadise/pmoserver"]
|
||||||
@@ -6,8 +6,8 @@ edition = "2024"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
async-trait = "0.1.89"
|
async-trait = "0.1.89"
|
||||||
paste = "1"
|
paste = "1"
|
||||||
thiserror = "2.0.17"
|
thiserror = { workspace = true }
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tokio-test = "0.4"
|
tokio-test = "0.4"
|
||||||
|
|||||||
13
pmometadata/Cargo.toml.backup
Normal file
13
pmometadata/Cargo.toml.backup
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmometadata"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
async-trait = "0.1.89"
|
||||||
|
paste = "1"
|
||||||
|
thiserror = "2.0.17"
|
||||||
|
tokio = { version = "1", features = ["full"] }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tokio-test = "0.4"
|
||||||
@@ -840,7 +840,7 @@ impl TrackMetadata for MemoryTrackMetadata {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn touch(&mut self) -> MetadataResult<()> {
|
async fn touch(&mut self) -> MetadataResult<()> {
|
||||||
self.updated_at = Some());
|
self.updated_at = Some(SystemTime::now());
|
||||||
Ok(Some(()))
|
Ok(Some(()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,16 +14,16 @@ categories = ["multimedia", "api-bindings"]
|
|||||||
reqwest = { version = "0.12", features = ["json", "stream"] }
|
reqwest = { version = "0.12", features = ["json", "stream"] }
|
||||||
|
|
||||||
# Gestion asynchrone
|
# Gestion asynchrone
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
|
|
||||||
# Sérialisation/Désérialisation JSON
|
# Sérialisation/Désérialisation JSON
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
serde_yaml = "0.9.33"
|
serde_yaml = { workspace = true }
|
||||||
|
|
||||||
# Helpers
|
# Helpers
|
||||||
chrono = { version = "0.4", features = ["serde"] }
|
chrono = { workspace = true }
|
||||||
async-trait = "0.1"
|
async-trait = { workspace = true }
|
||||||
sha2 = "0.10"
|
sha2 = "0.10"
|
||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
tokio-util = { version = "0.7", features = ["io"] }
|
tokio-util = { version = "0.7", features = ["io"] }
|
||||||
@@ -32,8 +32,8 @@ rusqlite = { version = "0.37", features = ["bundled"] }
|
|||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
|
|
||||||
# Gestion des erreurs
|
# Gestion des erreurs
|
||||||
thiserror = "2.0.17"
|
thiserror = { workspace = true }
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
|
|
||||||
# Streaming de bytes
|
# Streaming de bytes
|
||||||
bytes = "1.5"
|
bytes = "1.5"
|
||||||
@@ -41,7 +41,7 @@ futures = "0.3"
|
|||||||
flacenc = "0.5.0"
|
flacenc = "0.5.0"
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
|
|
||||||
# URL manipulation
|
# URL manipulation
|
||||||
url = "2.5"
|
url = "2.5"
|
||||||
|
|||||||
121
pmoparadise/Cargo.toml.backup
Normal file
121
pmoparadise/Cargo.toml.backup
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoparadise"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
authors = ["PMOMusic Contributors"]
|
||||||
|
description = "Rust client for Radio Paradise streaming service"
|
||||||
|
license = "MIT OR Apache-2.0"
|
||||||
|
repository = "https://github.com/yourusername/pmomusic"
|
||||||
|
keywords = ["radio", "paradise", "streaming", "music", "flac"]
|
||||||
|
categories = ["multimedia", "api-bindings"]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
# HTTP client pour les requêtes à l'API Radio Paradise
|
||||||
|
reqwest = { version = "0.12", features = ["json", "stream"] }
|
||||||
|
|
||||||
|
# Gestion asynchrone
|
||||||
|
tokio = { version = "1", features = ["full"] }
|
||||||
|
|
||||||
|
# Sérialisation/Désérialisation JSON
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
serde_yaml = "0.9.33"
|
||||||
|
|
||||||
|
# Helpers
|
||||||
|
chrono = { version = "0.4", features = ["serde"] }
|
||||||
|
async-trait = "0.1"
|
||||||
|
sha2 = "0.10"
|
||||||
|
hex = "0.4"
|
||||||
|
tokio-util = { version = "0.7", features = ["io"] }
|
||||||
|
async-stream = "0.3"
|
||||||
|
rusqlite = { version = "0.37", features = ["bundled"] }
|
||||||
|
once_cell = "1.20"
|
||||||
|
|
||||||
|
# Gestion des erreurs
|
||||||
|
thiserror = "2.0.17"
|
||||||
|
anyhow = "1.0"
|
||||||
|
|
||||||
|
# Streaming de bytes
|
||||||
|
bytes = "1.5"
|
||||||
|
futures = "0.3"
|
||||||
|
flacenc = "0.5.0"
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
tracing = "0.1"
|
||||||
|
|
||||||
|
# URL manipulation
|
||||||
|
url = "2.5"
|
||||||
|
|
||||||
|
# Audio decoding/encoding
|
||||||
|
symphonia = { version = "0.5", features = ["all"] }
|
||||||
|
|
||||||
|
# Audio decoding - claxon for FLAC streaming
|
||||||
|
claxon = "0.4"
|
||||||
|
|
||||||
|
# pmoaudio-ext with playlist support (optional for examples)
|
||||||
|
pmoaudio-ext = { path = "../pmoaudio-ext", optional = true, features = ["playlist", "http-stream", "cache-sink"] }
|
||||||
|
|
||||||
|
# Common music source traits
|
||||||
|
pmosource = { path = "../pmosource" }
|
||||||
|
|
||||||
|
# Playlist management for FIFO support
|
||||||
|
pmoplaylist = { path = "../pmoplaylist" }
|
||||||
|
pmoconfig = { path = "../pmoconfig", optional = true }
|
||||||
|
|
||||||
|
# Cache support (OBLIGATOIRE - architecture refactorisée)
|
||||||
|
pmocovers = { path = "../pmocovers" }
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache" }
|
||||||
|
|
||||||
|
# pmoserver extension support
|
||||||
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
|
utoipa = { version = "5.4.0", optional = true }
|
||||||
|
axum = { version = "0.8.4", optional = true }
|
||||||
|
|
||||||
|
# pmoaudio node support
|
||||||
|
pmoaudio = { path = "../pmoaudio", optional = true }
|
||||||
|
pmoflac = { path = "../pmoflac", optional = true }
|
||||||
|
pmometadata = { path = "../pmometadata", optional = true }
|
||||||
|
futures-util = { version = "0.3", optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["metadata-only", "pmoconfig", "playlist"]
|
||||||
|
# Mode métadonnées seules (pas de décodage FLAC)
|
||||||
|
metadata-only = []
|
||||||
|
# Active l'API REST pmoserver
|
||||||
|
pmoserver = ["dep:pmoserver", "dep:utoipa", "dep:axum", "server"]
|
||||||
|
# Feature pour activer le support serveur (cache registry)
|
||||||
|
server = ["pmosource/server", "pmoconfig"]
|
||||||
|
# Feature pour activer le support de pmoconfig
|
||||||
|
pmoconfig = ["dep:pmoconfig"]
|
||||||
|
# Feature pour activer le support des playlists d'historique
|
||||||
|
playlist = []
|
||||||
|
# Feature cache (deprecated - toujours actif maintenant)
|
||||||
|
cache = []
|
||||||
|
# Active le support pmoaudio node (RadioParadiseStreamSource)
|
||||||
|
pmoaudio = ["dep:pmoaudio", "dep:pmoflac", "dep:pmometadata", "dep:futures-util", "dep:pmoaudio-ext"]
|
||||||
|
# Active le support complet avec playlist (pour les exemples avancés)
|
||||||
|
full = ["pmoaudio", "dep:pmoaudio-ext", "pmoconfig", "pmoserver", "playlist"]
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
# Tests
|
||||||
|
tokio-test = "0.4"
|
||||||
|
wiremock = "0.6"
|
||||||
|
# Pour les exemples avec logging
|
||||||
|
tracing-subscriber = "0.3"
|
||||||
|
# Pour l'exemple with_cache
|
||||||
|
pmocovers = { path = "../pmocovers" }
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache" }
|
||||||
|
|
||||||
|
[[example]]
|
||||||
|
name = "now_playing"
|
||||||
|
path = "examples/now_playing.rs"
|
||||||
|
|
||||||
|
[[example]]
|
||||||
|
name = "stream_block"
|
||||||
|
path = "examples/stream_block.rs"
|
||||||
|
required-features = ["full"]
|
||||||
|
|
||||||
|
[[example]]
|
||||||
|
name = "single_channel_server"
|
||||||
|
path = "examples/single_channel_server.rs"
|
||||||
|
required-features = ["full"]
|
||||||
@@ -21,20 +21,20 @@ pmoconfig = { path = "../pmoconfig", optional = true }
|
|||||||
rusqlite = { version = "0.37", features = ["bundled"] }
|
rusqlite = { version = "0.37", features = ["bundled"] }
|
||||||
|
|
||||||
# Utilitaires
|
# Utilitaires
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
thiserror = "1.0"
|
thiserror = { workspace = true }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
|
|
||||||
# Async
|
# Async
|
||||||
tokio = { version = "1.0", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
|
|
||||||
# Singleton
|
# Singleton
|
||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
chrono = { version = "0.4", features = ["serde"] }
|
chrono = { workspace = true }
|
||||||
axum = { version = "0.8", optional = true, features = ["macros", "json"] }
|
axum = { version = "0.8", optional = true, features = ["macros", "json"] }
|
||||||
tokio-stream = { version = "0.1", optional = true, features = ["sync"] }
|
tokio-stream = { version = "0.1", optional = true, features = ["sync"] }
|
||||||
utoipa = { version = "5.4", optional = true, features = ["axum_extras", "chrono"] }
|
utoipa = { version = "5.4", optional = true, features = ["axum_extras", "chrono"] }
|
||||||
|
|||||||
46
pmoplaylist/Cargo.toml.backup
Normal file
46
pmoplaylist/Cargo.toml.backup
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoplaylist"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
# Caches PMO
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache" }
|
||||||
|
pmocache = { path = "../pmocache" }
|
||||||
|
|
||||||
|
# Métadonnées
|
||||||
|
pmometadata = { path = "../pmometadata" }
|
||||||
|
|
||||||
|
# DIDL-Lite pour UPnP
|
||||||
|
pmodidl = { path = "../pmodidl" }
|
||||||
|
|
||||||
|
# Configuration (optionnelle)
|
||||||
|
pmoconfig = { path = "../pmoconfig", optional = true }
|
||||||
|
|
||||||
|
# Base de données
|
||||||
|
rusqlite = { version = "0.37", features = ["bundled"] }
|
||||||
|
|
||||||
|
# Utilitaires
|
||||||
|
anyhow = "1.0"
|
||||||
|
thiserror = "2.0"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
|
||||||
|
# Async
|
||||||
|
tokio = { version = "1.0", features = ["full"] }
|
||||||
|
|
||||||
|
# Singleton
|
||||||
|
once_cell = "1.20"
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
tracing = "0.1"
|
||||||
|
chrono = { version = "0.4", features = ["serde"] }
|
||||||
|
axum = { version = "0.8", optional = true, features = ["macros", "json"] }
|
||||||
|
tokio-stream = { version = "0.1", optional = true, features = ["sync"] }
|
||||||
|
utoipa = { version = "5.4", optional = true, features = ["axum_extras", "chrono"] }
|
||||||
|
async-stream = { version = "0.3", optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["pmoconfig"]
|
||||||
|
pmoconfig = ["dep:pmoconfig"]
|
||||||
|
pmoserver = ["dep:axum", "dep:tokio-stream", "dep:utoipa", "dep:async-stream"]
|
||||||
@@ -13,16 +13,16 @@ async-trait = { version = "0.1", optional = true }
|
|||||||
reqwest = { version = "0.12", features = ["json", "cookies"] }
|
reqwest = { version = "0.12", features = ["json", "cookies"] }
|
||||||
|
|
||||||
# Gestion asynchrone
|
# Gestion asynchrone
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { workspace = true }
|
||||||
|
|
||||||
# Sérialisation/Désérialisation JSON
|
# Sérialisation/Désérialisation JSON
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
serde_yaml = "0.9"
|
serde_yaml = { workspace = true }
|
||||||
|
|
||||||
# Gestion des erreurs
|
# Gestion des erreurs
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
thiserror = "1.0"
|
thiserror = { workspace = true }
|
||||||
|
|
||||||
# Hashing pour les clés de cache et signatures
|
# Hashing pour les clés de cache et signatures
|
||||||
sha1 = "0.10"
|
sha1 = "0.10"
|
||||||
@@ -33,10 +33,10 @@ md-5 = "0.10"
|
|||||||
moka = { version = "0.12", features = ["future"] }
|
moka = { version = "0.12", features = ["future"] }
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
|
|
||||||
# Gestion du temps
|
# Gestion du temps
|
||||||
chrono = { version = "0.4", features = ["serde"] }
|
chrono = { workspace = true }
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
pmoconfig = { path = "../pmoconfig" }
|
pmoconfig = { path = "../pmoconfig" }
|
||||||
|
|||||||
91
pmoqobuz/Cargo.toml.backup
Normal file
91
pmoqobuz/Cargo.toml.backup
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoqobuz"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
regex = "1.12"
|
||||||
|
base64 = "0.22"
|
||||||
|
indexmap = "2.0"
|
||||||
|
async-trait = { version = "0.1", optional = true }
|
||||||
|
|
||||||
|
# HTTP client pour les requêtes à l'API Qobuz
|
||||||
|
reqwest = { version = "0.12", features = ["json", "cookies"] }
|
||||||
|
|
||||||
|
# Gestion asynchrone
|
||||||
|
tokio = { version = "1", features = ["full"] }
|
||||||
|
|
||||||
|
# Sérialisation/Désérialisation JSON
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
serde_yaml = "0.9"
|
||||||
|
|
||||||
|
# Gestion des erreurs
|
||||||
|
anyhow = "1.0"
|
||||||
|
thiserror = "2.0"
|
||||||
|
|
||||||
|
# Hashing pour les clés de cache et signatures
|
||||||
|
sha1 = "0.10"
|
||||||
|
hex = "0.4"
|
||||||
|
md-5 = "0.10"
|
||||||
|
|
||||||
|
# Cache en mémoire avec TTL
|
||||||
|
moka = { version = "0.12", features = ["future"] }
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
tracing = "0.1"
|
||||||
|
|
||||||
|
# Gestion du temps
|
||||||
|
chrono = { version = "0.4", features = ["serde"] }
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
pmoconfig = { path = "../pmoconfig" }
|
||||||
|
|
||||||
|
# Intégration avec pmocovers pour le cache d'images (OBLIGATOIRE)
|
||||||
|
pmocovers = { path = "../pmocovers" }
|
||||||
|
|
||||||
|
# Intégration avec pmoaudiocache pour le cache audio (OBLIGATOIRE)
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache" }
|
||||||
|
|
||||||
|
# Intégration avec pmodidl pour l'export DIDL
|
||||||
|
pmodidl = { path = "../pmodidl" }
|
||||||
|
|
||||||
|
# Intégration avec pmoserver pour l'API HTTP
|
||||||
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
|
axum = { version = "0.8", optional = true }
|
||||||
|
rusqlite = { version = "0.37", features = ["bundled"], optional = true }
|
||||||
|
|
||||||
|
# Documentation OpenAPI
|
||||||
|
utoipa = { version = "5.3", optional = true }
|
||||||
|
|
||||||
|
# Common music source traits
|
||||||
|
pmosource = { path = "../pmosource" }
|
||||||
|
|
||||||
|
# Playlist management
|
||||||
|
pmoplaylist = { path = "../pmoplaylist" }
|
||||||
|
pmocache = { path = "../pmocache" }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["async-trait-support"]
|
||||||
|
# Feature pour activer les extensions pmoserver
|
||||||
|
pmoserver = ["dep:pmoserver", "dep:axum", "dep:utoipa"]
|
||||||
|
# Feature pour activer le support serveur (cache registry)
|
||||||
|
server = ["pmosource/server"]
|
||||||
|
# Feature cache (deprecated - toujours actif maintenant)
|
||||||
|
cache = []
|
||||||
|
async-trait-support = ["dep:async-trait"]
|
||||||
|
disk-cache = ["dep:rusqlite", "dep:async-trait"]
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
# Tests
|
||||||
|
tokio-test = "0.4"
|
||||||
|
mockito = "1.0"
|
||||||
|
tempfile = "3.0"
|
||||||
|
# Pour les exemples
|
||||||
|
tracing-subscriber = "0.3"
|
||||||
|
# Pour l'exemple spoofer
|
||||||
|
|
||||||
|
# Specify that the with_cache example requires the cache feature
|
||||||
|
[[example]]
|
||||||
|
name = "with_cache"
|
||||||
|
required-features = ["cache"]
|
||||||
@@ -6,16 +6,16 @@ edition = "2024"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
pmoconfig = { path = "../pmoconfig", features = ["api"] }
|
pmoconfig = { path = "../pmoconfig", features = ["api"] }
|
||||||
|
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
axum = "0.8.4"
|
axum = "0.8.4"
|
||||||
tokio = { version = "1.35", features = ["rt-multi-thread", "macros", "sync", "time", "signal"] }
|
tokio = { workspace = true, features = ["rt-multi-thread", "macros", "sync", "time", "signal"] }
|
||||||
tokio-stream = "0.1"
|
tokio-stream = "0.1"
|
||||||
tokio-util = "0.7"
|
tokio-util = "0.7"
|
||||||
futures-util = "0.3"
|
futures-util = "0.3"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
|
tracing-subscriber = { workspace = true }
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
async-stream = "0.3.6"
|
async-stream = "0.3.6"
|
||||||
axum-server = "0.7.2"
|
axum-server = "0.7.2"
|
||||||
|
|||||||
26
pmoserver/Cargo.toml.backup
Normal file
26
pmoserver/Cargo.toml.backup
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoserver"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
pmoconfig = { path = "../pmoconfig", features = ["api"] }
|
||||||
|
|
||||||
|
anyhow = "1.0"
|
||||||
|
axum = "0.8.4"
|
||||||
|
tokio = { version = "1.35", features = ["rt-multi-thread", "macros", "sync", "time", "signal"] }
|
||||||
|
tokio-stream = "0.1"
|
||||||
|
tokio-util = "0.7"
|
||||||
|
futures-util = "0.3"
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
tracing = "0.1"
|
||||||
|
tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
|
||||||
|
futures = "0.3"
|
||||||
|
async-stream = "0.3.6"
|
||||||
|
axum-server = "0.7.2"
|
||||||
|
axum-embed = "0.1.0"
|
||||||
|
rust-embed = "8.7.2"
|
||||||
|
utoipa = { version = "5.4.0", features = ["axum_extras"] }
|
||||||
|
utoipa-swagger-ui = { version = "9.0.2", features = ["axum", "vendored"] }
|
||||||
|
once_cell = "1.19"
|
||||||
@@ -11,14 +11,14 @@ categories = ["multimedia"]
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# Gestion des erreurs
|
# Gestion des erreurs
|
||||||
thiserror = "1.0"
|
thiserror = { workspace = true }
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
|
|
||||||
# Async traits
|
# Async traits
|
||||||
async-trait = "0.1"
|
async-trait = { workspace = true }
|
||||||
|
|
||||||
# Async runtime
|
# Async runtime
|
||||||
tokio = { version = "1.0", features = ["sync", "time"] }
|
tokio = { workspace = true, features = ["sync", "time"] }
|
||||||
|
|
||||||
# DIDL-Lite support
|
# DIDL-Lite support
|
||||||
pmodidl = { path = "../pmodidl" }
|
pmodidl = { path = "../pmodidl" }
|
||||||
@@ -32,8 +32,8 @@ pmocovers = { path = "../pmocovers", optional = true }
|
|||||||
pmocache = { path = "../pmocache", optional = true }
|
pmocache = { path = "../pmocache", optional = true }
|
||||||
|
|
||||||
# Serialization (required for cache metadata)
|
# Serialization (required for cache metadata)
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
|
|
||||||
# Server extension (optional)
|
# Server extension (optional)
|
||||||
pmoserver = { path = "../pmoserver", optional = true }
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
|
|||||||
54
pmosource/Cargo.toml.backup
Normal file
54
pmosource/Cargo.toml.backup
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmosource"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
authors = ["PMOMusic Contributors"]
|
||||||
|
description = "Common traits and types for PMOMusic sources"
|
||||||
|
license = "MIT OR Apache-2.0"
|
||||||
|
repository = "https://github.com/yourusername/pmomusic"
|
||||||
|
keywords = ["music", "source", "streaming"]
|
||||||
|
categories = ["multimedia"]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
# Gestion des erreurs
|
||||||
|
thiserror = "2.0"
|
||||||
|
anyhow = "1.0"
|
||||||
|
|
||||||
|
# Async traits
|
||||||
|
async-trait = "0.1"
|
||||||
|
|
||||||
|
# Async runtime
|
||||||
|
tokio = { version = "1.0", features = ["sync", "time"] }
|
||||||
|
|
||||||
|
# DIDL-Lite support
|
||||||
|
pmodidl = { path = "../pmodidl" }
|
||||||
|
|
||||||
|
# Playlist/FIFO support
|
||||||
|
pmoplaylist = { path = "../pmoplaylist" }
|
||||||
|
|
||||||
|
# Optional cache integrations
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache", optional = true }
|
||||||
|
pmocovers = { path = "../pmocovers", optional = true }
|
||||||
|
pmocache = { path = "../pmocache", optional = true }
|
||||||
|
|
||||||
|
# Serialization (required for cache metadata)
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
|
||||||
|
# Server extension (optional)
|
||||||
|
pmoserver = { path = "../pmoserver", optional = true }
|
||||||
|
pmoconfig = { path = "../pmoconfig", optional = true }
|
||||||
|
pmoupnp = { path = "../pmoupnp", optional = true }
|
||||||
|
|
||||||
|
# Web framework for API (optional)
|
||||||
|
axum = { version = "0.8", optional = true }
|
||||||
|
utoipa = { version = "5.3", optional = true }
|
||||||
|
tracing = { version = "0.1", optional = true }
|
||||||
|
lazy_static = { version = "1.4", optional = true }
|
||||||
|
tokio-stream = { version = "0.1", optional = true, features = ["time"] }
|
||||||
|
futures = { version = "0.3", optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["cache"]
|
||||||
|
cache = ["pmoaudiocache", "pmocovers", "pmocache"]
|
||||||
|
server = ["pmoserver", "pmoconfig", "pmoupnp", "axum", "utoipa", "tracing", "lazy_static", "tokio-stream", "futures"]
|
||||||
@@ -13,24 +13,24 @@ pmoaudiocache = { path = "../pmoaudiocache", features = ["pmoserver"] }
|
|||||||
pmoplaylist = { path = "../pmoplaylist", optional = true, features = ["pmoserver"] }
|
pmoplaylist = { path = "../pmoplaylist", optional = true, features = ["pmoserver"] }
|
||||||
pmocache = { path = "../pmocache" }
|
pmocache = { path = "../pmocache" }
|
||||||
|
|
||||||
async-trait = "0.1"
|
async-trait = { workspace = true }
|
||||||
async-recursion = "1.1"
|
async-recursion = "1.1"
|
||||||
url = "2.5.7"
|
url = "2.5.7"
|
||||||
uuid = "1.18.1"
|
uuid = "1.18.1"
|
||||||
hex = "0.4.3"
|
hex = "0.4.3"
|
||||||
base64 = "0.22.1"
|
base64 = "0.22.1"
|
||||||
thiserror = "2.0.16"
|
thiserror = { workspace = true }
|
||||||
anyhow = "1.0"
|
anyhow = { workspace = true }
|
||||||
xmltree = "0.11.0"
|
xmltree = "0.11.0"
|
||||||
axum = "0.8.4"
|
axum = "0.8.4"
|
||||||
tokio = { version = "1.35", features = ["rt-multi-thread", "macros", "sync"] }
|
tokio = { workspace = true, features = ["rt-multi-thread", "macros", "sync"] }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { workspace = true }
|
||||||
serde_json = "1.0"
|
serde_json = { workspace = true }
|
||||||
quick-xml = { version = "0.37.5", features = ["serialize"] }
|
quick-xml = { workspace = true }
|
||||||
chrono = { version = "0.4.42", features = ["serde"] }
|
chrono = { version = "0.4.42", features = ["serde"] }
|
||||||
once_cell = "1.20"
|
once_cell = "1.20"
|
||||||
parking_lot = "0.12"
|
parking_lot = "0.12"
|
||||||
tracing = "0.1"
|
tracing = { workspace = true }
|
||||||
tracing-subscriber = "0.3"
|
tracing-subscriber = "0.3"
|
||||||
bevy_reflect = "0.17.1"
|
bevy_reflect = "0.17.1"
|
||||||
bevy_reflect_derive = "0.17.1"
|
bevy_reflect_derive = "0.17.1"
|
||||||
@@ -38,7 +38,7 @@ reqwest = "0.12.23"
|
|||||||
utoipa = { version = "5.3", features = ["axum_extras"] }
|
utoipa = { version = "5.3", features = ["axum_extras"] }
|
||||||
socket2 = "0.5"
|
socket2 = "0.5"
|
||||||
get_if_addrs = "0.5"
|
get_if_addrs = "0.5"
|
||||||
serde_yaml = "0.9"
|
serde_yaml = { workspace = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["server"]
|
default = ["server"]
|
||||||
|
|||||||
50
pmoupnp/Cargo.toml.backup
Normal file
50
pmoupnp/Cargo.toml.backup
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoupnp"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
pmoconfig = { path = "../pmoconfig" }
|
||||||
|
pmodidl = { path = "../pmodidl"}
|
||||||
|
pmoutils = { path = "../pmoutils" }
|
||||||
|
pmoserver = { path = "../pmoserver" }
|
||||||
|
pmocovers = { path = "../pmocovers", features = ["pmoserver"] }
|
||||||
|
pmoaudiocache = { path = "../pmoaudiocache", features = ["pmoserver"] }
|
||||||
|
pmoplaylist = { path = "../pmoplaylist", optional = true, features = ["pmoserver"] }
|
||||||
|
pmocache = { path = "../pmocache" }
|
||||||
|
|
||||||
|
async-trait = "0.1"
|
||||||
|
async-recursion = "1.1"
|
||||||
|
url = "2.5.7"
|
||||||
|
uuid = "1.18.1"
|
||||||
|
hex = "0.4.3"
|
||||||
|
base64 = "0.22.1"
|
||||||
|
thiserror = "2.0.16"
|
||||||
|
anyhow = "1.0"
|
||||||
|
xmltree = "0.11.0"
|
||||||
|
axum = "0.8.4"
|
||||||
|
tokio = { version = "1.35", features = ["rt-multi-thread", "macros", "sync"] }
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
quick-xml = { version = "0.38.3", features = ["serialize"] }
|
||||||
|
chrono = { version = "0.4.42", features = ["serde"] }
|
||||||
|
once_cell = "1.20"
|
||||||
|
parking_lot = "0.12"
|
||||||
|
tracing = "0.1"
|
||||||
|
tracing-subscriber = "0.3"
|
||||||
|
bevy_reflect = "0.17.1"
|
||||||
|
bevy_reflect_derive = "0.17.1"
|
||||||
|
reqwest = "0.12.23"
|
||||||
|
utoipa = { version = "5.3", features = ["axum_extras"] }
|
||||||
|
socket2 = "0.5"
|
||||||
|
get_if_addrs = "0.5"
|
||||||
|
serde_yaml = "0.9"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["server"]
|
||||||
|
server = ["pmoplaylist"]
|
||||||
|
paradise = []
|
||||||
|
qobuz = []
|
||||||
|
|
||||||
|
[target.'cfg(unix)'.dependencies]
|
||||||
|
libc = "0.2"
|
||||||
@@ -9,5 +9,5 @@ os_info = "3.8"
|
|||||||
netstat2 = "0.11"
|
netstat2 = "0.11"
|
||||||
sysinfo = "0.30"
|
sysinfo = "0.30"
|
||||||
users = "0.11"
|
users = "0.11"
|
||||||
quick-xml = "0.38.3"
|
quick-xml = { workspace = true }
|
||||||
xmltree = "0.10"
|
xmltree = "0.10"
|
||||||
|
|||||||
13
pmoutils/Cargo.toml.backup
Normal file
13
pmoutils/Cargo.toml.backup
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[package]
|
||||||
|
name = "pmoutils"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
get_if_addrs = "0.5.3"
|
||||||
|
os_info = "3.8"
|
||||||
|
netstat2 = "0.11"
|
||||||
|
sysinfo = "0.30"
|
||||||
|
users = "0.11"
|
||||||
|
quick-xml = "0.38.3"
|
||||||
|
xmltree = "0.10"
|
||||||
Reference in New Issue
Block a user