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. So far only the endpoints I care about are implemented.

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

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