mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 15:25:46 +00:00
refactor: extract psysonic-integration crate (M5/7)
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.
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
mod analysis;
|
||||
mod cli_bridge;
|
||||
mod core;
|
||||
mod navidrome;
|
||||
mod integration;
|
||||
mod perf;
|
||||
mod platform;
|
||||
mod remote;
|
||||
mod integration;
|
||||
mod analysis;
|
||||
|
||||
// Tauri commands re-exported for the lib.rs invoke_handler.
|
||||
pub(crate) use cli_bridge::{
|
||||
@@ -16,19 +14,8 @@ pub(crate) use core::{
|
||||
exit_app, export_runtime_logs, frontend_debug_log, greet, set_logging_mode,
|
||||
set_subsonic_wire_user_agent,
|
||||
};
|
||||
pub(crate) use navidrome::{
|
||||
delete_radio_cover, navidrome_login, nd_create_playlist, nd_create_user, nd_delete_playlist,
|
||||
nd_delete_user, nd_get_playlist, nd_get_song_path, nd_list_albums_by_artist_role,
|
||||
nd_list_artists_by_role, nd_list_libraries, nd_list_playlists, nd_list_songs, nd_list_users,
|
||||
nd_set_user_libraries, nd_update_playlist, nd_update_user, upload_artist_image,
|
||||
upload_playlist_cover, upload_radio_cover,
|
||||
};
|
||||
pub(crate) use perf::performance_cpu_snapshot;
|
||||
pub(crate) use platform::{set_linux_webkit_smooth_scrolling, set_window_decorations};
|
||||
pub(crate) use remote::{
|
||||
fetch_icy_metadata, fetch_json_url, fetch_url_bytes, get_top_radio_stations, lastfm_request,
|
||||
resolve_stream_url, search_radio_browser,
|
||||
};
|
||||
pub(crate) use integration::{
|
||||
check_dir_accessible, mpris_set_metadata, mpris_set_playback, register_global_shortcut,
|
||||
unregister_global_shortcut,
|
||||
@@ -38,3 +25,7 @@ pub(crate) use analysis::{
|
||||
analysis_enqueue_seed_from_url, analysis_get_loudness_for_track, analysis_get_waveform,
|
||||
analysis_get_waveform_for_track, analysis_prune_pending_to_track_ids,
|
||||
};
|
||||
|
||||
// Discord, Navidrome admin, last.fm + radio-browser + CORS proxy, bandsintown
|
||||
// now live in `psysonic_integration`. invoke_handler! in lib.rs registers
|
||||
// them with their full paths so Tauri's `__cmd__*` macros resolve correctly.
|
||||
|
||||
Reference in New Issue
Block a user