use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(default)]
pub struct ArtistClaimsAttributes {
#[serde(rename = "artistId")]
pub artist_id: String,
#[serde(rename = "externalLinks", skip_serializing_if = "Option::is_none")]
pub external_links: Option<Vec<models::ExternalLink>>,
#[serde(rename = "provider")]
pub provider: Provider,
#[serde(rename = "recommendation", skip_serializing_if = "Option::is_none")]
pub recommendation: Option<Recommendation>,
#[serde(rename = "retrievedUpcs", skip_serializing_if = "Option::is_none")]
pub retrieved_upcs: Option<Vec<models::BarcodeId>>,
#[serde(rename = "status")]
pub status: Status,
}
impl ArtistClaimsAttributes {
pub fn new(artist_id: String, provider: Provider, status: Status) -> ArtistClaimsAttributes {
ArtistClaimsAttributes {
artist_id,
external_links: None,
provider,
recommendation: None,
retrieved_upcs: None,
status,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Provider {
#[serde(rename = "DISTROKID")]
Distrokid,
#[serde(rename = "CDBABY")]
Cdbaby,
#[serde(rename = "TUNECORE")]
Tunecore,
}
impl Default for Provider {
fn default() -> Provider {
Self::Distrokid
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Recommendation {
#[serde(rename = "CLAIM_PROFILE")]
ClaimProfile,
#[serde(rename = "CLAIM_CONTENT")]
ClaimContent,
}
impl Default for Recommendation {
fn default() -> Recommendation {
Self::ClaimProfile
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "AWAITING_OAUTH")]
AwaitingOauth,
#[serde(rename = "FETCHING_CONTENT")]
FetchingContent,
#[serde(rename = "VERIFIED")]
Verified,
#[serde(rename = "NO_MATCHES")]
NoMatches,
#[serde(rename = "AUTHENTICATION_FAILED")]
AuthenticationFailed,
#[serde(rename = "PROCESSING")]
Processing,
#[serde(rename = "COMPLETED")]
Completed,
#[serde(rename = "FAILED")]
Failed,
#[serde(rename = "CANCELLED")]
Cancelled,
}
impl Default for Status {
fn default() -> Status {
Self::AwaitingOauth
}
}