use serde::{Deserialize, Serialize};
use strum::EnumIs;
#[derive(Debug, Deserialize, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct LyricsData {
pub id: u64,
pub name: String,
pub track_name: String,
pub artist_name: String,
pub album_name: Option<String>,
pub duration: Option<f64>,
pub instrumental: bool,
pub plain_lyrics: Option<String>,
pub synced_lyrics: Option<String>,
}
#[derive(Debug, Deserialize, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct LyricsPublishData {
pub track_name: String,
pub artist_name: String,
pub album_name: String,
pub duration: f64,
pub plain_lyrics: String,
pub synced_lyrics: String,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ErrorResponse {
pub status_code: u32,
pub name: String,
pub message: String,
}
#[derive(Debug, Deserialize, EnumIs)]
#[serde(untagged)]
pub enum GetLyricsResponse {
Success(LyricsData),
Error(ErrorResponse),
}
#[derive(Debug, Deserialize, EnumIs)]
#[serde(untagged)]
pub enum PublishResponse {
Created, Error(ErrorResponse), }
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PublishChallenge {
pub prefix: String,
pub target: String,
}