From d1a44a613f35da99af2216ff2cb8685027aa3620 Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Wed, 27 Apr 2022 22:38:15 +0200 Subject: [PATCH] Fix: do not crash DBus on invalid Spotify URIs Fixes #795 --- src/spotify_api.rs | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/spotify_api.rs b/src/spotify_api.rs index f6da085..83e2e78 100644 --- a/src/spotify_api.rs +++ b/src/spotify_api.rs @@ -282,40 +282,33 @@ impl WebApi { } pub fn album(&self, album_id: &str) -> Option { - self.api_with_retry(|api| api.album(&AlbumId::from_id(album_id).unwrap())) + let aid = AlbumId::from_id(album_id).ok()?; + self.api_with_retry(|api| api.album(&aid)) } pub fn artist(&self, artist_id: &str) -> Option { - self.api_with_retry(|api| api.artist(&ArtistId::from_id(artist_id).unwrap())) + let aid = ArtistId::from_id(artist_id).ok()?; + self.api_with_retry(|api| api.artist(&aid)) } pub fn playlist(&self, playlist_id: &str) -> Option { - self.api_with_retry(|api| { - api.playlist( - &PlaylistId::from_id(playlist_id).unwrap(), - None, - Some(&Market::FromToken), - ) - }) + let pid = PlaylistId::from_id(playlist_id).ok()?; + self.api_with_retry(|api| api.playlist(&pid, None, Some(&Market::FromToken))) } pub fn track(&self, track_id: &str) -> Option { - self.api_with_retry(|api| api.track(&TrackId::from_id(track_id).unwrap())) + let tid = TrackId::from_id(track_id).ok()?; + self.api_with_retry(|api| api.track(&tid)) } pub fn get_show(&self, show_id: &str) -> Option { - self.api_with_retry(|api| { - api.get_a_show(&ShowId::from_id(show_id).unwrap(), Some(&Market::FromToken)) - }) + let sid = ShowId::from_id(show_id).ok()?; + self.api_with_retry(|api| api.get_a_show(&sid, Some(&Market::FromToken))) } pub fn episode(&self, episode_id: &str) -> Option { - self.api_with_retry(|api| { - api.get_an_episode( - &EpisodeId::from_id(episode_id).unwrap(), - Some(&Market::FromToken), - ) - }) + let eid = EpisodeId::from_id(episode_id).ok()?; + self.api_with_retry(|api| api.get_an_episode(&eid, Some(&Market::FromToken))) } pub fn recommendations(