1#![doc = include_str!("../README.md")]
2
3pub mod api;
4pub mod cancel;
5pub mod client;
6pub mod discovery;
7pub mod edit_analysis;
8pub mod headers;
9pub mod iterator;
10pub mod login;
11pub mod parsing;
12pub mod retry;
13pub mod session_persistence;
14pub mod r#trait;
15pub mod types;
16pub mod vcr_form_data;
17pub mod vcr_matcher;
18pub mod vcr_test_utils;
19
20pub use api::{LastFmApiClient, LastFmApiClientImpl};
21pub use cancel::CancellationState;
22pub use client::LastFmEditClientImpl;
23pub use discovery::{
24 AlbumTracksDiscovery, ArtistTracksDiscovery, AsyncDiscoveryIterator, ExactMatchDiscovery,
25 TrackVariationsDiscovery,
26};
27pub use login::LoginManager;
28pub use r#trait::{LastFmBaseClient, LastFmEditClient};
29
30pub use iterator::AsyncPaginatedIterator;
32pub use types::{
33 Album, AlbumPage, Artist, ArtistPage, ClientConfig, ClientEvent, ClientEventReceiver,
34 ClientEventWatcher, DelayReason, EditResponse, ExactScrobbleEdit, LastFmEditSession,
35 LastFmError, OperationalDelayConfig, RateLimitConfig, RateLimitType, RequestInfo, RetryConfig,
36 RetryResult, ScrobbleEdit, SharedEventBroadcaster, SingleEditResponse, Track, TrackPage,
37};
38
39pub type ArtistsIterator = iterator::ArtistsIterator<LastFmEditClientImpl>;
41pub type ArtistTracksIterator = iterator::ArtistTracksIterator<LastFmEditClientImpl>;
42pub type ArtistTracksDirectIterator = iterator::ArtistTracksDirectIterator<LastFmEditClientImpl>;
43pub type ArtistAlbumsIterator = iterator::ArtistAlbumsIterator<LastFmEditClientImpl>;
44pub type AlbumTracksIterator = iterator::AlbumTracksIterator<LastFmEditClientImpl>;
45pub type RecentTracksIterator = iterator::RecentTracksIterator<LastFmEditClientImpl>;
46pub type ApiRecentTracksIterator = iterator::ApiRecentTracksIterator<api::LastFmApiClientImpl>;
47pub type SearchTracksIterator = iterator::SearchTracksIterator<LastFmEditClientImpl>;
48pub type SearchAlbumsIterator = iterator::SearchAlbumsIterator<LastFmEditClientImpl>;
49pub type SearchArtistsIterator = iterator::SearchArtistsIterator<LastFmEditClientImpl>;
50#[cfg(feature = "mock")]
51pub use r#trait::{MockLastFmBaseClient, MockLastFmEditClient};
52
53#[cfg(feature = "mock")]
55pub use iterator::MockAsyncPaginatedIterator;
56pub use session_persistence::{SessionManager, SessionPersistence};
57
58pub use scraper::Html;
60
61pub type Result<T> = std::result::Result<T, LastFmError>;