listenbrainz-rs/src/lib.rs

56 lines
1.7 KiB
Rust
Raw Normal View History

2021-01-09 03:36:14 +00:00
//! API bindings for ListenBrainz.
2021-01-19 23:37:39 +00:00
//!
//! This crate aims to be an idiomatic wrapper of the [ListenBrainz HTTP API] (version 1).
//! It contains functionality for direct access to the API in the [`raw`] module, as well
//! as a more convenient [`ListenBrainz`] client which is easier to use.
//!
//! [ListenBrainz HTTP API]: https://listenbrainz.readthedocs.io/en/production/dev/api/
//!
2021-01-19 23:37:39 +00:00
//! Generally, using the `raw` functionality is more cumbersome, as its types and functions
//! map one-to-one to the HTTP API's JSON input- and response data. Using the `ListenBrainz`
//! type is therefore recommended.
//!
2021-01-20 00:11:47 +00:00
//! # Example
//!
//! Submit a currently playing song to ListenBrainz.org:
2021-01-20 00:11:47 +00:00
//! ```no_run
//! # use listenbrainz::ListenBrainz;
//! #
//! let mut client = ListenBrainz::new();
//!
//! client.authenticate("LISTENBRAINZ TOKEN")
//! .expect("Could not authenticate with ListenBrainz");
//!
//! client.playing_now("The Beatles", "Here Comes the Sun", "Abbey Road")
//! .expect("Could not submit 'playing now' request");
//! ```
//!
//! Use a custom API URL, for example to submit songs to [Maloja]:
//! ```no_run
//! # use listenbrainz::ListenBrainz;
//! #
//! let mut client = ListenBrainz::new_with_url("http://maloja.example.com/apis/listenbrainz");
//!
//! client.authenticate("MALOJA API KEY")
//! .expect("Could not authenticate with Maloja");
//!
//! client.listen("Lymbyc Systym", "Split Stones", "Split Stones")
//! .expect("Could not submit listen");
//! ```
//!
2021-12-03 11:43:31 +00:00
//! [Maloja]: https://github.com/krateng/maloja
2021-01-09 03:36:14 +00:00
#![deny(
missing_docs,
missing_debug_implementations,
unsafe_code,
unstable_features
)]
2021-01-10 18:30:03 +00:00
mod error;
2021-01-19 22:41:54 +00:00
pub mod raw;
mod wrapper;
2021-01-09 03:36:14 +00:00
2021-01-14 01:42:17 +00:00
pub use crate::error::Error;
pub use crate::wrapper::ListenBrainz;