12 releases
0.4.3 | Jun 26, 2024 |
---|---|
0.4.2 | Feb 22, 2024 |
0.4.1 | May 15, 2023 |
0.4.0 | Dec 13, 2022 |
0.1.0 | Jul 19, 2022 |
#117 in Audio
57 downloads per month
345KB
6.5K
SLoC
Ferrispot
A wrapper for the Spotify Web API that (hopefully) doesn't suck (too much) (I think).
A lot of the functionality is largely opinionated for my own use but I'm trying to make the library ergonomic and efficient to use. So far only the endpoints I care about are implemented, but if you need some endpoints implemented, feel free to open an issue.
Features
- Type-safe clients and model.
- Asynchronous and synchronous (blocking) clients.
- Every OAuth authorization flow Spotify supports is implemented.
- Supports multiple simultaneous user clients.
- Automatically refreshes access tokens when they expire, where applicable.
- Reacts to API rate limits using either Tokio's or async-std's sleep functions at your discretion when using an asynchronous client. Synchronous clients block the running thread.
Crate feature flags
async
(default): enable the asynchronous API.sync
: enable the synchronous API.- In case neither API is enabled (
default-features = false
), the crate only includes the object model structure with minimal dependencies onserde
andthiserror
.
- In case neither API is enabled (
tokio_sleep
(default): react to API rate limits using Tokio's sleep function.async_std_sleep
: react to API rate limits using async-std's sleep function.- In case both
tokio_sleep
andasync_std_sleep
are enabled, Tokio's sleep function will be used. - In case neither are enabled, the library will return a rate limit error when it occurs.
- These features are meaningless unless the
async
feature is also enabled.
- In case both
native-tls
(default): use native system TLS library for secure connections.rustls-tls
: userustls
for secure connections.
Changelog
See CHANGELOG.md.
Attribution
This crate draws a lot of inspiration from:
- aspotify by Sabrina Jewson, licensed under the MIT license
- rspotify by Ramsay Leung and Mario Ortiz Manero, licensed under the MIT license
License
Dual-licensed under MIT or Apache 2.0.
Dependencies
~0.4–13MB
~177K SLoC