1use serde::{Deserialize, Serialize};
2use strum::EnumIs;
3
4#[derive(Debug, Deserialize, Serialize, Default)]
6#[serde(rename_all = "camelCase")]
7pub struct LyricsData {
8 pub id: u64,
10 pub name: String,
12 pub track_name: String,
14 pub artist_name: String,
16 pub album_name: Option<String>,
18 pub duration: Option<f64>,
20 pub instrumental: bool,
22 pub plain_lyrics: Option<String>,
24 pub synced_lyrics: Option<String>,
26}
27
28#[derive(Debug, Deserialize, Serialize, Default)]
30#[serde(rename_all = "camelCase")]
31pub struct LyricsPublishData {
32 pub track_name: String,
33 pub artist_name: String,
34 pub album_name: String,
35 pub duration: f64,
36 pub plain_lyrics: String,
37 pub synced_lyrics: String,
38}
39
40#[derive(Debug, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct ErrorResponse {
43 pub status_code: u32,
44 pub name: String,
45 pub message: String,
46}
47
48#[derive(Debug, Deserialize, EnumIs)]
50#[serde(untagged)]
51pub enum GetLyricsResponse {
52 Success(LyricsData),
53 Error(ErrorResponse),
54}
55
56#[derive(Debug, Deserialize, EnumIs)]
58#[serde(untagged)]
59pub enum PublishResponse {
60 Created, Error(ErrorResponse), }
63
64#[derive(Debug, Deserialize)]
65#[serde(rename_all = "camelCase")]
66pub struct PublishChallenge {
67 pub prefix: String,
68 pub target: String,
69}