{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
{-# HLINT ignore "Use camelCase" #-}
module MatrixBot.Bot.BotConfig
( BotConfig (..)
, BotConfigReactToUsers (..)
, BotConfigReplyToMedia (..)
, BotConfigReplyToMedia_MessageTemplateEntry (..)
, BotConfigReplyToMedia_DynamicFieldName (..)
, BotConfigReplyToMedia_DynamicExtractedValueName (..)
) where
import qualified Data.Aeson as J
import qualified Data.Aeson.KeyMap as KeyMap
import qualified Data.Aeson.Types as J
import Data.Data (Proxy (Proxy))
import Data.List (find)
import qualified Data.List.NonEmpty as NE
import Data.Text (Text)
import Data.Typeable (Typeable, typeRep)
import GHC.Generics (Generic)
import MatrixBot.AesonUtils (myGenericToJSON, myGenericParseJSON)
import MatrixBot.Bot.EventsListener.Filters (UsersFilter, RoomsFilter, MediaMsgtypeFilter)
data BotConfig = BotConfig
{ BotConfig -> Maybe [BotConfigReactToUsers]
botConfigReactToUsers ∷ Maybe [BotConfigReactToUsers]
, BotConfig -> Maybe [BotConfigReplyToMedia]
botConfigReplyToMedia ∷ Maybe [BotConfigReplyToMedia]
}
deriving stock ((forall x. BotConfig -> Rep BotConfig x)
-> (forall x. Rep BotConfig x -> BotConfig) -> Generic BotConfig
forall x. Rep BotConfig x -> BotConfig
forall x. BotConfig -> Rep BotConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BotConfig -> Rep BotConfig x
from :: forall x. BotConfig -> Rep BotConfig x
$cto :: forall x. Rep BotConfig x -> BotConfig
to :: forall x. Rep BotConfig x -> BotConfig
Generic, BotConfig -> BotConfig -> Bool
(BotConfig -> BotConfig -> Bool)
-> (BotConfig -> BotConfig -> Bool) -> Eq BotConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BotConfig -> BotConfig -> Bool
== :: BotConfig -> BotConfig -> Bool
$c/= :: BotConfig -> BotConfig -> Bool
/= :: BotConfig -> BotConfig -> Bool
Eq, Int -> BotConfig -> ShowS
[BotConfig] -> ShowS
BotConfig -> String
(Int -> BotConfig -> ShowS)
-> (BotConfig -> String)
-> ([BotConfig] -> ShowS)
-> Show BotConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BotConfig -> ShowS
showsPrec :: Int -> BotConfig -> ShowS
$cshow :: BotConfig -> String
show :: BotConfig -> String
$cshowList :: [BotConfig] -> ShowS
showList :: [BotConfig] -> ShowS
Show)
instance J.ToJSON BotConfig where toJSON :: BotConfig -> Value
toJSON = BotConfig -> Value
forall a.
(Generic a, Typeable a, GToJSON' Value Zero (Rep a)) =>
a -> Value
myGenericToJSON
instance J.FromJSON BotConfig where parseJSON :: Value -> Parser BotConfig
parseJSON = Value -> Parser BotConfig
forall a.
(Generic a, Typeable a, GFromJSON Zero (Rep a)) =>
Value -> Parser a
myGenericParseJSON
data BotConfigReactToUsers = BotConfigReactToUsers
{ BotConfigReactToUsers -> Maybe UsersFilter
botConfigReactToUsersUsersFilter ∷ Maybe UsersFilter
, BotConfigReactToUsers -> Maybe RoomsFilter
botConfigReactToUsersRoomsFilter ∷ Maybe RoomsFilter
, BotConfigReactToUsers -> NonEmpty Text
botConfigReactToUsersLeaveReactions ∷ NE.NonEmpty Text
}
deriving stock ((forall x. BotConfigReactToUsers -> Rep BotConfigReactToUsers x)
-> (forall x. Rep BotConfigReactToUsers x -> BotConfigReactToUsers)
-> Generic BotConfigReactToUsers
forall x. Rep BotConfigReactToUsers x -> BotConfigReactToUsers
forall x. BotConfigReactToUsers -> Rep BotConfigReactToUsers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BotConfigReactToUsers -> Rep BotConfigReactToUsers x
from :: forall x. BotConfigReactToUsers -> Rep BotConfigReactToUsers x
$cto :: forall x. Rep BotConfigReactToUsers x -> BotConfigReactToUsers
to :: forall x. Rep BotConfigReactToUsers x -> BotConfigReactToUsers
Generic, BotConfigReactToUsers -> BotConfigReactToUsers -> Bool
(BotConfigReactToUsers -> BotConfigReactToUsers -> Bool)
-> (BotConfigReactToUsers -> BotConfigReactToUsers -> Bool)
-> Eq BotConfigReactToUsers
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BotConfigReactToUsers -> BotConfigReactToUsers -> Bool
== :: BotConfigReactToUsers -> BotConfigReactToUsers -> Bool
$c/= :: BotConfigReactToUsers -> BotConfigReactToUsers -> Bool
/= :: BotConfigReactToUsers -> BotConfigReactToUsers -> Bool
Eq, Int -> BotConfigReactToUsers -> ShowS
[BotConfigReactToUsers] -> ShowS
BotConfigReactToUsers -> String
(Int -> BotConfigReactToUsers -> ShowS)
-> (BotConfigReactToUsers -> String)
-> ([BotConfigReactToUsers] -> ShowS)
-> Show BotConfigReactToUsers
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BotConfigReactToUsers -> ShowS
showsPrec :: Int -> BotConfigReactToUsers -> ShowS
$cshow :: BotConfigReactToUsers -> String
show :: BotConfigReactToUsers -> String
$cshowList :: [BotConfigReactToUsers] -> ShowS
showList :: [BotConfigReactToUsers] -> ShowS
Show)
instance J.ToJSON BotConfigReactToUsers where toJSON :: BotConfigReactToUsers -> Value
toJSON = BotConfigReactToUsers -> Value
forall a.
(Generic a, Typeable a, GToJSON' Value Zero (Rep a)) =>
a -> Value
myGenericToJSON
instance J.FromJSON BotConfigReactToUsers where parseJSON :: Value -> Parser BotConfigReactToUsers
parseJSON = Value -> Parser BotConfigReactToUsers
forall a.
(Generic a, Typeable a, GFromJSON Zero (Rep a)) =>
Value -> Parser a
myGenericParseJSON
data BotConfigReplyToMedia = BotConfigReplyToMedia
{ BotConfigReplyToMedia -> Maybe UsersFilter
botConfigReplyToMediaUsersFilter ∷ Maybe UsersFilter
, BotConfigReplyToMedia -> Maybe RoomsFilter
botConfigReplyToMediaRoomsFilter ∷ Maybe RoomsFilter
, BotConfigReplyToMedia -> Maybe MediaMsgtypeFilter
botConfigReplyToMediaMsgtypeFilter ∷ Maybe MediaMsgtypeFilter
, BotConfigReplyToMedia
-> [BotConfigReplyToMedia_MessageTemplateEntry]
botConfigReplyToMediaMessageTemplate ∷ [BotConfigReplyToMedia_MessageTemplateEntry]
, BotConfigReplyToMedia
-> Maybe [BotConfigReplyToMedia_MessageTemplateEntry]
botConfigReplyToMediaHtmlMessageTemplate ∷ Maybe [BotConfigReplyToMedia_MessageTemplateEntry]
}
deriving stock ((forall x. BotConfigReplyToMedia -> Rep BotConfigReplyToMedia x)
-> (forall x. Rep BotConfigReplyToMedia x -> BotConfigReplyToMedia)
-> Generic BotConfigReplyToMedia
forall x. Rep BotConfigReplyToMedia x -> BotConfigReplyToMedia
forall x. BotConfigReplyToMedia -> Rep BotConfigReplyToMedia x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BotConfigReplyToMedia -> Rep BotConfigReplyToMedia x
from :: forall x. BotConfigReplyToMedia -> Rep BotConfigReplyToMedia x
$cto :: forall x. Rep BotConfigReplyToMedia x -> BotConfigReplyToMedia
to :: forall x. Rep BotConfigReplyToMedia x -> BotConfigReplyToMedia
Generic, BotConfigReplyToMedia -> BotConfigReplyToMedia -> Bool
(BotConfigReplyToMedia -> BotConfigReplyToMedia -> Bool)
-> (BotConfigReplyToMedia -> BotConfigReplyToMedia -> Bool)
-> Eq BotConfigReplyToMedia
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BotConfigReplyToMedia -> BotConfigReplyToMedia -> Bool
== :: BotConfigReplyToMedia -> BotConfigReplyToMedia -> Bool
$c/= :: BotConfigReplyToMedia -> BotConfigReplyToMedia -> Bool
/= :: BotConfigReplyToMedia -> BotConfigReplyToMedia -> Bool
Eq, Int -> BotConfigReplyToMedia -> ShowS
[BotConfigReplyToMedia] -> ShowS
BotConfigReplyToMedia -> String
(Int -> BotConfigReplyToMedia -> ShowS)
-> (BotConfigReplyToMedia -> String)
-> ([BotConfigReplyToMedia] -> ShowS)
-> Show BotConfigReplyToMedia
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BotConfigReplyToMedia -> ShowS
showsPrec :: Int -> BotConfigReplyToMedia -> ShowS
$cshow :: BotConfigReplyToMedia -> String
show :: BotConfigReplyToMedia -> String
$cshowList :: [BotConfigReplyToMedia] -> ShowS
showList :: [BotConfigReplyToMedia] -> ShowS
Show)
instance J.ToJSON BotConfigReplyToMedia where toJSON :: BotConfigReplyToMedia -> Value
toJSON = BotConfigReplyToMedia -> Value
forall a.
(Generic a, Typeable a, GToJSON' Value Zero (Rep a)) =>
a -> Value
myGenericToJSON
instance J.FromJSON BotConfigReplyToMedia where parseJSON :: Value -> Parser BotConfigReplyToMedia
parseJSON = Value -> Parser BotConfigReplyToMedia
forall a.
(Generic a, Typeable a, GFromJSON Zero (Rep a)) =>
Value -> Parser a
myGenericParseJSON
data BotConfigReplyToMedia_MessageTemplateEntry
= BotConfigReplyToMedia_MessageTemplateEntry_PlainString
Text
| BotConfigReplyToMedia_MessageTemplateEntry_DynamicSubstitution_Field
BotConfigReplyToMedia_DynamicFieldName
|
BotConfigReplyToMedia_DynamicExtractedValueName
deriving stock ((forall x.
BotConfigReplyToMedia_MessageTemplateEntry
-> Rep BotConfigReplyToMedia_MessageTemplateEntry x)
-> (forall x.
Rep BotConfigReplyToMedia_MessageTemplateEntry x
-> BotConfigReplyToMedia_MessageTemplateEntry)
-> Generic BotConfigReplyToMedia_MessageTemplateEntry
forall x.
Rep BotConfigReplyToMedia_MessageTemplateEntry x
-> BotConfigReplyToMedia_MessageTemplateEntry
forall x.
BotConfigReplyToMedia_MessageTemplateEntry
-> Rep BotConfigReplyToMedia_MessageTemplateEntry x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
BotConfigReplyToMedia_MessageTemplateEntry
-> Rep BotConfigReplyToMedia_MessageTemplateEntry x
from :: forall x.
BotConfigReplyToMedia_MessageTemplateEntry
-> Rep BotConfigReplyToMedia_MessageTemplateEntry x
$cto :: forall x.
Rep BotConfigReplyToMedia_MessageTemplateEntry x
-> BotConfigReplyToMedia_MessageTemplateEntry
to :: forall x.
Rep BotConfigReplyToMedia_MessageTemplateEntry x
-> BotConfigReplyToMedia_MessageTemplateEntry
Generic, BotConfigReplyToMedia_MessageTemplateEntry
-> BotConfigReplyToMedia_MessageTemplateEntry -> Bool
(BotConfigReplyToMedia_MessageTemplateEntry
-> BotConfigReplyToMedia_MessageTemplateEntry -> Bool)
-> (BotConfigReplyToMedia_MessageTemplateEntry
-> BotConfigReplyToMedia_MessageTemplateEntry -> Bool)
-> Eq BotConfigReplyToMedia_MessageTemplateEntry
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BotConfigReplyToMedia_MessageTemplateEntry
-> BotConfigReplyToMedia_MessageTemplateEntry -> Bool
== :: BotConfigReplyToMedia_MessageTemplateEntry
-> BotConfigReplyToMedia_MessageTemplateEntry -> Bool
$c/= :: BotConfigReplyToMedia_MessageTemplateEntry
-> BotConfigReplyToMedia_MessageTemplateEntry -> Bool
/= :: BotConfigReplyToMedia_MessageTemplateEntry
-> BotConfigReplyToMedia_MessageTemplateEntry -> Bool
Eq, Int -> BotConfigReplyToMedia_MessageTemplateEntry -> ShowS
[BotConfigReplyToMedia_MessageTemplateEntry] -> ShowS
BotConfigReplyToMedia_MessageTemplateEntry -> String
(Int -> BotConfigReplyToMedia_MessageTemplateEntry -> ShowS)
-> (BotConfigReplyToMedia_MessageTemplateEntry -> String)
-> ([BotConfigReplyToMedia_MessageTemplateEntry] -> ShowS)
-> Show BotConfigReplyToMedia_MessageTemplateEntry
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BotConfigReplyToMedia_MessageTemplateEntry -> ShowS
showsPrec :: Int -> BotConfigReplyToMedia_MessageTemplateEntry -> ShowS
$cshow :: BotConfigReplyToMedia_MessageTemplateEntry -> String
show :: BotConfigReplyToMedia_MessageTemplateEntry -> String
$cshowList :: [BotConfigReplyToMedia_MessageTemplateEntry] -> ShowS
showList :: [BotConfigReplyToMedia_MessageTemplateEntry] -> ShowS
Show)
instance J.ToJSON BotConfigReplyToMedia_MessageTemplateEntry where
toJSON :: BotConfigReplyToMedia_MessageTemplateEntry -> Value
toJSON (BotConfigReplyToMedia_MessageTemplateEntry_PlainString Text
x) = Text -> Value
forall a. ToJSON a => a -> Value
J.toJSON Text
x
toJSON (BotConfigReplyToMedia_MessageTemplateEntry_DynamicSubstitution_Field BotConfigReplyToMedia_DynamicFieldName
x) =
Object -> Value
J.Object (Object -> Value) -> Object -> Value
forall a b. (a -> b) -> a -> b
$ Key -> Value -> Object
forall v. Key -> v -> KeyMap v
KeyMap.singleton Key
"field" (BotConfigReplyToMedia_DynamicFieldName -> Value
forall a. ToJSON a => a -> Value
J.toJSON BotConfigReplyToMedia_DynamicFieldName
x)
toJSON (BotConfigReplyToMedia_MessageTemplateEntry_DynamicSubstitution_ExtractedValue BotConfigReplyToMedia_DynamicExtractedValueName
x) =
Object -> Value
J.Object (Object -> Value) -> Object -> Value
forall a b. (a -> b) -> a -> b
$ Key -> Value -> Object
forall v. Key -> v -> KeyMap v
KeyMap.singleton Key
"extracted_value" (BotConfigReplyToMedia_DynamicExtractedValueName -> Value
forall a. ToJSON a => a -> Value
J.toJSON BotConfigReplyToMedia_DynamicExtractedValueName
x)
instance J.FromJSON BotConfigReplyToMedia_MessageTemplateEntry where
parseJSON :: Value -> Parser BotConfigReplyToMedia_MessageTemplateEntry
parseJSON (J.String Text
x) = BotConfigReplyToMedia_MessageTemplateEntry
-> Parser BotConfigReplyToMedia_MessageTemplateEntry
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (BotConfigReplyToMedia_MessageTemplateEntry
-> Parser BotConfigReplyToMedia_MessageTemplateEntry)
-> BotConfigReplyToMedia_MessageTemplateEntry
-> Parser BotConfigReplyToMedia_MessageTemplateEntry
forall a b. (a -> b) -> a -> b
$ Text -> BotConfigReplyToMedia_MessageTemplateEntry
BotConfigReplyToMedia_MessageTemplateEntry_PlainString Text
x
parseJSON Value
jsonValue
= ([BotConfigReplyToMedia_MessageTemplateEntry]
-> Value -> Parser BotConfigReplyToMedia_MessageTemplateEntry)
-> Value
-> [BotConfigReplyToMedia_MessageTemplateEntry]
-> Parser BotConfigReplyToMedia_MessageTemplateEntry
forall a b c. (a -> b -> c) -> b -> a -> c
flip [BotConfigReplyToMedia_MessageTemplateEntry]
-> Value -> Parser BotConfigReplyToMedia_MessageTemplateEntry
forall a. (Typeable a, ToJSON a) => [a] -> Value -> Parser a
parseJsonFromVariantsEqualityCheck Value
jsonValue
([BotConfigReplyToMedia_MessageTemplateEntry]
-> Parser BotConfigReplyToMedia_MessageTemplateEntry)
-> [BotConfigReplyToMedia_MessageTemplateEntry]
-> Parser BotConfigReplyToMedia_MessageTemplateEntry
forall a b. (a -> b) -> a -> b
$ [BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_MessageTemplateEntry
BotConfigReplyToMedia_MessageTemplateEntry_DynamicSubstitution_Field BotConfigReplyToMedia_DynamicFieldName
x | BotConfigReplyToMedia_DynamicFieldName
x ← [BotConfigReplyToMedia_DynamicFieldName
forall a. Bounded a => a
minBound .. BotConfigReplyToMedia_DynamicFieldName
forall a. Bounded a => a
maxBound]]
[BotConfigReplyToMedia_MessageTemplateEntry]
-> [BotConfigReplyToMedia_MessageTemplateEntry]
-> [BotConfigReplyToMedia_MessageTemplateEntry]
forall a. Semigroup a => a -> a -> a
<> [BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_MessageTemplateEntry
BotConfigReplyToMedia_MessageTemplateEntry_DynamicSubstitution_ExtractedValue BotConfigReplyToMedia_DynamicExtractedValueName
x | BotConfigReplyToMedia_DynamicExtractedValueName
x ← [BotConfigReplyToMedia_DynamicExtractedValueName
forall a. Bounded a => a
minBound .. BotConfigReplyToMedia_DynamicExtractedValueName
forall a. Bounded a => a
maxBound]]
data BotConfigReplyToMedia_DynamicFieldName
= BotConfigReplyToMedia_DynamicFieldName_MsgType
| BotConfigReplyToMedia_DynamicFieldName_Body
| BotConfigReplyToMedia_DynamicFieldName_Url
deriving stock ((forall x.
BotConfigReplyToMedia_DynamicFieldName
-> Rep BotConfigReplyToMedia_DynamicFieldName x)
-> (forall x.
Rep BotConfigReplyToMedia_DynamicFieldName x
-> BotConfigReplyToMedia_DynamicFieldName)
-> Generic BotConfigReplyToMedia_DynamicFieldName
forall x.
Rep BotConfigReplyToMedia_DynamicFieldName x
-> BotConfigReplyToMedia_DynamicFieldName
forall x.
BotConfigReplyToMedia_DynamicFieldName
-> Rep BotConfigReplyToMedia_DynamicFieldName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
BotConfigReplyToMedia_DynamicFieldName
-> Rep BotConfigReplyToMedia_DynamicFieldName x
from :: forall x.
BotConfigReplyToMedia_DynamicFieldName
-> Rep BotConfigReplyToMedia_DynamicFieldName x
$cto :: forall x.
Rep BotConfigReplyToMedia_DynamicFieldName x
-> BotConfigReplyToMedia_DynamicFieldName
to :: forall x.
Rep BotConfigReplyToMedia_DynamicFieldName x
-> BotConfigReplyToMedia_DynamicFieldName
Generic, BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName -> Bool
(BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName -> Bool)
-> (BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName -> Bool)
-> Eq BotConfigReplyToMedia_DynamicFieldName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName -> Bool
== :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName -> Bool
$c/= :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName -> Bool
/= :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName -> Bool
Eq, Int -> BotConfigReplyToMedia_DynamicFieldName -> ShowS
[BotConfigReplyToMedia_DynamicFieldName] -> ShowS
BotConfigReplyToMedia_DynamicFieldName -> String
(Int -> BotConfigReplyToMedia_DynamicFieldName -> ShowS)
-> (BotConfigReplyToMedia_DynamicFieldName -> String)
-> ([BotConfigReplyToMedia_DynamicFieldName] -> ShowS)
-> Show BotConfigReplyToMedia_DynamicFieldName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BotConfigReplyToMedia_DynamicFieldName -> ShowS
showsPrec :: Int -> BotConfigReplyToMedia_DynamicFieldName -> ShowS
$cshow :: BotConfigReplyToMedia_DynamicFieldName -> String
show :: BotConfigReplyToMedia_DynamicFieldName -> String
$cshowList :: [BotConfigReplyToMedia_DynamicFieldName] -> ShowS
showList :: [BotConfigReplyToMedia_DynamicFieldName] -> ShowS
Show, BotConfigReplyToMedia_DynamicFieldName
BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> Bounded BotConfigReplyToMedia_DynamicFieldName
forall a. a -> a -> Bounded a
$cminBound :: BotConfigReplyToMedia_DynamicFieldName
minBound :: BotConfigReplyToMedia_DynamicFieldName
$cmaxBound :: BotConfigReplyToMedia_DynamicFieldName
maxBound :: BotConfigReplyToMedia_DynamicFieldName
Bounded, Int -> BotConfigReplyToMedia_DynamicFieldName
BotConfigReplyToMedia_DynamicFieldName -> Int
BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
(BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName)
-> (BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName)
-> (Int -> BotConfigReplyToMedia_DynamicFieldName)
-> (BotConfigReplyToMedia_DynamicFieldName -> Int)
-> (BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName])
-> (BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName])
-> (BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName])
-> (BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName])
-> Enum BotConfigReplyToMedia_DynamicFieldName
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
succ :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
$cpred :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
pred :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
$ctoEnum :: Int -> BotConfigReplyToMedia_DynamicFieldName
toEnum :: Int -> BotConfigReplyToMedia_DynamicFieldName
$cfromEnum :: BotConfigReplyToMedia_DynamicFieldName -> Int
fromEnum :: BotConfigReplyToMedia_DynamicFieldName -> Int
$cenumFrom :: BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
enumFrom :: BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
$cenumFromThen :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
enumFromThen :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
$cenumFromTo :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
enumFromTo :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
$cenumFromThenTo :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
enumFromThenTo :: BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> BotConfigReplyToMedia_DynamicFieldName
-> [BotConfigReplyToMedia_DynamicFieldName]
Enum)
instance J.ToJSON BotConfigReplyToMedia_DynamicFieldName where
toJSON :: BotConfigReplyToMedia_DynamicFieldName -> Value
toJSON BotConfigReplyToMedia_DynamicFieldName
BotConfigReplyToMedia_DynamicFieldName_MsgType = Text -> Value
J.String Text
"msgtype"
toJSON BotConfigReplyToMedia_DynamicFieldName
BotConfigReplyToMedia_DynamicFieldName_Body = Text -> Value
J.String Text
"body"
toJSON BotConfigReplyToMedia_DynamicFieldName
BotConfigReplyToMedia_DynamicFieldName_Url = Text -> Value
J.String Text
"url"
instance J.FromJSON BotConfigReplyToMedia_DynamicFieldName where
parseJSON :: Value -> Parser BotConfigReplyToMedia_DynamicFieldName
parseJSON = Value -> Parser BotConfigReplyToMedia_DynamicFieldName
forall a.
(Typeable a, ToJSON a, Bounded a, Enum a) =>
Value -> Parser a
parseJsonEnum
data
=
deriving stock ((forall x.
BotConfigReplyToMedia_DynamicExtractedValueName
-> Rep BotConfigReplyToMedia_DynamicExtractedValueName x)
-> (forall x.
Rep BotConfigReplyToMedia_DynamicExtractedValueName x
-> BotConfigReplyToMedia_DynamicExtractedValueName)
-> Generic BotConfigReplyToMedia_DynamicExtractedValueName
forall x.
Rep BotConfigReplyToMedia_DynamicExtractedValueName x
-> BotConfigReplyToMedia_DynamicExtractedValueName
forall x.
BotConfigReplyToMedia_DynamicExtractedValueName
-> Rep BotConfigReplyToMedia_DynamicExtractedValueName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
BotConfigReplyToMedia_DynamicExtractedValueName
-> Rep BotConfigReplyToMedia_DynamicExtractedValueName x
from :: forall x.
BotConfigReplyToMedia_DynamicExtractedValueName
-> Rep BotConfigReplyToMedia_DynamicExtractedValueName x
$cto :: forall x.
Rep BotConfigReplyToMedia_DynamicExtractedValueName x
-> BotConfigReplyToMedia_DynamicExtractedValueName
to :: forall x.
Rep BotConfigReplyToMedia_DynamicExtractedValueName x
-> BotConfigReplyToMedia_DynamicExtractedValueName
Generic, BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName -> Bool
(BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName -> Bool)
-> (BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName -> Bool)
-> Eq BotConfigReplyToMedia_DynamicExtractedValueName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName -> Bool
== :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName -> Bool
$c/= :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName -> Bool
/= :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName -> Bool
Eq, Int -> BotConfigReplyToMedia_DynamicExtractedValueName -> ShowS
[BotConfigReplyToMedia_DynamicExtractedValueName] -> ShowS
BotConfigReplyToMedia_DynamicExtractedValueName -> String
(Int -> BotConfigReplyToMedia_DynamicExtractedValueName -> ShowS)
-> (BotConfigReplyToMedia_DynamicExtractedValueName -> String)
-> ([BotConfigReplyToMedia_DynamicExtractedValueName] -> ShowS)
-> Show BotConfigReplyToMedia_DynamicExtractedValueName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BotConfigReplyToMedia_DynamicExtractedValueName -> ShowS
showsPrec :: Int -> BotConfigReplyToMedia_DynamicExtractedValueName -> ShowS
$cshow :: BotConfigReplyToMedia_DynamicExtractedValueName -> String
show :: BotConfigReplyToMedia_DynamicExtractedValueName -> String
$cshowList :: [BotConfigReplyToMedia_DynamicExtractedValueName] -> ShowS
showList :: [BotConfigReplyToMedia_DynamicExtractedValueName] -> ShowS
Show, BotConfigReplyToMedia_DynamicExtractedValueName
BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> Bounded BotConfigReplyToMedia_DynamicExtractedValueName
forall a. a -> a -> Bounded a
$cminBound :: BotConfigReplyToMedia_DynamicExtractedValueName
minBound :: BotConfigReplyToMedia_DynamicExtractedValueName
$cmaxBound :: BotConfigReplyToMedia_DynamicExtractedValueName
maxBound :: BotConfigReplyToMedia_DynamicExtractedValueName
Bounded, Int -> BotConfigReplyToMedia_DynamicExtractedValueName
BotConfigReplyToMedia_DynamicExtractedValueName -> Int
BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
(BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName)
-> (BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName)
-> (Int -> BotConfigReplyToMedia_DynamicExtractedValueName)
-> (BotConfigReplyToMedia_DynamicExtractedValueName -> Int)
-> (BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName])
-> (BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName])
-> (BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName])
-> (BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName])
-> Enum BotConfigReplyToMedia_DynamicExtractedValueName
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
succ :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
$cpred :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
pred :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
$ctoEnum :: Int -> BotConfigReplyToMedia_DynamicExtractedValueName
toEnum :: Int -> BotConfigReplyToMedia_DynamicExtractedValueName
$cfromEnum :: BotConfigReplyToMedia_DynamicExtractedValueName -> Int
fromEnum :: BotConfigReplyToMedia_DynamicExtractedValueName -> Int
$cenumFrom :: BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
enumFrom :: BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
$cenumFromThen :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
enumFromThen :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
$cenumFromTo :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
enumFromTo :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
$cenumFromThenTo :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
enumFromThenTo :: BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> BotConfigReplyToMedia_DynamicExtractedValueName
-> [BotConfigReplyToMedia_DynamicExtractedValueName]
Enum)
instance J.ToJSON BotConfigReplyToMedia_DynamicExtractedValueName where
toJSON :: BotConfigReplyToMedia_DynamicExtractedValueName -> Value
toJSON BotConfigReplyToMedia_DynamicExtractedValueName
BotConfigReplyToMedia_DynamicExtractedValueName_MediaId = Text -> Value
J.String Text
"media_id"
instance J.FromJSON BotConfigReplyToMedia_DynamicExtractedValueName where
parseJSON :: Value -> Parser BotConfigReplyToMedia_DynamicExtractedValueName
parseJSON = Value -> Parser BotConfigReplyToMedia_DynamicExtractedValueName
forall a.
(Typeable a, ToJSON a, Bounded a, Enum a) =>
Value -> Parser a
parseJsonEnum
parseJsonEnum ∷ ∀a. (Typeable a, J.ToJSON a, Bounded a, Enum a) ⇒ J.Value -> J.Parser a
parseJsonEnum :: forall a.
(Typeable a, ToJSON a, Bounded a, Enum a) =>
Value -> Parser a
parseJsonEnum = [a] -> Value -> Parser a
forall a. (Typeable a, ToJSON a) => [a] -> Value -> Parser a
parseJsonFromVariantsEqualityCheck [a
forall a. Bounded a => a
minBound .. a
forall a. Bounded a => a
maxBound ∷ a]
parseJsonFromVariantsEqualityCheck
∷ ∀a. (Typeable a, J.ToJSON a)
⇒ [a]
→ J.Value
→ J.Parser a
parseJsonFromVariantsEqualityCheck :: forall a. (Typeable a, ToJSON a) => [a] -> Value -> Parser a
parseJsonFromVariantsEqualityCheck [a]
variants Value
jsonValue =
case (a -> Bool) -> [a] -> Maybe a
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a
find ((Value
jsonValue Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
==) (Value -> Bool) -> (a -> Value) -> a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Value
forall a. ToJSON a => a -> Value
J.toJSON) [a]
variants of
Just a
x → a -> Parser a
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
x
Maybe a
Nothing →
String -> Parser a
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser a) -> String -> Parser a
forall a b. (a -> b) -> a -> b
$ [String] -> String
forall a. Monoid a => [a] -> a
mconcat
[ String
"Failed to parse ", (TypeRep -> String
forall a. Show a => a -> String
show (TypeRep -> String) -> (Proxy a -> TypeRep) -> Proxy a -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Proxy a -> TypeRep
forall {k} (proxy :: k -> *) (a :: k).
Typeable a =>
proxy a -> TypeRep
typeRep) (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @a), String
" "
, String
"(unexpected value: ", Value -> String
forall a. Show a => a -> String
show Value
jsonValue, String
")"
]