Crate ferrispot

Source
Expand description

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.

§Usage

See the module-level docs for client for instructions how to use the various Spotify clients.

§Feature flags

  • async (default): enable the asynchronous API.
  • sync: enable the synchronous API.
    • In case neither APIs are enabled (default-features = false), the crate only includes the object model structure with minimal dependencies on serde and thiserror.
  • 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 and async_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.

Modules§

clientasync or sync
Clients for every OAuth2 authorization flow Spotify supports.
error
Various error types exposed by the crate.
model
An abstraction over the (now undocumented) Spotify object model.
prelude
Re-exports of all common traits in the crate.
scope
Contains the Scope-enum that represents an OAuth authorization scope and various utilities surrounding it.