Skip to content

Commit c797acc

Browse files
authored
make SpotifyUri::to_uri() infallible (#1638)
Tiny follow-up to #1635
1 parent f3a3463 commit c797acc

8 files changed

Lines changed: 17 additions & 19 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Changed
1111

12-
- [core] Made `SpotifyId::to_base62`, `SpotifyId::to_base16`, `FileId::to_base16`, `SpotifyUri::to_id` infallible (breaking)
12+
- [core] Made `SpotifyId::to_base62`, `SpotifyId::to_base16`, `FileId::to_base16`, `SpotifyUri::to_id`, `SpotifyUri::to_uri` infallible (breaking)
1313

1414
## [0.8.0] - 2025-11-10
1515

connect/src/spirc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,7 @@ impl SpircTask {
806806
}
807807
PlayerEvent::Unavailable { track_id, .. } => {
808808
self.handle_unavailable(&track_id)?;
809-
if self.connect_state.current_track(|t| &t.uri) == &track_id.to_uri()? {
809+
if self.connect_state.current_track(|t| &t.uri) == &track_id.to_uri() {
810810
self.handle_next(None)?
811811
}
812812
}

connect/src/state/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ impl ConnectState {
456456
_ => Err(StateError::InvalidTrackUri(None))?,
457457
};
458458

459-
let uri = id.to_uri()?.replace("unknown", "track");
459+
let uri = id.to_uri().replace("unknown", "track");
460460

461461
let provider = if self.unavailable_uri.contains(&uri) {
462462
Provider::Unavailable

connect/src/state/tracks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ impl<'ct> ConnectState {
382382
}
383383

384384
pub fn mark_unavailable(&mut self, id: &SpotifyUri) -> Result<(), Error> {
385-
let uri = id.to_uri()?;
385+
let uri = id.to_uri();
386386

387387
debug!("marking {uri} as unavailable");
388388

core/src/spclient.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ impl SpClient {
595595
pub async fn get_metadata(&self, kind: ExtensionKind, id: &SpotifyUri) -> SpClientResult {
596596
let req = BatchedEntityRequest {
597597
entity_request: vec![EntityRequest {
598-
entity_uri: id.to_uri()?,
598+
entity_uri: id.to_uri(),
599599
query: vec![ExtensionQuery {
600600
extension_kind: EnumOrUnknown::new(kind),
601601
..Default::default()
@@ -716,7 +716,7 @@ impl SpClient {
716716
pub async fn get_radio_for_track(&self, track_uri: &SpotifyUri) -> SpClientResult {
717717
let endpoint = format!(
718718
"/inspiredby-mix/v2/seed_to_playlist/{}?response-format=json",
719-
track_uri.to_uri()?
719+
track_uri.to_uri()
720720
);
721721

722722
self.request_as_json(&Method::GET, &endpoint, None, None)

core/src/spotify_uri.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,18 +203,18 @@ impl SpotifyUri {
203203
/// `spotify:user:{user}:{type}:{id}`.
204204
///
205205
/// [Spotify URI]: https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids
206-
pub fn to_uri(&self) -> Result<String, Error> {
206+
pub fn to_uri(&self) -> String {
207207
let item_type = self.item_type();
208-
let name = self.to_id();
209208

210209
if let SpotifyUri::Playlist {
211210
id,
212211
user: Some(user),
213212
} = self
214213
{
215-
Ok(format!("spotify:user:{user}:{item_type}:{id}"))
214+
format!("spotify:user:{user}:{item_type}:{id}")
216215
} else {
217-
Ok(format!("spotify:{item_type}:{name}"))
216+
let name = self.to_id();
217+
format!("spotify:{item_type}:{name}")
218218
}
219219
}
220220

@@ -231,15 +231,13 @@ impl SpotifyUri {
231231

232232
impl fmt::Debug for SpotifyUri {
233233
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
234-
f.debug_tuple("SpotifyUri")
235-
.field(&self.to_uri().unwrap_or_else(|_| "invalid uri".into()))
236-
.finish()
234+
f.debug_tuple("SpotifyUri").field(&self.to_uri()).finish()
237235
}
238236
}
239237

240238
impl fmt::Display for SpotifyUri {
241239
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
242-
f.write_str(&self.to_uri().unwrap_or_else(|_| "invalid uri".into()))
240+
f.write_str(&self.to_uri())
243241
}
244242
}
245243

@@ -597,7 +595,7 @@ mod tests {
597595
#[test]
598596
fn to_uri() {
599597
for c in &CONV_VALID {
600-
assert_eq!(c.parsed.to_uri().unwrap(), c.uri);
598+
assert_eq!(c.parsed.to_uri(), c.uri);
601599
}
602600
}
603601

@@ -608,6 +606,6 @@ mod tests {
608606
let actual =
609607
SpotifyUri::from_uri("spotify:user:spotify:playlist:37i9dQZF1DWSw8liJZcPOI").unwrap();
610608

611-
assert_eq!(actual.to_uri().unwrap(), string);
609+
assert_eq!(actual.to_uri(), string);
612610
}
613611
}

metadata/src/audio/item.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ impl AudioItem {
8787
return Err(Error::unavailable(MetadataError::ExplicitContentFiltered));
8888
}
8989

90-
let uri_string = uri.to_uri()?;
90+
let uri_string = uri.to_uri();
9191
let album = track.album.name;
9292

9393
let album_artists = track
@@ -156,7 +156,7 @@ impl AudioItem {
156156
return Err(Error::unavailable(MetadataError::ExplicitContentFiltered));
157157
}
158158

159-
let uri_string = uri.to_uri()?;
159+
let uri_string = uri.to_uri();
160160

161161
let covers = get_covers(episode.covers, image_url);
162162

playback/src/player.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1287,7 +1287,7 @@ impl PlayerTrackLoader {
12871287
is_explicit: false,
12881288
audio_item: AudioItem {
12891289
duration_ms: duration.as_millis() as u32,
1290-
uri: track_uri.to_uri().unwrap_or_default(),
1290+
uri: track_uri.to_uri(),
12911291
track_id: track_uri,
12921292
files: Default::default(),
12931293
name,

0 commit comments

Comments
 (0)