- Fixed resolve function panicking when resolving endpoint type with no
AP in the list
- Fixed fallback APs not being applied when only some of the AP types
were missing
- Switch container type from `Vec` to `VecDeque` for the `AccessPoints`
- Remove the note about fallback AP being used even if the port is not
matching the configured `ap_port`
- Change the return type of metadata convenience iter functions to
actual iterators instead of allocated collections
- The iterator item type is set to be a reference
- Also fix an overflow panic when a token cannot be parsed.
- Getting tokens always requires the keymaster client ID;
passing the actual client ID yields a HashCash challenge.
- `from_repeated_message` -> `impl_from_repeated`
- `from_repeated_enum` -> `impl_from_repeated_copy` since the enum
references were just simply deref copied
- `try_from_repeated_message` -> `impl_try_from_repeated`
- Simplified the implementation of `from_repeated_enum`
- Added `*-current()` functions to `Artist` to get the list of current
versions / releases of each album
- This is useful since the `AlbumGroups` can contain multiple versions
/ releases of the same album
- Derive `Default` trait for the vec / hashmap wrapper types in
`librespot-metadata`
- The wrapped types (`Vec` / `Hashmap`) implement Default, so the
wrapper types should as well
Some fields were wrongly parsed as `SpotifyId`s, although they do not
always encode exactly 16 bytes in practice. Also, some optional fields
caused `[]` to be parsed as `SpotifyId`, which obviously failed as well.
Better error handling.
Move the checking of the shell command to start so a proper error can be thrown if it's None.
Use write instead of write_all for finer grained error handling and the ability to attempt a restart on write errors.
Use try_wait to skip flushing and killing the process if it's already dead.
Stop the player on shutdown to *mostly* prevent write errors from spamming the logs during shutdown. Previously Ctrl+c always resulted in a write error.