{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}
module WebDriverPreCore.BiDi.WebExtensions
( WebExtensionID (..),
WebExtensionInstall (..),
WebExtensionUninstall (..),
WebExtensionResult (..),
)
where
import Data.Aeson (FromJSON, ToJSON (..), Value, object, (.=))
import Data.Text (Text)
import GHC.Generics (Generic)
newtype WebExtensionID = MkWebExtensionID Text
deriving newtype (Int -> WebExtensionID -> ShowS
[WebExtensionID] -> ShowS
WebExtensionID -> String
(Int -> WebExtensionID -> ShowS)
-> (WebExtensionID -> String)
-> ([WebExtensionID] -> ShowS)
-> Show WebExtensionID
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> WebExtensionID -> ShowS
showsPrec :: Int -> WebExtensionID -> ShowS
$cshow :: WebExtensionID -> String
show :: WebExtensionID -> String
$cshowList :: [WebExtensionID] -> ShowS
showList :: [WebExtensionID] -> ShowS
Show, WebExtensionID -> WebExtensionID -> Bool
(WebExtensionID -> WebExtensionID -> Bool)
-> (WebExtensionID -> WebExtensionID -> Bool) -> Eq WebExtensionID
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WebExtensionID -> WebExtensionID -> Bool
== :: WebExtensionID -> WebExtensionID -> Bool
$c/= :: WebExtensionID -> WebExtensionID -> Bool
/= :: WebExtensionID -> WebExtensionID -> Bool
Eq, Maybe WebExtensionID
Value -> Parser [WebExtensionID]
Value -> Parser WebExtensionID
(Value -> Parser WebExtensionID)
-> (Value -> Parser [WebExtensionID])
-> Maybe WebExtensionID
-> FromJSON WebExtensionID
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser WebExtensionID
parseJSON :: Value -> Parser WebExtensionID
$cparseJSONList :: Value -> Parser [WebExtensionID]
parseJSONList :: Value -> Parser [WebExtensionID]
$comittedField :: Maybe WebExtensionID
omittedField :: Maybe WebExtensionID
FromJSON, [WebExtensionID] -> Value
[WebExtensionID] -> Encoding
WebExtensionID -> Bool
WebExtensionID -> Value
WebExtensionID -> Encoding
(WebExtensionID -> Value)
-> (WebExtensionID -> Encoding)
-> ([WebExtensionID] -> Value)
-> ([WebExtensionID] -> Encoding)
-> (WebExtensionID -> Bool)
-> ToJSON WebExtensionID
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: WebExtensionID -> Value
toJSON :: WebExtensionID -> Value
$ctoEncoding :: WebExtensionID -> Encoding
toEncoding :: WebExtensionID -> Encoding
$ctoJSONList :: [WebExtensionID] -> Value
toJSONList :: [WebExtensionID] -> Value
$ctoEncodingList :: [WebExtensionID] -> Encoding
toEncodingList :: [WebExtensionID] -> Encoding
$comitField :: WebExtensionID -> Bool
omitField :: WebExtensionID -> Bool
ToJSON)
data WebExtensionInstall
= ExtensionPath Text
| ExtensionArchivePath Text
| ExtensionBase64Encoded Text
deriving (Int -> WebExtensionInstall -> ShowS
[WebExtensionInstall] -> ShowS
WebExtensionInstall -> String
(Int -> WebExtensionInstall -> ShowS)
-> (WebExtensionInstall -> String)
-> ([WebExtensionInstall] -> ShowS)
-> Show WebExtensionInstall
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> WebExtensionInstall -> ShowS
showsPrec :: Int -> WebExtensionInstall -> ShowS
$cshow :: WebExtensionInstall -> String
show :: WebExtensionInstall -> String
$cshowList :: [WebExtensionInstall] -> ShowS
showList :: [WebExtensionInstall] -> ShowS
Show, WebExtensionInstall -> WebExtensionInstall -> Bool
(WebExtensionInstall -> WebExtensionInstall -> Bool)
-> (WebExtensionInstall -> WebExtensionInstall -> Bool)
-> Eq WebExtensionInstall
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WebExtensionInstall -> WebExtensionInstall -> Bool
== :: WebExtensionInstall -> WebExtensionInstall -> Bool
$c/= :: WebExtensionInstall -> WebExtensionInstall -> Bool
/= :: WebExtensionInstall -> WebExtensionInstall -> Bool
Eq, (forall x. WebExtensionInstall -> Rep WebExtensionInstall x)
-> (forall x. Rep WebExtensionInstall x -> WebExtensionInstall)
-> Generic WebExtensionInstall
forall x. Rep WebExtensionInstall x -> WebExtensionInstall
forall x. WebExtensionInstall -> Rep WebExtensionInstall x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. WebExtensionInstall -> Rep WebExtensionInstall x
from :: forall x. WebExtensionInstall -> Rep WebExtensionInstall x
$cto :: forall x. Rep WebExtensionInstall x -> WebExtensionInstall
to :: forall x. Rep WebExtensionInstall x -> WebExtensionInstall
Generic)
instance ToJSON WebExtensionInstall where
toJSON :: WebExtensionInstall -> Value
toJSON :: WebExtensionInstall -> Value
toJSON WebExtensionInstall
ex =
[Pair] -> Value
object
[ Key
"extensionData" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Value
extensionData
]
where
extensionData :: Value
extensionData = case WebExtensionInstall
ex of
ExtensionPath Text
path ->
[Pair] -> Value
object
[ Key
"type" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
"path",
Key
"path" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
path
]
ExtensionArchivePath Text
path ->
[Pair] -> Value
object
[ Key
"type" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
"archivePath",
Key
"path" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
path
]
ExtensionBase64Encoded Text
value ->
[Pair] -> Value
object
[ Key
"type" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
"base64",
Key
"value" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
value
]
newtype WebExtensionUninstall = MkWebExtensionUninstall
{ WebExtensionUninstall -> WebExtensionID
extension :: WebExtensionID
}
deriving (Int -> WebExtensionUninstall -> ShowS
[WebExtensionUninstall] -> ShowS
WebExtensionUninstall -> String
(Int -> WebExtensionUninstall -> ShowS)
-> (WebExtensionUninstall -> String)
-> ([WebExtensionUninstall] -> ShowS)
-> Show WebExtensionUninstall
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> WebExtensionUninstall -> ShowS
showsPrec :: Int -> WebExtensionUninstall -> ShowS
$cshow :: WebExtensionUninstall -> String
show :: WebExtensionUninstall -> String
$cshowList :: [WebExtensionUninstall] -> ShowS
showList :: [WebExtensionUninstall] -> ShowS
Show, WebExtensionUninstall -> WebExtensionUninstall -> Bool
(WebExtensionUninstall -> WebExtensionUninstall -> Bool)
-> (WebExtensionUninstall -> WebExtensionUninstall -> Bool)
-> Eq WebExtensionUninstall
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WebExtensionUninstall -> WebExtensionUninstall -> Bool
== :: WebExtensionUninstall -> WebExtensionUninstall -> Bool
$c/= :: WebExtensionUninstall -> WebExtensionUninstall -> Bool
/= :: WebExtensionUninstall -> WebExtensionUninstall -> Bool
Eq, (forall x. WebExtensionUninstall -> Rep WebExtensionUninstall x)
-> (forall x. Rep WebExtensionUninstall x -> WebExtensionUninstall)
-> Generic WebExtensionUninstall
forall x. Rep WebExtensionUninstall x -> WebExtensionUninstall
forall x. WebExtensionUninstall -> Rep WebExtensionUninstall x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. WebExtensionUninstall -> Rep WebExtensionUninstall x
from :: forall x. WebExtensionUninstall -> Rep WebExtensionUninstall x
$cto :: forall x. Rep WebExtensionUninstall x -> WebExtensionUninstall
to :: forall x. Rep WebExtensionUninstall x -> WebExtensionUninstall
Generic)
instance ToJSON WebExtensionUninstall where
toJSON :: WebExtensionUninstall -> Value
toJSON :: WebExtensionUninstall -> Value
toJSON (MkWebExtensionUninstall WebExtensionID
extId) =
[Pair] -> Value
object
[ Key
"extension" Key -> WebExtensionID -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= WebExtensionID
extId
]
data WebExtensionResult = WebExtensionInstallResult
{ WebExtensionResult -> WebExtensionID
extension :: WebExtensionID
}
deriving (Int -> WebExtensionResult -> ShowS
[WebExtensionResult] -> ShowS
WebExtensionResult -> String
(Int -> WebExtensionResult -> ShowS)
-> (WebExtensionResult -> String)
-> ([WebExtensionResult] -> ShowS)
-> Show WebExtensionResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> WebExtensionResult -> ShowS
showsPrec :: Int -> WebExtensionResult -> ShowS
$cshow :: WebExtensionResult -> String
show :: WebExtensionResult -> String
$cshowList :: [WebExtensionResult] -> ShowS
showList :: [WebExtensionResult] -> ShowS
Show, WebExtensionResult -> WebExtensionResult -> Bool
(WebExtensionResult -> WebExtensionResult -> Bool)
-> (WebExtensionResult -> WebExtensionResult -> Bool)
-> Eq WebExtensionResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WebExtensionResult -> WebExtensionResult -> Bool
== :: WebExtensionResult -> WebExtensionResult -> Bool
$c/= :: WebExtensionResult -> WebExtensionResult -> Bool
/= :: WebExtensionResult -> WebExtensionResult -> Bool
Eq, (forall x. WebExtensionResult -> Rep WebExtensionResult x)
-> (forall x. Rep WebExtensionResult x -> WebExtensionResult)
-> Generic WebExtensionResult
forall x. Rep WebExtensionResult x -> WebExtensionResult
forall x. WebExtensionResult -> Rep WebExtensionResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. WebExtensionResult -> Rep WebExtensionResult x
from :: forall x. WebExtensionResult -> Rep WebExtensionResult x
$cto :: forall x. Rep WebExtensionResult x -> WebExtensionResult
to :: forall x. Rep WebExtensionResult x -> WebExtensionResult
Generic, [WebExtensionResult] -> Value
[WebExtensionResult] -> Encoding
WebExtensionResult -> Bool
WebExtensionResult -> Value
WebExtensionResult -> Encoding
(WebExtensionResult -> Value)
-> (WebExtensionResult -> Encoding)
-> ([WebExtensionResult] -> Value)
-> ([WebExtensionResult] -> Encoding)
-> (WebExtensionResult -> Bool)
-> ToJSON WebExtensionResult
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: WebExtensionResult -> Value
toJSON :: WebExtensionResult -> Value
$ctoEncoding :: WebExtensionResult -> Encoding
toEncoding :: WebExtensionResult -> Encoding
$ctoJSONList :: [WebExtensionResult] -> Value
toJSONList :: [WebExtensionResult] -> Value
$ctoEncodingList :: [WebExtensionResult] -> Encoding
toEncodingList :: [WebExtensionResult] -> Encoding
$comitField :: WebExtensionResult -> Bool
omitField :: WebExtensionResult -> Bool
ToJSON)
instance FromJSON WebExtensionResult