Skip to main content

lastfm_client/
lib.rs

1//! Async Rust client for the Last.fm API.
2//!
3//! Provides typed access to user listening data including recent tracks,
4//! loved tracks, top tracks, top artists, and top albums.
5
6/// API client modules for each Last.fm resource type
7pub mod api;
8/// HTTP client infrastructure (trait, retry, rate limiting)
9pub mod client;
10/// Configuration types and builder
11pub mod config;
12/// Error types and result alias
13pub mod error;
14/// Data types for Last.fm API responses
15pub mod types;
16
17/// Track analysis and statistics
18#[path = "analytics.rs"]
19pub mod analytics;
20
21/// File I/O for saving and loading track data
22#[path = "file_handler.rs"]
23pub mod file_handler;
24
25/// URL construction utilities
26#[path = "url_builder.rs"]
27pub mod url_builder;
28
29/// SQLite export support (requires `sqlite` feature)
30#[cfg(feature = "sqlite")]
31#[path = "sqlite.rs"]
32pub mod sqlite;
33
34// Public API re-exports
35pub use client::LastFmClient;
36pub use config::{Config, ConfigBuilder, RateLimit};
37pub use error::{LastFmError, Result};
38pub use types::{Period, TrackLimit, TrackList};
39
40// Re-export API clients
41pub use api::{
42    LovedTracksClient, LovedTracksRequestBuilder, ProgressCallback, RecentTracksClient,
43    RecentTracksRequestBuilder, TopTracksClient, TopTracksRequestBuilder,
44};
45
46// Re-export SQLite trait when feature is enabled
47#[cfg(feature = "sqlite")]
48pub use sqlite::SqliteExportable;
49
50// Re-export commonly used types
51pub use types::{
52    LovedTrack, RecentTrack, RecentTrackExtended, TopTrack, UserLovedTracks, UserRecentTracks,
53    UserRecentTracksExtended, UserTopAlbums, UserTopArtists, UserTopTracks,
54};