Migration vers une forme unifiée des cargos

This commit is contained in:
2025-12-30 16:12:30 +01:00
parent 64450185c5
commit a4301140d8
45 changed files with 989 additions and 132 deletions

View File

@@ -14,16 +14,16 @@ categories = ["multimedia", "api-bindings"]
reqwest = { version = "0.12", features = ["json", "stream"] }
# Gestion asynchrone
tokio = { version = "1", features = ["full"] }
tokio = { workspace = true }
# Sérialisation/Désérialisation JSON
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9.33"
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
# Helpers
chrono = { version = "0.4", features = ["serde"] }
async-trait = "0.1"
chrono = { workspace = true }
async-trait = { workspace = true }
sha2 = "0.10"
hex = "0.4"
tokio-util = { version = "0.7", features = ["io"] }
@@ -32,8 +32,8 @@ rusqlite = { version = "0.37", features = ["bundled"] }
once_cell = "1.20"
# Gestion des erreurs
thiserror = "2.0.17"
anyhow = "1.0"
thiserror = { workspace = true }
anyhow = { workspace = true }
# Streaming de bytes
bytes = "1.5"
@@ -41,7 +41,7 @@ futures = "0.3"
flacenc = "0.5.0"
# Logging
tracing = "0.1"
tracing = { workspace = true }
# URL manipulation
url = "2.5"

View 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"]