{-# LANGUAGE TemplateHaskell #-}
module Calamity.Types.Model.Channel.Embed (
Embed (..),
embedFooter,
embedImage,
embedThumbnail,
embedAuthor,
embedAuthor',
embedField,
EmbedFooter (..),
EmbedImage (..),
EmbedThumbnail (..),
EmbedVideo (..),
EmbedProvider (..),
EmbedAuthor (..),
EmbedField (..),
) where
import Calamity.Internal.IntColour (IntColour (..))
import Calamity.Internal.Utils (CalamityToJSON (..), CalamityToJSON' (..), (.=), (.?=))
import Data.Aeson ((.!=), (.:), (.:?))
import qualified Data.Aeson as Aeson
import Data.Colour (Colour)
import Data.Default.Class
import Data.Semigroup
import Data.Text (Text)
import Data.Time
import Data.Word
import Optics ((%~), (&), (^.))
import Optics.TH
import qualified TextShow
import TextShow.TH
data Embed = Embed
{ Embed -> Maybe Text
title :: Maybe Text
, Embed -> Maybe Text
type_ :: Maybe Text
, Embed -> Maybe Text
description :: Maybe Text
, Embed -> Maybe Text
url :: Maybe Text
, Embed -> Maybe UTCTime
timestamp :: Maybe UTCTime
, Embed -> Maybe (Colour Double)
color :: Maybe (Colour Double)
, :: Maybe EmbedFooter
, Embed -> Maybe EmbedImage
image :: Maybe EmbedImage
, Embed -> Maybe EmbedThumbnail
thumbnail :: Maybe EmbedThumbnail
, Embed -> Maybe EmbedVideo
video :: Maybe EmbedVideo
, Embed -> Maybe EmbedProvider
provider :: Maybe EmbedProvider
, Embed -> Maybe EmbedAuthor
author :: Maybe EmbedAuthor
, Embed -> [EmbedField]
fields :: [EmbedField]
}
deriving (Embed -> Embed -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Embed -> Embed -> Bool
$c/= :: Embed -> Embed -> Bool
== :: Embed -> Embed -> Bool
$c== :: Embed -> Embed -> Bool
Eq, Int -> Embed -> ShowS
[Embed] -> ShowS
Embed -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Embed] -> ShowS
$cshowList :: [Embed] -> ShowS
show :: Embed -> String
$cshow :: Embed -> String
showsPrec :: Int -> Embed -> ShowS
$cshowsPrec :: Int -> Embed -> ShowS
Show)
deriving (Int -> Embed -> Builder
Int -> Embed -> Text
Int -> Embed -> Text
[Embed] -> Builder
[Embed] -> Text
[Embed] -> Text
Embed -> Builder
Embed -> Text
Embed -> Text
forall a.
(Int -> a -> Builder)
-> (a -> Builder)
-> ([a] -> Builder)
-> (Int -> a -> Text)
-> (a -> Text)
-> ([a] -> Text)
-> (Int -> a -> Text)
-> (a -> Text)
-> ([a] -> Text)
-> TextShow a
showtlList :: [Embed] -> Text
$cshowtlList :: [Embed] -> Text
showtl :: Embed -> Text
$cshowtl :: Embed -> Text
showtlPrec :: Int -> Embed -> Text
$cshowtlPrec :: Int -> Embed -> Text
showtList :: [Embed] -> Text
$cshowtList :: [Embed] -> Text
showt :: Embed -> Text
$cshowt :: Embed -> Text
showtPrec :: Int -> Embed -> Text
$cshowtPrec :: Int -> Embed -> Text
showbList :: [Embed] -> Builder
$cshowbList :: [Embed] -> Builder
showb :: Embed -> Builder
$cshowb :: Embed -> Builder
showbPrec :: Int -> Embed -> Builder
$cshowbPrec :: Int -> Embed -> Builder
TextShow.TextShow) via TextShow.FromStringShow Embed
deriving ([Embed] -> Encoding
[Embed] -> Value
Embed -> Encoding
Embed -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [Embed] -> Encoding
$ctoEncodingList :: [Embed] -> Encoding
toJSONList :: [Embed] -> Value
$ctoJSONList :: [Embed] -> Value
toEncoding :: Embed -> Encoding
$ctoEncoding :: Embed -> Encoding
toJSON :: Embed -> Value
$ctoJSON :: Embed -> Value
Aeson.ToJSON) via CalamityToJSON Embed
instance Default Embed where
def :: Embed
def =
Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe UTCTime
-> Maybe (Colour Double)
-> Maybe EmbedFooter
-> Maybe EmbedImage
-> Maybe EmbedThumbnail
-> Maybe EmbedVideo
-> Maybe EmbedProvider
-> Maybe EmbedAuthor
-> [EmbedField]
-> Embed
Embed
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
forall a. Maybe a
Nothing
[]
instance CalamityToJSON' Embed where
toPairs :: forall kv. KeyValue kv => Embed -> [Maybe kv]
toPairs Embed {[EmbedField]
Maybe UTCTime
Maybe Text
Maybe (Colour Double)
Maybe EmbedAuthor
Maybe EmbedProvider
Maybe EmbedVideo
Maybe EmbedThumbnail
Maybe EmbedImage
Maybe EmbedFooter
fields :: [EmbedField]
author :: Maybe EmbedAuthor
provider :: Maybe EmbedProvider
video :: Maybe EmbedVideo
thumbnail :: Maybe EmbedThumbnail
image :: Maybe EmbedImage
footer :: Maybe EmbedFooter
color :: Maybe (Colour Double)
timestamp :: Maybe UTCTime
url :: Maybe Text
description :: Maybe Text
type_ :: Maybe Text
title :: Maybe Text
$sel:fields:Embed :: Embed -> [EmbedField]
$sel:author:Embed :: Embed -> Maybe EmbedAuthor
$sel:provider:Embed :: Embed -> Maybe EmbedProvider
$sel:video:Embed :: Embed -> Maybe EmbedVideo
$sel:thumbnail:Embed :: Embed -> Maybe EmbedThumbnail
$sel:image:Embed :: Embed -> Maybe EmbedImage
$sel:footer:Embed :: Embed -> Maybe EmbedFooter
$sel:color:Embed :: Embed -> Maybe (Colour Double)
$sel:timestamp:Embed :: Embed -> Maybe UTCTime
$sel:url:Embed :: Embed -> Maybe Text
$sel:description:Embed :: Embed -> Maybe Text
$sel:type_:Embed :: Embed -> Maybe Text
$sel:title:Embed :: Embed -> Maybe Text
..} =
[ Key
"title" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
title
, Key
"type" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
type_
, Key
"description" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
description
, Key
"url" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
url
, Key
"timestamp" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe UTCTime
timestamp
, Key
"color" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= (Colour Double -> IntColour
IntColour forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Colour Double)
color)
, Key
"footer" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe EmbedFooter
footer
, Key
"image" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe EmbedImage
image
, Key
"thumbnail" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe EmbedThumbnail
thumbnail
, Key
"video" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe EmbedVideo
video
, Key
"provider" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe EmbedProvider
provider
, Key
"author" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe EmbedAuthor
author
, Key
"fields" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= [EmbedField]
fields
]
instance Aeson.FromJSON Embed where
parseJSON :: Value -> Parser Embed
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"Embed" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe UTCTime
-> Maybe (Colour Double)
-> Maybe EmbedFooter
-> Maybe EmbedImage
-> Maybe EmbedThumbnail
-> Maybe EmbedVideo
-> Maybe EmbedProvider
-> Maybe EmbedAuthor
-> [EmbedField]
-> Embed
Embed
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"title"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"type"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"description"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"timestamp"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap IntColour -> Colour Double
fromIntColour forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"color")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"footer"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"image"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"thumbnail"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"video"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"provider"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"author"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"fields" forall a. Parser (Maybe a) -> a -> Parser a
.!= []
data =
{ :: Text
, :: Maybe Text
, :: Maybe Text
}
deriving (EmbedFooter -> EmbedFooter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EmbedFooter -> EmbedFooter -> Bool
$c/= :: EmbedFooter -> EmbedFooter -> Bool
== :: EmbedFooter -> EmbedFooter -> Bool
$c== :: EmbedFooter -> EmbedFooter -> Bool
Eq, Int -> EmbedFooter -> ShowS
[EmbedFooter] -> ShowS
EmbedFooter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EmbedFooter] -> ShowS
$cshowList :: [EmbedFooter] -> ShowS
show :: EmbedFooter -> String
$cshow :: EmbedFooter -> String
showsPrec :: Int -> EmbedFooter -> ShowS
$cshowsPrec :: Int -> EmbedFooter -> ShowS
Show)
deriving ([EmbedFooter] -> Encoding
[EmbedFooter] -> Value
EmbedFooter -> Encoding
EmbedFooter -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EmbedFooter] -> Encoding
$ctoEncodingList :: [EmbedFooter] -> Encoding
toJSONList :: [EmbedFooter] -> Value
$ctoJSONList :: [EmbedFooter] -> Value
toEncoding :: EmbedFooter -> Encoding
$ctoEncoding :: EmbedFooter -> Encoding
toJSON :: EmbedFooter -> Value
$ctoJSON :: EmbedFooter -> Value
Aeson.ToJSON) via CalamityToJSON EmbedFooter
instance CalamityToJSON' EmbedFooter where
toPairs :: forall kv. KeyValue kv => EmbedFooter -> [Maybe kv]
toPairs EmbedFooter {Maybe Text
Text
proxyIconUrl :: Maybe Text
iconUrl :: Maybe Text
text :: Text
$sel:proxyIconUrl:EmbedFooter :: EmbedFooter -> Maybe Text
$sel:iconUrl:EmbedFooter :: EmbedFooter -> Maybe Text
$sel:text:EmbedFooter :: EmbedFooter -> Text
..} =
[ Key
"text" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Text
text
, Key
"icon_url" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
iconUrl
, Key
"proxy_icon_url" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
proxyIconUrl
]
instance Aeson.FromJSON EmbedFooter where
parseJSON :: Value -> Parser EmbedFooter
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"EmbedFooter" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Text -> Maybe Text -> Maybe Text -> EmbedFooter
EmbedFooter
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"text"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"icon_url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"proxy_icon_url"
embedFooter :: Text -> EmbedFooter
Text
text = Text -> Maybe Text -> Maybe Text -> EmbedFooter
EmbedFooter Text
text forall a. Maybe a
Nothing forall a. Maybe a
Nothing
data EmbedImage = EmbedImage
{ EmbedImage -> Text
url :: Text
, EmbedImage -> Maybe Text
proxyUrl :: Maybe Text
, EmbedImage -> Maybe Word64
width :: Maybe Word64
, EmbedImage -> Maybe Word64
height :: Maybe Word64
}
deriving (EmbedImage -> EmbedImage -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EmbedImage -> EmbedImage -> Bool
$c/= :: EmbedImage -> EmbedImage -> Bool
== :: EmbedImage -> EmbedImage -> Bool
$c== :: EmbedImage -> EmbedImage -> Bool
Eq, Int -> EmbedImage -> ShowS
[EmbedImage] -> ShowS
EmbedImage -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EmbedImage] -> ShowS
$cshowList :: [EmbedImage] -> ShowS
show :: EmbedImage -> String
$cshow :: EmbedImage -> String
showsPrec :: Int -> EmbedImage -> ShowS
$cshowsPrec :: Int -> EmbedImage -> ShowS
Show)
deriving ([EmbedImage] -> Encoding
[EmbedImage] -> Value
EmbedImage -> Encoding
EmbedImage -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EmbedImage] -> Encoding
$ctoEncodingList :: [EmbedImage] -> Encoding
toJSONList :: [EmbedImage] -> Value
$ctoJSONList :: [EmbedImage] -> Value
toEncoding :: EmbedImage -> Encoding
$ctoEncoding :: EmbedImage -> Encoding
toJSON :: EmbedImage -> Value
$ctoJSON :: EmbedImage -> Value
Aeson.ToJSON) via CalamityToJSON EmbedImage
instance CalamityToJSON' EmbedImage where
toPairs :: forall kv. KeyValue kv => EmbedImage -> [Maybe kv]
toPairs EmbedImage {Maybe Word64
Maybe Text
Text
height :: Maybe Word64
width :: Maybe Word64
proxyUrl :: Maybe Text
url :: Text
$sel:height:EmbedImage :: EmbedImage -> Maybe Word64
$sel:width:EmbedImage :: EmbedImage -> Maybe Word64
$sel:proxyUrl:EmbedImage :: EmbedImage -> Maybe Text
$sel:url:EmbedImage :: EmbedImage -> Text
..} =
[ Key
"url" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Text
url
, Key
"proxy_url" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Text
proxyUrl
, Key
"width" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Word64
width
, Key
"height" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Word64
height
]
instance Aeson.FromJSON EmbedImage where
parseJSON :: Value -> Parser EmbedImage
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"EmbedImage" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Text -> Maybe Text -> Maybe Word64 -> Maybe Word64 -> EmbedImage
EmbedImage
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"proxy_url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"width"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"height"
embedImage :: Text -> EmbedImage
embedImage :: Text -> EmbedImage
embedImage Text
url = Text -> Maybe Text -> Maybe Word64 -> Maybe Word64 -> EmbedImage
EmbedImage Text
url forall a. Maybe a
Nothing forall a. Maybe a
Nothing forall a. Maybe a
Nothing
data EmbedThumbnail = EmbedThumbnail
{ EmbedThumbnail -> Text
url :: Text
, EmbedThumbnail -> Maybe Text
proxyUrl :: Maybe Text
, EmbedThumbnail -> Maybe Word64
width :: Maybe Word64
, EmbedThumbnail -> Maybe Word64
height :: Maybe Word64
}
deriving (EmbedThumbnail -> EmbedThumbnail -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EmbedThumbnail -> EmbedThumbnail -> Bool
$c/= :: EmbedThumbnail -> EmbedThumbnail -> Bool
== :: EmbedThumbnail -> EmbedThumbnail -> Bool
$c== :: EmbedThumbnail -> EmbedThumbnail -> Bool
Eq, Int -> EmbedThumbnail -> ShowS
[EmbedThumbnail] -> ShowS
EmbedThumbnail -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EmbedThumbnail] -> ShowS
$cshowList :: [EmbedThumbnail] -> ShowS
show :: EmbedThumbnail -> String
$cshow :: EmbedThumbnail -> String
showsPrec :: Int -> EmbedThumbnail -> ShowS
$cshowsPrec :: Int -> EmbedThumbnail -> ShowS
Show)
deriving ([EmbedThumbnail] -> Encoding
[EmbedThumbnail] -> Value
EmbedThumbnail -> Encoding
EmbedThumbnail -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EmbedThumbnail] -> Encoding
$ctoEncodingList :: [EmbedThumbnail] -> Encoding
toJSONList :: [EmbedThumbnail] -> Value
$ctoJSONList :: [EmbedThumbnail] -> Value
toEncoding :: EmbedThumbnail -> Encoding
$ctoEncoding :: EmbedThumbnail -> Encoding
toJSON :: EmbedThumbnail -> Value
$ctoJSON :: EmbedThumbnail -> Value
Aeson.ToJSON) via CalamityToJSON EmbedThumbnail
instance CalamityToJSON' EmbedThumbnail where
toPairs :: forall kv. KeyValue kv => EmbedThumbnail -> [Maybe kv]
toPairs EmbedThumbnail {Maybe Word64
Maybe Text
Text
height :: Maybe Word64
width :: Maybe Word64
proxyUrl :: Maybe Text
url :: Text
$sel:height:EmbedThumbnail :: EmbedThumbnail -> Maybe Word64
$sel:width:EmbedThumbnail :: EmbedThumbnail -> Maybe Word64
$sel:proxyUrl:EmbedThumbnail :: EmbedThumbnail -> Maybe Text
$sel:url:EmbedThumbnail :: EmbedThumbnail -> Text
..} =
[ Key
"url" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Text
url
, Key
"proxy_url" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
proxyUrl
, Key
"width" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Word64
width
, Key
"height" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Word64
height
]
instance Aeson.FromJSON EmbedThumbnail where
parseJSON :: Value -> Parser EmbedThumbnail
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"EmbedThumbnail" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Text
-> Maybe Text -> Maybe Word64 -> Maybe Word64 -> EmbedThumbnail
EmbedThumbnail
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"proxy_url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"width"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"height"
embedThumbnail :: Text -> EmbedThumbnail
embedThumbnail :: Text -> EmbedThumbnail
embedThumbnail Text
url = Text
-> Maybe Text -> Maybe Word64 -> Maybe Word64 -> EmbedThumbnail
EmbedThumbnail Text
url forall a. Maybe a
Nothing forall a. Maybe a
Nothing forall a. Maybe a
Nothing
data EmbedVideo = EmbedVideo
{ EmbedVideo -> Maybe Text
url :: Maybe Text
, EmbedVideo -> Maybe Text
proxyUrl :: Maybe Text
, EmbedVideo -> Maybe Word64
width :: Maybe Word64
, EmbedVideo -> Maybe Word64
height :: Maybe Word64
}
deriving (EmbedVideo -> EmbedVideo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EmbedVideo -> EmbedVideo -> Bool
$c/= :: EmbedVideo -> EmbedVideo -> Bool
== :: EmbedVideo -> EmbedVideo -> Bool
$c== :: EmbedVideo -> EmbedVideo -> Bool
Eq, Int -> EmbedVideo -> ShowS
[EmbedVideo] -> ShowS
EmbedVideo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EmbedVideo] -> ShowS
$cshowList :: [EmbedVideo] -> ShowS
show :: EmbedVideo -> String
$cshow :: EmbedVideo -> String
showsPrec :: Int -> EmbedVideo -> ShowS
$cshowsPrec :: Int -> EmbedVideo -> ShowS
Show)
deriving ([EmbedVideo] -> Encoding
[EmbedVideo] -> Value
EmbedVideo -> Encoding
EmbedVideo -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EmbedVideo] -> Encoding
$ctoEncodingList :: [EmbedVideo] -> Encoding
toJSONList :: [EmbedVideo] -> Value
$ctoJSONList :: [EmbedVideo] -> Value
toEncoding :: EmbedVideo -> Encoding
$ctoEncoding :: EmbedVideo -> Encoding
toJSON :: EmbedVideo -> Value
$ctoJSON :: EmbedVideo -> Value
Aeson.ToJSON) via CalamityToJSON EmbedVideo
instance CalamityToJSON' EmbedVideo where
toPairs :: forall kv. KeyValue kv => EmbedVideo -> [Maybe kv]
toPairs EmbedVideo {Maybe Word64
Maybe Text
height :: Maybe Word64
width :: Maybe Word64
proxyUrl :: Maybe Text
url :: Maybe Text
$sel:height:EmbedVideo :: EmbedVideo -> Maybe Word64
$sel:width:EmbedVideo :: EmbedVideo -> Maybe Word64
$sel:proxyUrl:EmbedVideo :: EmbedVideo -> Maybe Text
$sel:url:EmbedVideo :: EmbedVideo -> Maybe Text
..} =
[ Key
"url" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Text
url
, Key
"proxy_url" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Text
proxyUrl
, Key
"width" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Word64
width
, Key
"height" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Word64
height
]
instance Aeson.FromJSON EmbedVideo where
parseJSON :: Value -> Parser EmbedVideo
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"EmbedVideo" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Maybe Text
-> Maybe Text -> Maybe Word64 -> Maybe Word64 -> EmbedVideo
EmbedVideo
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"proxy_url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"width"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"height"
data EmbedProvider = EmbedProvider
{ EmbedProvider -> Maybe Text
name :: Maybe Text
, EmbedProvider -> Maybe Text
url :: Maybe Text
}
deriving (EmbedProvider -> EmbedProvider -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EmbedProvider -> EmbedProvider -> Bool
$c/= :: EmbedProvider -> EmbedProvider -> Bool
== :: EmbedProvider -> EmbedProvider -> Bool
$c== :: EmbedProvider -> EmbedProvider -> Bool
Eq, Int -> EmbedProvider -> ShowS
[EmbedProvider] -> ShowS
EmbedProvider -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EmbedProvider] -> ShowS
$cshowList :: [EmbedProvider] -> ShowS
show :: EmbedProvider -> String
$cshow :: EmbedProvider -> String
showsPrec :: Int -> EmbedProvider -> ShowS
$cshowsPrec :: Int -> EmbedProvider -> ShowS
Show)
deriving ([EmbedProvider] -> Encoding
[EmbedProvider] -> Value
EmbedProvider -> Encoding
EmbedProvider -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EmbedProvider] -> Encoding
$ctoEncodingList :: [EmbedProvider] -> Encoding
toJSONList :: [EmbedProvider] -> Value
$ctoJSONList :: [EmbedProvider] -> Value
toEncoding :: EmbedProvider -> Encoding
$ctoEncoding :: EmbedProvider -> Encoding
toJSON :: EmbedProvider -> Value
$ctoJSON :: EmbedProvider -> Value
Aeson.ToJSON) via CalamityToJSON EmbedProvider
instance CalamityToJSON' EmbedProvider where
toPairs :: forall kv. KeyValue kv => EmbedProvider -> [Maybe kv]
toPairs EmbedProvider {Maybe Text
url :: Maybe Text
name :: Maybe Text
$sel:url:EmbedProvider :: EmbedProvider -> Maybe Text
$sel:name:EmbedProvider :: EmbedProvider -> Maybe Text
..} =
[ Key
"name" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Text
name
, Key
"url" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Maybe Text
url
]
instance Aeson.FromJSON EmbedProvider where
parseJSON :: Value -> Parser EmbedProvider
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"EmbedProvider" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Maybe Text -> Maybe Text -> EmbedProvider
EmbedProvider
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"name"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"url"
data EmbedAuthor = EmbedAuthor
{ EmbedAuthor -> Maybe Text
name :: Maybe Text
, EmbedAuthor -> Maybe Text
url :: Maybe Text
, EmbedAuthor -> Maybe Text
iconUrl :: Maybe Text
, EmbedAuthor -> Maybe Text
proxyIconUrl :: Maybe Text
}
deriving (EmbedAuthor -> EmbedAuthor -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EmbedAuthor -> EmbedAuthor -> Bool
$c/= :: EmbedAuthor -> EmbedAuthor -> Bool
== :: EmbedAuthor -> EmbedAuthor -> Bool
$c== :: EmbedAuthor -> EmbedAuthor -> Bool
Eq, Int -> EmbedAuthor -> ShowS
[EmbedAuthor] -> ShowS
EmbedAuthor -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EmbedAuthor] -> ShowS
$cshowList :: [EmbedAuthor] -> ShowS
show :: EmbedAuthor -> String
$cshow :: EmbedAuthor -> String
showsPrec :: Int -> EmbedAuthor -> ShowS
$cshowsPrec :: Int -> EmbedAuthor -> ShowS
Show)
deriving ([EmbedAuthor] -> Encoding
[EmbedAuthor] -> Value
EmbedAuthor -> Encoding
EmbedAuthor -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EmbedAuthor] -> Encoding
$ctoEncodingList :: [EmbedAuthor] -> Encoding
toJSONList :: [EmbedAuthor] -> Value
$ctoJSONList :: [EmbedAuthor] -> Value
toEncoding :: EmbedAuthor -> Encoding
$ctoEncoding :: EmbedAuthor -> Encoding
toJSON :: EmbedAuthor -> Value
$ctoJSON :: EmbedAuthor -> Value
Aeson.ToJSON) via CalamityToJSON EmbedAuthor
instance Default EmbedAuthor where
def :: EmbedAuthor
def = Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> EmbedAuthor
EmbedAuthor forall a. Maybe a
Nothing forall a. Maybe a
Nothing forall a. Maybe a
Nothing forall a. Maybe a
Nothing
instance CalamityToJSON' EmbedAuthor where
toPairs :: forall kv. KeyValue kv => EmbedAuthor -> [Maybe kv]
toPairs EmbedAuthor {Maybe Text
proxyIconUrl :: Maybe Text
iconUrl :: Maybe Text
url :: Maybe Text
name :: Maybe Text
$sel:proxyIconUrl:EmbedAuthor :: EmbedAuthor -> Maybe Text
$sel:iconUrl:EmbedAuthor :: EmbedAuthor -> Maybe Text
$sel:url:EmbedAuthor :: EmbedAuthor -> Maybe Text
$sel:name:EmbedAuthor :: EmbedAuthor -> Maybe Text
..} =
[ Key
"name" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
name
, Key
"url" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
url
, Key
"icon_url" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
iconUrl
, Key
"proxy_icon_url" forall v kv. (ToJSON v, KeyValue kv) => Key -> Maybe v -> Maybe kv
.?= Maybe Text
proxyIconUrl
]
instance Aeson.FromJSON EmbedAuthor where
parseJSON :: Value -> Parser EmbedAuthor
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"EmbedAuthor" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> EmbedAuthor
EmbedAuthor
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"name"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"icon_url"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"proxy_icon_url"
embedAuthor :: Text -> EmbedAuthor
embedAuthor :: Text -> EmbedAuthor
embedAuthor Text
name = Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> EmbedAuthor
EmbedAuthor (forall a. a -> Maybe a
Just Text
name) forall a. Maybe a
Nothing forall a. Maybe a
Nothing forall a. Maybe a
Nothing
embedAuthor' ::
Text ->
Text ->
Text ->
EmbedAuthor
embedAuthor' :: Text -> Text -> Text -> EmbedAuthor
embedAuthor' Text
name Text
url Text
iconUrl = Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> EmbedAuthor
EmbedAuthor (forall a. a -> Maybe a
Just Text
name) (forall a. a -> Maybe a
Just Text
url) (forall a. a -> Maybe a
Just Text
iconUrl) forall a. Maybe a
Nothing
data EmbedField = EmbedField
{ EmbedField -> Text
name :: Text
, EmbedField -> Text
value :: Text
, EmbedField -> Bool
inline :: Bool
}
deriving (EmbedField -> EmbedField -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EmbedField -> EmbedField -> Bool
$c/= :: EmbedField -> EmbedField -> Bool
== :: EmbedField -> EmbedField -> Bool
$c== :: EmbedField -> EmbedField -> Bool
Eq, Int -> EmbedField -> ShowS
[EmbedField] -> ShowS
EmbedField -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EmbedField] -> ShowS
$cshowList :: [EmbedField] -> ShowS
show :: EmbedField -> String
$cshow :: EmbedField -> String
showsPrec :: Int -> EmbedField -> ShowS
$cshowsPrec :: Int -> EmbedField -> ShowS
Show)
deriving ([EmbedField] -> Encoding
[EmbedField] -> Value
EmbedField -> Encoding
EmbedField -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EmbedField] -> Encoding
$ctoEncodingList :: [EmbedField] -> Encoding
toJSONList :: [EmbedField] -> Value
$ctoJSONList :: [EmbedField] -> Value
toEncoding :: EmbedField -> Encoding
$ctoEncoding :: EmbedField -> Encoding
toJSON :: EmbedField -> Value
$ctoJSON :: EmbedField -> Value
Aeson.ToJSON) via CalamityToJSON EmbedField
instance CalamityToJSON' EmbedField where
toPairs :: forall kv. KeyValue kv => EmbedField -> [Maybe kv]
toPairs EmbedField {Bool
Text
inline :: Bool
value :: Text
name :: Text
$sel:inline:EmbedField :: EmbedField -> Bool
$sel:value:EmbedField :: EmbedField -> Text
$sel:name:EmbedField :: EmbedField -> Text
..} =
[ Key
"name" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Text
name
, Key
"value" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Text
value
, Key
"inline" forall v kv. (ToJSON v, KeyValue kv) => Key -> v -> Maybe kv
.= Bool
inline
]
instance Aeson.FromJSON EmbedField where
parseJSON :: Value -> Parser EmbedField
parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a
Aeson.withObject String
"EmbedField" forall a b. (a -> b) -> a -> b
$ \Object
v ->
Text -> Text -> Bool -> EmbedField
EmbedField
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"value"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"inline" forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
embedField ::
Text ->
Text ->
EmbedField
embedField :: Text -> Text -> EmbedField
embedField Text
name Text
value = Text -> Text -> Bool -> EmbedField
EmbedField Text
name Text
value Bool
False
$(makeFieldLabelsNoPrefix ''Embed)
$(deriveTextShow ''EmbedFooter)
$(makeFieldLabelsNoPrefix ''EmbedFooter)
$(deriveTextShow ''EmbedImage)
$(makeFieldLabelsNoPrefix ''EmbedImage)
$(deriveTextShow ''EmbedThumbnail)
$(makeFieldLabelsNoPrefix ''EmbedThumbnail)
$(deriveTextShow ''EmbedVideo)
$(makeFieldLabelsNoPrefix ''EmbedVideo)
$(deriveTextShow ''EmbedProvider)
$(makeFieldLabelsNoPrefix ''EmbedProvider)
$(deriveTextShow ''EmbedAuthor)
$(makeFieldLabelsNoPrefix ''EmbedAuthor)
$(deriveTextShow ''EmbedField)
$(makeFieldLabelsNoPrefix ''EmbedField)
instance Semigroup EmbedFooter where
EmbedFooter
l <> :: EmbedFooter -> EmbedFooter -> EmbedFooter
<> EmbedFooter
r =
EmbedFooter
l
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "text" a => a
#text forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ (forall a. Semigroup a => a -> a -> a
<> (EmbedFooter
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "text" a => a
#text))
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "iconUrl" a => a
#iconUrl forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (EmbedFooter
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "iconUrl" a => a
#iconUrl)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "proxyIconUrl" a => a
#proxyIconUrl forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (EmbedFooter
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "proxyIconUrl" a => a
#proxyIconUrl)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
instance Semigroup Embed where
Embed
l <> :: Embed -> Embed -> Embed
<> Embed
r =
Embed
l
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "title" a => a
#title forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ (forall a. Semigroup a => a -> a -> a
<> (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "title" a => a
#title))
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "type_" a => a
#type_ forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "type_" a => a
#type_)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "description" a => a
#description forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ (forall a. Semigroup a => a -> a -> a
<> (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "description" a => a
#description))
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "url" a => a
#url forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "url" a => a
#url)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "timestamp" a => a
#timestamp forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "timestamp" a => a
#timestamp)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "color" a => a
#color forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "color" a => a
#color)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "footer" a => a
#footer forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ (forall a. Semigroup a => a -> a -> a
<> (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "footer" a => a
#footer))
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "image" a => a
#image forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "image" a => a
#image)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "thumbnail" a => a
#thumbnail forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "thumbnail" a => a
#thumbnail)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "video" a => a
#video forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "video" a => a
#video)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "provider" a => a
#provider forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "provider" a => a
#provider)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "author" a => a
#author forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ forall a. Last a -> a
getLast forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Semigroup a => a -> a -> a
<> forall a. a -> Last a
Last (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "author" a => a
#author)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Last a
Last
forall a b. a -> (a -> b) -> b
& forall a. IsLabel "fields" a => a
#fields forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
%~ (forall a. Semigroup a => a -> a -> a
<> (Embed
r forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. forall a. IsLabel "fields" a => a
#fields))
instance Monoid Embed where
mempty :: Embed
mempty = forall a. Default a => a
def