megalodon 1.0.1

Mastodon and Pleroma API client library for Rust.
Documentation
use crate::entities as MegalodonEntities;
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Clone)]
pub struct Card {
    url: String,
    title: String,
    description: String,
    r#type: CardType,
    image: Option<String>,
    provider_name: String,
    provider_url: String,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum CardType {
    Link,
    Photo,
    Video,
    Rich,
}

impl From<CardType> for MegalodonEntities::card::CardType {
    fn from(val: CardType) -> Self {
        match val {
            CardType::Link => MegalodonEntities::card::CardType::Link,
            CardType::Photo => MegalodonEntities::card::CardType::Photo,
            CardType::Video => MegalodonEntities::card::CardType::Video,
            CardType::Rich => MegalodonEntities::card::CardType::Rich,
        }
    }
}

impl From<Card> for MegalodonEntities::Card {
    fn from(val: Card) -> Self {
        MegalodonEntities::Card {
            url: val.url,
            title: val.title,
            description: val.description,
            r#type: val.r#type.into(),
            image: val.image,
            author_name: None,
            author_url: None,
            provider_name: val.provider_name,
            provider_url: val.provider_url,
            html: None,
            width: None,
            height: None,
            embed_url: None,
            blurhash: None,
        }
    }
}