Skip to main content

lastfm_edit/
lib.rs

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