mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 14:35:41 +00:00
98d8ea6353
Moves all outbound external-service bridges out of the top crate into a
new psysonic-integration crate.
crates/psysonic-integration/
src/discord.rs Rich Presence + iTunes artwork
src/navidrome/{client,covers,...} Native REST API admin (5 modules)
src/remote.rs radio-browser, last.fm, ICY meta,
generic CORS proxy (fetch_url_bytes
/ fetch_json_url / resolve_stream_url)
src/bandsintown.rs events for an artist
src/lib.rs module declarations + macro re-exports
Top crate keeps `crate::discord` working via
`pub use psysonic_integration::discord;`.
invoke_handler! in lib.rs uses full deepest paths
(`psysonic_integration::navidrome::users::nd_list_users`, etc.) so
Tauri's `__cmd__*` magic macros resolve at the right module — same
pattern audio + syncfs already use.
Cross-crate refs migrated:
crate::subsonic_wire_user_agent → psysonic_core::user_agent::*
pub(crate) → pub (cross-crate visibility)
Behaviour preserving. Cargo check + clippy --workspace clean.
18 lines
736 B
Rust
18 lines
736 B
Rust
//! `psysonic-integration` — outbound bridges to external services that the
|
|
//! UI surfaces but the WebView can't talk to directly (CORS, custom auth, etc.).
|
|
//!
|
|
//! Domains:
|
|
//! - `discord` — Discord Rich Presence (album artwork via iTunes)
|
|
//! - `navidrome` — Navidrome's native REST API (admin: users/playlists/covers/queries)
|
|
//! - `remote` — radio-browser, last.fm, ICY-meta probe, generic CORS proxy
|
|
//! - `bandsintown` — bandsintown events for an artist
|
|
|
|
// Re-export the logging facade so submodules keep using
|
|
// `crate::app_eprintln!()` and `crate::app_deprintln!()`.
|
|
pub use psysonic_core::{app_deprintln, app_eprintln, logging};
|
|
|
|
pub mod bandsintown;
|
|
pub mod discord;
|
|
pub mod navidrome;
|
|
pub mod remote;
|