#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct Media {
#[serde(rename = "type")]
pub r#type: RHashType,
#[serde(rename = "foreign_key")]
pub foreign_key: String,
#[serde(rename = "details", skip_serializing_if = "Option::is_none")]
pub details: Option<serde_json::Value>,
#[serde(rename = "preferred", skip_serializing_if = "Option::is_none")]
pub preferred: Option<bool>,
#[serde(rename = "direct_url", skip_serializing_if = "Option::is_none")]
pub direct_url: Option<String>,
#[serde(rename = "view_url", skip_serializing_if = "Option::is_none")]
pub view_url: Option<String>,
}
impl Media {
pub fn new(r#type: RHashType, foreign_key: String) -> Media {
Media {
r#type,
foreign_key,
details: None,
preferred: None,
direct_url: None,
view_url: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum RHashType {
#[serde(rename = "youtube")]
Youtube,
#[serde(rename = "cdphotothread")]
Cdphotothread,
#[serde(rename = "imgur")]
Imgur,
#[serde(rename = "facebook-profile")]
FacebookProfile,
#[serde(rename = "youtube-channel")]
YoutubeChannel,
#[serde(rename = "twitter-profile")]
TwitterProfile,
#[serde(rename = "github-profile")]
GithubProfile,
#[serde(rename = "instagram-profile")]
InstagramProfile,
#[serde(rename = "periscope-profile")]
PeriscopeProfile,
#[serde(rename = "grabcad")]
Grabcad,
#[serde(rename = "instagram-image")]
InstagramImage,
#[serde(rename = "external-link")]
ExternalLink,
#[serde(rename = "avatar")]
Avatar,
}
impl Default for RHashType {
fn default() -> RHashType {
Self::Youtube
}
}