lastfm_rust/models/
mod.rs1mod album_get_info_response;
2mod album_get_tags;
3mod album_get_top_tags;
4mod auth_get_token;
5
6use std::fmt;
7
8pub use album_get_info_response::AlbumGetInfoResponse;
9pub use album_get_tags::AlbumGetTagsResponse;
10pub use auth_get_token::AuthGetTokenResponse;
11pub use album_get_top_tags::AlbumGetTopTagsResponse;
12use serde_json::{to_string_pretty, Value};
13
14use crate::ApiError;
15use serde::{Deserialize, Serialize};
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub enum APIResponse<T> {
19 Success(T),
20 Error(ApiError),
21}
22
23impl fmt::Display for APIResponse<Value> {
24 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
25 match self {
26 APIResponse::Success(value) => {
27 let pretty_value =
28 to_string_pretty(value).unwrap_or_else(|_| "Invalid JSON".to_string());
29 write!(f, "{}", pretty_value)
30 }
31 APIResponse::Error(api_error) => {
32 write!(f, "Error: {} - {}", api_error.error, api_error.message)
33 }
34 }
35 }
36}