{-# OPTIONS_HADDOCK hide #-}
module WebDriverPreCore.Capabilities
( FullCapabilities (..),
Capabilities (..),
UnhandledPromptBehavior (..),
PageLoadStrategy (..),
BrowserName (..),
PlatformName (..),
Proxy (..),
Timeouts (..),
VendorSpecific (..),
SocksProxy (..),
PerfLoggingPrefs (..),
MobileEmulation (..),
LogLevel (..),
LogSettings (..),
DeviceMetrics (..),
minCapabilities,
minFullCapabilities,
minFirefoxCapabilities,
minChromeCapabilities,
)
where
import Control.Applicative (Applicative (..), asum)
import Control.Monad (Monad ((>>=)), MonadFail (..))
import Data.Aeson
( FromJSON (parseJSON),
Key,
KeyValue ((.=)),
Object,
ToJSON (toJSON),
Value,
defaultOptions,
genericParseJSON,
genericToJSON,
object,
withObject,
withText,
(.:),
(.:?),
)
import Data.Aeson.Key (fromText)
import Data.Aeson.Types
( Pair,
Parser,
Value (..),
omitNothingFields,
parseField,
parseFieldMaybe,
)
import Data.Bool (Bool (..))
import Data.Enum (Enum)
import Data.Eq (Eq)
import Data.Function (($), (.))
import Data.Functor ((<$>))
import Data.Int (Int)
import Data.Map.Strict (Map)
import Data.Maybe (Maybe (..), catMaybes, maybe)
import Data.Semigroup (Semigroup (..))
import Data.Text (Text)
import Data.Vector (fromList)
import GHC.Enum (Bounded)
import GHC.Float (Double)
import GHC.Generics (Generic)
import GHC.IO (FilePath)
import GHC.Show (Show (..))
import WebDriverPreCore.Internal.Utils (opt)
data FullCapabilities = MkFullCapabilities
{
FullCapabilities -> Maybe Capabilities
alwaysMatch :: Maybe Capabilities,
FullCapabilities -> [Capabilities]
firstMatch :: [Capabilities]
}
deriving (Int -> FullCapabilities -> ShowS
[FullCapabilities] -> ShowS
FullCapabilities -> String
(Int -> FullCapabilities -> ShowS)
-> (FullCapabilities -> String)
-> ([FullCapabilities] -> ShowS)
-> Show FullCapabilities
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FullCapabilities -> ShowS
showsPrec :: Int -> FullCapabilities -> ShowS
$cshow :: FullCapabilities -> String
show :: FullCapabilities -> String
$cshowList :: [FullCapabilities] -> ShowS
showList :: [FullCapabilities] -> ShowS
Show, (forall x. FullCapabilities -> Rep FullCapabilities x)
-> (forall x. Rep FullCapabilities x -> FullCapabilities)
-> Generic FullCapabilities
forall x. Rep FullCapabilities x -> FullCapabilities
forall x. FullCapabilities -> Rep FullCapabilities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. FullCapabilities -> Rep FullCapabilities x
from :: forall x. FullCapabilities -> Rep FullCapabilities x
$cto :: forall x. Rep FullCapabilities x -> FullCapabilities
to :: forall x. Rep FullCapabilities x -> FullCapabilities
Generic)
instance ToJSON FullCapabilities where
toJSON :: FullCapabilities -> Value
toJSON :: FullCapabilities -> Value
toJSON MkFullCapabilities {Maybe Capabilities
alwaysMatch :: FullCapabilities -> Maybe Capabilities
alwaysMatch :: Maybe Capabilities
alwaysMatch, [Capabilities]
firstMatch :: FullCapabilities -> [Capabilities]
firstMatch :: [Capabilities]
firstMatch} =
[Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$
[ Key
"capabilities" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ([Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
catMaybes [Key -> Maybe Capabilities -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"alwaysMatch" (Maybe Capabilities -> Maybe Pair)
-> Maybe Capabilities -> Maybe Pair
forall a b. (a -> b) -> a -> b
$ Maybe Capabilities
alwaysMatch]),
Key
"firstMatch" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Value
firstMatch'
]
where
firstMatch' :: Value
firstMatch' :: Value
firstMatch' = Array -> Value
Array (Array -> Value) -> ([Value] -> Array) -> [Value] -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Value] -> Array
forall a. [a] -> Vector a
fromList ([Value] -> Value) -> [Value] -> Value
forall a b. (a -> b) -> a -> b
$ Capabilities -> Value
forall a. ToJSON a => a -> Value
toJSON (Capabilities -> Value) -> [Capabilities] -> [Value]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Capabilities]
firstMatch
instance FromJSON FullCapabilities where
parseJSON :: Value -> Parser FullCapabilities
parseJSON :: Value -> Parser FullCapabilities
parseJSON =
String
-> (Object -> Parser FullCapabilities)
-> Value
-> Parser FullCapabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"FullCapabilities" ((Object -> Parser FullCapabilities)
-> Value -> Parser FullCapabilities)
-> (Object -> Parser FullCapabilities)
-> Value
-> Parser FullCapabilities
forall a b. (a -> b) -> a -> b
$ \Object
v ->
do
capabilities <- Object
v Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"capabilities"
alwaysMatch <- capabilities .:? "alwaysMatch"
firstMatch <- capabilities .: "firstMatch"
pure MkFullCapabilities {..}
minFullCapabilities :: BrowserName -> FullCapabilities
minFullCapabilities :: BrowserName -> FullCapabilities
minFullCapabilities BrowserName
browserName =
MkFullCapabilities
{ alwaysMatch :: Maybe Capabilities
alwaysMatch = Capabilities -> Maybe Capabilities
forall a. a -> Maybe a
Just (Capabilities -> Maybe Capabilities)
-> Capabilities -> Maybe Capabilities
forall a b. (a -> b) -> a -> b
$ BrowserName -> Capabilities
minCapabilities BrowserName
browserName,
firstMatch :: [Capabilities]
firstMatch = []
}
minCapabilities :: BrowserName -> Capabilities
minCapabilities :: BrowserName -> Capabilities
minCapabilities BrowserName
browserName =
MkCapabilities
{ browserName :: Maybe BrowserName
browserName = BrowserName -> Maybe BrowserName
forall a. a -> Maybe a
Just BrowserName
browserName,
browserVersion :: Maybe Text
browserVersion = Maybe Text
forall a. Maybe a
Nothing,
platformName :: Maybe PlatformName
platformName = Maybe PlatformName
forall a. Maybe a
Nothing,
acceptInsecureCerts :: Maybe Bool
acceptInsecureCerts = Maybe Bool
forall a. Maybe a
Nothing,
pageLoadStrategy :: Maybe PageLoadStrategy
pageLoadStrategy = Maybe PageLoadStrategy
forall a. Maybe a
Nothing,
proxy :: Maybe Proxy
proxy = Maybe Proxy
forall a. Maybe a
Nothing,
timeouts :: Maybe Timeouts
timeouts = Maybe Timeouts
forall a. Maybe a
Nothing,
strictFileInteractability :: Maybe Bool
strictFileInteractability = Maybe Bool
forall a. Maybe a
Nothing,
unhandledPromptBehavior :: Maybe UnhandledPromptBehavior
unhandledPromptBehavior = Maybe UnhandledPromptBehavior
forall a. Maybe a
Nothing,
vendorSpecific :: Maybe VendorSpecific
vendorSpecific = Maybe VendorSpecific
forall a. Maybe a
Nothing
}
minFirefoxCapabilities :: FullCapabilities
minFirefoxCapabilities :: FullCapabilities
minFirefoxCapabilities = BrowserName -> FullCapabilities
minFullCapabilities BrowserName
Firefox
minChromeCapabilities :: FullCapabilities
minChromeCapabilities :: FullCapabilities
minChromeCapabilities = BrowserName -> FullCapabilities
minFullCapabilities BrowserName
Chrome
data UnhandledPromptBehavior
= Dismiss
| Accept
| DismissAndNotify
| AcceptAndNotify
| Ignore
deriving (Int -> UnhandledPromptBehavior -> ShowS
[UnhandledPromptBehavior] -> ShowS
UnhandledPromptBehavior -> String
(Int -> UnhandledPromptBehavior -> ShowS)
-> (UnhandledPromptBehavior -> String)
-> ([UnhandledPromptBehavior] -> ShowS)
-> Show UnhandledPromptBehavior
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UnhandledPromptBehavior -> ShowS
showsPrec :: Int -> UnhandledPromptBehavior -> ShowS
$cshow :: UnhandledPromptBehavior -> String
show :: UnhandledPromptBehavior -> String
$cshowList :: [UnhandledPromptBehavior] -> ShowS
showList :: [UnhandledPromptBehavior] -> ShowS
Show, (forall x.
UnhandledPromptBehavior -> Rep UnhandledPromptBehavior x)
-> (forall x.
Rep UnhandledPromptBehavior x -> UnhandledPromptBehavior)
-> Generic UnhandledPromptBehavior
forall x. Rep UnhandledPromptBehavior x -> UnhandledPromptBehavior
forall x. UnhandledPromptBehavior -> Rep UnhandledPromptBehavior x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. UnhandledPromptBehavior -> Rep UnhandledPromptBehavior x
from :: forall x. UnhandledPromptBehavior -> Rep UnhandledPromptBehavior x
$cto :: forall x. Rep UnhandledPromptBehavior x -> UnhandledPromptBehavior
to :: forall x. Rep UnhandledPromptBehavior x -> UnhandledPromptBehavior
Generic, Int -> UnhandledPromptBehavior
UnhandledPromptBehavior -> Int
UnhandledPromptBehavior -> [UnhandledPromptBehavior]
UnhandledPromptBehavior -> UnhandledPromptBehavior
UnhandledPromptBehavior
-> UnhandledPromptBehavior -> [UnhandledPromptBehavior]
UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> [UnhandledPromptBehavior]
(UnhandledPromptBehavior -> UnhandledPromptBehavior)
-> (UnhandledPromptBehavior -> UnhandledPromptBehavior)
-> (Int -> UnhandledPromptBehavior)
-> (UnhandledPromptBehavior -> Int)
-> (UnhandledPromptBehavior -> [UnhandledPromptBehavior])
-> (UnhandledPromptBehavior
-> UnhandledPromptBehavior -> [UnhandledPromptBehavior])
-> (UnhandledPromptBehavior
-> UnhandledPromptBehavior -> [UnhandledPromptBehavior])
-> (UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> [UnhandledPromptBehavior])
-> Enum UnhandledPromptBehavior
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 :: UnhandledPromptBehavior -> UnhandledPromptBehavior
succ :: UnhandledPromptBehavior -> UnhandledPromptBehavior
$cpred :: UnhandledPromptBehavior -> UnhandledPromptBehavior
pred :: UnhandledPromptBehavior -> UnhandledPromptBehavior
$ctoEnum :: Int -> UnhandledPromptBehavior
toEnum :: Int -> UnhandledPromptBehavior
$cfromEnum :: UnhandledPromptBehavior -> Int
fromEnum :: UnhandledPromptBehavior -> Int
$cenumFrom :: UnhandledPromptBehavior -> [UnhandledPromptBehavior]
enumFrom :: UnhandledPromptBehavior -> [UnhandledPromptBehavior]
$cenumFromThen :: UnhandledPromptBehavior
-> UnhandledPromptBehavior -> [UnhandledPromptBehavior]
enumFromThen :: UnhandledPromptBehavior
-> UnhandledPromptBehavior -> [UnhandledPromptBehavior]
$cenumFromTo :: UnhandledPromptBehavior
-> UnhandledPromptBehavior -> [UnhandledPromptBehavior]
enumFromTo :: UnhandledPromptBehavior
-> UnhandledPromptBehavior -> [UnhandledPromptBehavior]
$cenumFromThenTo :: UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> [UnhandledPromptBehavior]
enumFromThenTo :: UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> UnhandledPromptBehavior
-> [UnhandledPromptBehavior]
Enum, UnhandledPromptBehavior
UnhandledPromptBehavior
-> UnhandledPromptBehavior -> Bounded UnhandledPromptBehavior
forall a. a -> a -> Bounded a
$cminBound :: UnhandledPromptBehavior
minBound :: UnhandledPromptBehavior
$cmaxBound :: UnhandledPromptBehavior
maxBound :: UnhandledPromptBehavior
Bounded, UnhandledPromptBehavior -> UnhandledPromptBehavior -> Bool
(UnhandledPromptBehavior -> UnhandledPromptBehavior -> Bool)
-> (UnhandledPromptBehavior -> UnhandledPromptBehavior -> Bool)
-> Eq UnhandledPromptBehavior
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UnhandledPromptBehavior -> UnhandledPromptBehavior -> Bool
== :: UnhandledPromptBehavior -> UnhandledPromptBehavior -> Bool
$c/= :: UnhandledPromptBehavior -> UnhandledPromptBehavior -> Bool
/= :: UnhandledPromptBehavior -> UnhandledPromptBehavior -> Bool
Eq)
data PageLoadStrategy
= None'
| Eager
| Normal
deriving (Int -> PageLoadStrategy -> ShowS
[PageLoadStrategy] -> ShowS
PageLoadStrategy -> String
(Int -> PageLoadStrategy -> ShowS)
-> (PageLoadStrategy -> String)
-> ([PageLoadStrategy] -> ShowS)
-> Show PageLoadStrategy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PageLoadStrategy -> ShowS
showsPrec :: Int -> PageLoadStrategy -> ShowS
$cshow :: PageLoadStrategy -> String
show :: PageLoadStrategy -> String
$cshowList :: [PageLoadStrategy] -> ShowS
showList :: [PageLoadStrategy] -> ShowS
Show, (forall x. PageLoadStrategy -> Rep PageLoadStrategy x)
-> (forall x. Rep PageLoadStrategy x -> PageLoadStrategy)
-> Generic PageLoadStrategy
forall x. Rep PageLoadStrategy x -> PageLoadStrategy
forall x. PageLoadStrategy -> Rep PageLoadStrategy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PageLoadStrategy -> Rep PageLoadStrategy x
from :: forall x. PageLoadStrategy -> Rep PageLoadStrategy x
$cto :: forall x. Rep PageLoadStrategy x -> PageLoadStrategy
to :: forall x. Rep PageLoadStrategy x -> PageLoadStrategy
Generic, Int -> PageLoadStrategy
PageLoadStrategy -> Int
PageLoadStrategy -> [PageLoadStrategy]
PageLoadStrategy -> PageLoadStrategy
PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
PageLoadStrategy
-> PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
(PageLoadStrategy -> PageLoadStrategy)
-> (PageLoadStrategy -> PageLoadStrategy)
-> (Int -> PageLoadStrategy)
-> (PageLoadStrategy -> Int)
-> (PageLoadStrategy -> [PageLoadStrategy])
-> (PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy])
-> (PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy])
-> (PageLoadStrategy
-> PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy])
-> Enum PageLoadStrategy
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 :: PageLoadStrategy -> PageLoadStrategy
succ :: PageLoadStrategy -> PageLoadStrategy
$cpred :: PageLoadStrategy -> PageLoadStrategy
pred :: PageLoadStrategy -> PageLoadStrategy
$ctoEnum :: Int -> PageLoadStrategy
toEnum :: Int -> PageLoadStrategy
$cfromEnum :: PageLoadStrategy -> Int
fromEnum :: PageLoadStrategy -> Int
$cenumFrom :: PageLoadStrategy -> [PageLoadStrategy]
enumFrom :: PageLoadStrategy -> [PageLoadStrategy]
$cenumFromThen :: PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
enumFromThen :: PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
$cenumFromTo :: PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
enumFromTo :: PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
$cenumFromThenTo :: PageLoadStrategy
-> PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
enumFromThenTo :: PageLoadStrategy
-> PageLoadStrategy -> PageLoadStrategy -> [PageLoadStrategy]
Enum, PageLoadStrategy
PageLoadStrategy -> PageLoadStrategy -> Bounded PageLoadStrategy
forall a. a -> a -> Bounded a
$cminBound :: PageLoadStrategy
minBound :: PageLoadStrategy
$cmaxBound :: PageLoadStrategy
maxBound :: PageLoadStrategy
Bounded, PageLoadStrategy -> PageLoadStrategy -> Bool
(PageLoadStrategy -> PageLoadStrategy -> Bool)
-> (PageLoadStrategy -> PageLoadStrategy -> Bool)
-> Eq PageLoadStrategy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PageLoadStrategy -> PageLoadStrategy -> Bool
== :: PageLoadStrategy -> PageLoadStrategy -> Bool
$c/= :: PageLoadStrategy -> PageLoadStrategy -> Bool
/= :: PageLoadStrategy -> PageLoadStrategy -> Bool
Eq)
instance ToJSON PageLoadStrategy where
toJSON :: PageLoadStrategy -> Value
toJSON :: PageLoadStrategy -> Value
toJSON = \case
PageLoadStrategy
None' -> Value
"none"
PageLoadStrategy
Eager -> Value
"eager"
PageLoadStrategy
Normal -> Value
"normal"
instance FromJSON PageLoadStrategy where
parseJSON :: Value -> Parser PageLoadStrategy
parseJSON :: Value -> Parser PageLoadStrategy
parseJSON = String
-> (Text -> Parser PageLoadStrategy)
-> Value
-> Parser PageLoadStrategy
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"PageLoadStrategy" ((Text -> Parser PageLoadStrategy)
-> Value -> Parser PageLoadStrategy)
-> (Text -> Parser PageLoadStrategy)
-> Value
-> Parser PageLoadStrategy
forall a b. (a -> b) -> a -> b
$ \case
Text
"none" -> PageLoadStrategy -> Parser PageLoadStrategy
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PageLoadStrategy
None'
Text
"eager" -> PageLoadStrategy -> Parser PageLoadStrategy
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PageLoadStrategy
Eager
Text
"normal" -> PageLoadStrategy -> Parser PageLoadStrategy
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PageLoadStrategy
Normal
Text
_ -> String -> Parser PageLoadStrategy
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid PageLoadStrategy"
data BrowserName
= Chrome
| Firefox
| Safari
| Edge
| InternetExplorer
deriving (Int -> BrowserName -> ShowS
[BrowserName] -> ShowS
BrowserName -> String
(Int -> BrowserName -> ShowS)
-> (BrowserName -> String)
-> ([BrowserName] -> ShowS)
-> Show BrowserName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BrowserName -> ShowS
showsPrec :: Int -> BrowserName -> ShowS
$cshow :: BrowserName -> String
show :: BrowserName -> String
$cshowList :: [BrowserName] -> ShowS
showList :: [BrowserName] -> ShowS
Show, (forall x. BrowserName -> Rep BrowserName x)
-> (forall x. Rep BrowserName x -> BrowserName)
-> Generic BrowserName
forall x. Rep BrowserName x -> BrowserName
forall x. BrowserName -> Rep BrowserName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BrowserName -> Rep BrowserName x
from :: forall x. BrowserName -> Rep BrowserName x
$cto :: forall x. Rep BrowserName x -> BrowserName
to :: forall x. Rep BrowserName x -> BrowserName
Generic, Int -> BrowserName
BrowserName -> Int
BrowserName -> [BrowserName]
BrowserName -> BrowserName
BrowserName -> BrowserName -> [BrowserName]
BrowserName -> BrowserName -> BrowserName -> [BrowserName]
(BrowserName -> BrowserName)
-> (BrowserName -> BrowserName)
-> (Int -> BrowserName)
-> (BrowserName -> Int)
-> (BrowserName -> [BrowserName])
-> (BrowserName -> BrowserName -> [BrowserName])
-> (BrowserName -> BrowserName -> [BrowserName])
-> (BrowserName -> BrowserName -> BrowserName -> [BrowserName])
-> Enum BrowserName
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 :: BrowserName -> BrowserName
succ :: BrowserName -> BrowserName
$cpred :: BrowserName -> BrowserName
pred :: BrowserName -> BrowserName
$ctoEnum :: Int -> BrowserName
toEnum :: Int -> BrowserName
$cfromEnum :: BrowserName -> Int
fromEnum :: BrowserName -> Int
$cenumFrom :: BrowserName -> [BrowserName]
enumFrom :: BrowserName -> [BrowserName]
$cenumFromThen :: BrowserName -> BrowserName -> [BrowserName]
enumFromThen :: BrowserName -> BrowserName -> [BrowserName]
$cenumFromTo :: BrowserName -> BrowserName -> [BrowserName]
enumFromTo :: BrowserName -> BrowserName -> [BrowserName]
$cenumFromThenTo :: BrowserName -> BrowserName -> BrowserName -> [BrowserName]
enumFromThenTo :: BrowserName -> BrowserName -> BrowserName -> [BrowserName]
Enum, BrowserName
BrowserName -> BrowserName -> Bounded BrowserName
forall a. a -> a -> Bounded a
$cminBound :: BrowserName
minBound :: BrowserName
$cmaxBound :: BrowserName
maxBound :: BrowserName
Bounded, BrowserName -> BrowserName -> Bool
(BrowserName -> BrowserName -> Bool)
-> (BrowserName -> BrowserName -> Bool) -> Eq BrowserName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BrowserName -> BrowserName -> Bool
== :: BrowserName -> BrowserName -> Bool
$c/= :: BrowserName -> BrowserName -> Bool
/= :: BrowserName -> BrowserName -> Bool
Eq)
data PlatformName
= Windows
| Mac
| Linux
| Android
| IOS
deriving (Int -> PlatformName -> ShowS
[PlatformName] -> ShowS
PlatformName -> String
(Int -> PlatformName -> ShowS)
-> (PlatformName -> String)
-> ([PlatformName] -> ShowS)
-> Show PlatformName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlatformName -> ShowS
showsPrec :: Int -> PlatformName -> ShowS
$cshow :: PlatformName -> String
show :: PlatformName -> String
$cshowList :: [PlatformName] -> ShowS
showList :: [PlatformName] -> ShowS
Show, (forall x. PlatformName -> Rep PlatformName x)
-> (forall x. Rep PlatformName x -> PlatformName)
-> Generic PlatformName
forall x. Rep PlatformName x -> PlatformName
forall x. PlatformName -> Rep PlatformName x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PlatformName -> Rep PlatformName x
from :: forall x. PlatformName -> Rep PlatformName x
$cto :: forall x. Rep PlatformName x -> PlatformName
to :: forall x. Rep PlatformName x -> PlatformName
Generic, Int -> PlatformName
PlatformName -> Int
PlatformName -> [PlatformName]
PlatformName -> PlatformName
PlatformName -> PlatformName -> [PlatformName]
PlatformName -> PlatformName -> PlatformName -> [PlatformName]
(PlatformName -> PlatformName)
-> (PlatformName -> PlatformName)
-> (Int -> PlatformName)
-> (PlatformName -> Int)
-> (PlatformName -> [PlatformName])
-> (PlatformName -> PlatformName -> [PlatformName])
-> (PlatformName -> PlatformName -> [PlatformName])
-> (PlatformName -> PlatformName -> PlatformName -> [PlatformName])
-> Enum PlatformName
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 :: PlatformName -> PlatformName
succ :: PlatformName -> PlatformName
$cpred :: PlatformName -> PlatformName
pred :: PlatformName -> PlatformName
$ctoEnum :: Int -> PlatformName
toEnum :: Int -> PlatformName
$cfromEnum :: PlatformName -> Int
fromEnum :: PlatformName -> Int
$cenumFrom :: PlatformName -> [PlatformName]
enumFrom :: PlatformName -> [PlatformName]
$cenumFromThen :: PlatformName -> PlatformName -> [PlatformName]
enumFromThen :: PlatformName -> PlatformName -> [PlatformName]
$cenumFromTo :: PlatformName -> PlatformName -> [PlatformName]
enumFromTo :: PlatformName -> PlatformName -> [PlatformName]
$cenumFromThenTo :: PlatformName -> PlatformName -> PlatformName -> [PlatformName]
enumFromThenTo :: PlatformName -> PlatformName -> PlatformName -> [PlatformName]
Enum, PlatformName
PlatformName -> PlatformName -> Bounded PlatformName
forall a. a -> a -> Bounded a
$cminBound :: PlatformName
minBound :: PlatformName
$cmaxBound :: PlatformName
maxBound :: PlatformName
Bounded, PlatformName -> PlatformName -> Bool
(PlatformName -> PlatformName -> Bool)
-> (PlatformName -> PlatformName -> Bool) -> Eq PlatformName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlatformName -> PlatformName -> Bool
== :: PlatformName -> PlatformName -> Bool
$c/= :: PlatformName -> PlatformName -> Bool
/= :: PlatformName -> PlatformName -> Bool
Eq)
data Capabilities = MkCapabilities
{ Capabilities -> Maybe BrowserName
browserName :: Maybe BrowserName,
Capabilities -> Maybe Text
browserVersion :: Maybe Text,
Capabilities -> Maybe PlatformName
platformName :: Maybe PlatformName,
Capabilities -> Maybe Bool
acceptInsecureCerts :: Maybe Bool,
Capabilities -> Maybe PageLoadStrategy
pageLoadStrategy :: Maybe PageLoadStrategy,
Capabilities -> Maybe Proxy
proxy :: Maybe Proxy,
Capabilities -> Maybe Timeouts
timeouts :: Maybe Timeouts,
Capabilities -> Maybe Bool
strictFileInteractability :: Maybe Bool,
Capabilities -> Maybe UnhandledPromptBehavior
unhandledPromptBehavior :: Maybe UnhandledPromptBehavior,
Capabilities -> Maybe VendorSpecific
vendorSpecific :: Maybe VendorSpecific
}
deriving (Int -> Capabilities -> ShowS
[Capabilities] -> ShowS
Capabilities -> String
(Int -> Capabilities -> ShowS)
-> (Capabilities -> String)
-> ([Capabilities] -> ShowS)
-> Show Capabilities
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Capabilities -> ShowS
showsPrec :: Int -> Capabilities -> ShowS
$cshow :: Capabilities -> String
show :: Capabilities -> String
$cshowList :: [Capabilities] -> ShowS
showList :: [Capabilities] -> ShowS
Show, (forall x. Capabilities -> Rep Capabilities x)
-> (forall x. Rep Capabilities x -> Capabilities)
-> Generic Capabilities
forall x. Rep Capabilities x -> Capabilities
forall x. Capabilities -> Rep Capabilities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Capabilities -> Rep Capabilities x
from :: forall x. Capabilities -> Rep Capabilities x
$cto :: forall x. Rep Capabilities x -> Capabilities
to :: forall x. Rep Capabilities x -> Capabilities
Generic, Capabilities -> Capabilities -> Bool
(Capabilities -> Capabilities -> Bool)
-> (Capabilities -> Capabilities -> Bool) -> Eq Capabilities
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Capabilities -> Capabilities -> Bool
== :: Capabilities -> Capabilities -> Bool
$c/= :: Capabilities -> Capabilities -> Bool
/= :: Capabilities -> Capabilities -> Bool
Eq)
instance ToJSON Capabilities where
toJSON :: Capabilities -> Value
toJSON :: Capabilities -> Value
toJSON
MkCapabilities
{ Maybe BrowserName
browserName :: Capabilities -> Maybe BrowserName
browserName :: Maybe BrowserName
browserName,
Maybe Text
browserVersion :: Capabilities -> Maybe Text
browserVersion :: Maybe Text
browserVersion,
Maybe PlatformName
platformName :: Capabilities -> Maybe PlatformName
platformName :: Maybe PlatformName
platformName,
Maybe Bool
acceptInsecureCerts :: Capabilities -> Maybe Bool
acceptInsecureCerts :: Maybe Bool
acceptInsecureCerts,
Maybe PageLoadStrategy
pageLoadStrategy :: Capabilities -> Maybe PageLoadStrategy
pageLoadStrategy :: Maybe PageLoadStrategy
pageLoadStrategy,
Maybe Proxy
proxy :: Capabilities -> Maybe Proxy
proxy :: Maybe Proxy
proxy,
Maybe Timeouts
timeouts :: Capabilities -> Maybe Timeouts
timeouts :: Maybe Timeouts
timeouts,
Maybe Bool
strictFileInteractability :: Capabilities -> Maybe Bool
strictFileInteractability :: Maybe Bool
strictFileInteractability,
Maybe UnhandledPromptBehavior
unhandledPromptBehavior :: Capabilities -> Maybe UnhandledPromptBehavior
unhandledPromptBehavior :: Maybe UnhandledPromptBehavior
unhandledPromptBehavior,
Maybe VendorSpecific
vendorSpecific :: Capabilities -> Maybe VendorSpecific
vendorSpecific :: Maybe VendorSpecific
vendorSpecific
} =
[Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$
[ Key
"browserName" Key -> Maybe BrowserName -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe BrowserName
browserName
]
[Pair] -> [Pair] -> [Pair]
forall a. Semigroup a => a -> a -> a
<> [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
catMaybes
[ Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"browserVersion" Maybe Text
browserVersion,
Key -> Maybe PlatformName -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"platformName" Maybe PlatformName
platformName,
Key -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"acceptInsecureCerts" Maybe Bool
acceptInsecureCerts,
Key -> Maybe PageLoadStrategy -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"pageLoadStrategy" Maybe PageLoadStrategy
pageLoadStrategy,
Key -> Maybe Proxy -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"proxy" Maybe Proxy
proxy,
Key -> Maybe Timeouts -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"timeouts" Maybe Timeouts
timeouts,
Key -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"strictFileInteractability" Maybe Bool
strictFileInteractability,
Key -> Maybe UnhandledPromptBehavior -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"unhandledPromptBehavior" Maybe UnhandledPromptBehavior
unhandledPromptBehavior
]
[Pair] -> [Pair] -> [Pair]
forall a. Semigroup a => a -> a -> a
<> Maybe VendorSpecific -> [Pair]
vendorSpecificToJSON Maybe VendorSpecific
vendorSpecific
instance FromJSON Capabilities where
parseJSON :: Value -> Parser Capabilities
parseJSON :: Value -> Parser Capabilities
parseJSON = String
-> (Object -> Parser Capabilities) -> Value -> Parser Capabilities
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Capabilities" ((Object -> Parser Capabilities) -> Value -> Parser Capabilities)
-> (Object -> Parser Capabilities) -> Value -> Parser Capabilities
forall a b. (a -> b) -> a -> b
$ \Object
v ->
do
let m :: forall a. (FromJSON a) => Key -> Parser (Maybe a)
m :: forall a. FromJSON a => Key -> Parser (Maybe a)
m = Object -> Key -> Parser (Maybe a)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
parseFieldMaybe Object
v
browserName <- Object
v Object -> Key -> Parser (Maybe BrowserName)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"browserName"
browserVersion <- m "browserVersion"
platformName <- m "platformName"
acceptInsecureCerts <- m "acceptInsecureCerts"
pageLoadStrategy <- m "pageLoadStrategy"
proxy <- m "proxy"
timeouts <- m "timeouts"
strictFileInteractability <- m "strictFileInteractability"
unhandledPromptBehavior <- m "unhandledPromptBehavior"
vendorSpecific <- parseVendorSpecific v
pure MkCapabilities {..}
data SocksProxy = MkSocksProxy
{ SocksProxy -> Text
socksProxy :: Text,
SocksProxy -> Int
socksVersion :: Int
}
deriving (SocksProxy -> SocksProxy -> Bool
(SocksProxy -> SocksProxy -> Bool)
-> (SocksProxy -> SocksProxy -> Bool) -> Eq SocksProxy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SocksProxy -> SocksProxy -> Bool
== :: SocksProxy -> SocksProxy -> Bool
$c/= :: SocksProxy -> SocksProxy -> Bool
/= :: SocksProxy -> SocksProxy -> Bool
Eq, Int -> SocksProxy -> ShowS
[SocksProxy] -> ShowS
SocksProxy -> String
(Int -> SocksProxy -> ShowS)
-> (SocksProxy -> String)
-> ([SocksProxy] -> ShowS)
-> Show SocksProxy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SocksProxy -> ShowS
showsPrec :: Int -> SocksProxy -> ShowS
$cshow :: SocksProxy -> String
show :: SocksProxy -> String
$cshowList :: [SocksProxy] -> ShowS
showList :: [SocksProxy] -> ShowS
Show, (forall x. SocksProxy -> Rep SocksProxy x)
-> (forall x. Rep SocksProxy x -> SocksProxy) -> Generic SocksProxy
forall x. Rep SocksProxy x -> SocksProxy
forall x. SocksProxy -> Rep SocksProxy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SocksProxy -> Rep SocksProxy x
from :: forall x. SocksProxy -> Rep SocksProxy x
$cto :: forall x. Rep SocksProxy x -> SocksProxy
to :: forall x. Rep SocksProxy x -> SocksProxy
Generic)
instance ToJSON SocksProxy where
toJSON :: SocksProxy -> Value
toJSON :: SocksProxy -> Value
toJSON MkSocksProxy {Int
Text
socksProxy :: SocksProxy -> Text
socksVersion :: SocksProxy -> Int
socksProxy :: Text
socksVersion :: Int
..} =
[Pair] -> Value
object
[ Key
"socksProxy" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
socksProxy,
Key
"socksVersion" Key -> Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Int
socksVersion
]
instance FromJSON SocksProxy where
parseJSON :: Value -> Parser SocksProxy
parseJSON :: Value -> Parser SocksProxy
parseJSON = String
-> (Object -> Parser SocksProxy) -> Value -> Parser SocksProxy
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"SocksProxy" ((Object -> Parser SocksProxy) -> Value -> Parser SocksProxy)
-> (Object -> Parser SocksProxy) -> Value -> Parser SocksProxy
forall a b. (a -> b) -> a -> b
$ \Object
v ->
do
socksProxy <- Object
v Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"socksProxy"
socksVersion <- v .: "socksVersion"
pure MkSocksProxy {..}
data Proxy
= Direct
| Manual
{ Proxy -> Maybe Text
ftpProxy :: Maybe Text,
Proxy -> Maybe Text
httpProxy :: Maybe Text,
Proxy -> Maybe Text
sslProxy :: Maybe Text,
Proxy -> Maybe SocksProxy
socksProxy :: Maybe SocksProxy,
Proxy -> Maybe [Text]
noProxy :: Maybe [Text]
}
| AutoDetect
| System
| Pac
{ Proxy -> Text
proxyAutoconfigUrl :: Text
}
deriving (Int -> Proxy -> ShowS
[Proxy] -> ShowS
Proxy -> String
(Int -> Proxy -> ShowS)
-> (Proxy -> String) -> ([Proxy] -> ShowS) -> Show Proxy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Proxy -> ShowS
showsPrec :: Int -> Proxy -> ShowS
$cshow :: Proxy -> String
show :: Proxy -> String
$cshowList :: [Proxy] -> ShowS
showList :: [Proxy] -> ShowS
Show, Proxy -> Proxy -> Bool
(Proxy -> Proxy -> Bool) -> (Proxy -> Proxy -> Bool) -> Eq Proxy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Proxy -> Proxy -> Bool
== :: Proxy -> Proxy -> Bool
$c/= :: Proxy -> Proxy -> Bool
/= :: Proxy -> Proxy -> Bool
Eq)
instance ToJSON Proxy where
toJSON :: Proxy -> Value
toJSON :: Proxy -> Value
toJSON Proxy
p =
[Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$
[ Key
"proxyType" Key -> String -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
proxyType
]
[Pair] -> [Pair] -> [Pair]
forall a. Semigroup a => a -> a -> a
<> [Pair]
details
where
proxyType :: String
proxyType = case Proxy
p of
Proxy
Direct -> String
"direct"
Proxy
AutoDetect -> String
"autodetect"
Proxy
System -> String
"system"
Pac {} -> String
"pac"
Manual {} -> String
"manual"
details :: [Pair]
details = case Proxy
p of
Proxy
Direct -> []
Proxy
AutoDetect -> []
Proxy
System -> []
Pac {Text
proxyAutoconfigUrl :: Proxy -> Text
proxyAutoconfigUrl :: Text
..} -> [Key
"proxyAutoconfigUrl" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
proxyAutoconfigUrl]
Manual {Maybe [Text]
Maybe Text
Maybe SocksProxy
ftpProxy :: Proxy -> Maybe Text
httpProxy :: Proxy -> Maybe Text
sslProxy :: Proxy -> Maybe Text
socksProxy :: Proxy -> Maybe SocksProxy
noProxy :: Proxy -> Maybe [Text]
ftpProxy :: Maybe Text
httpProxy :: Maybe Text
sslProxy :: Maybe Text
socksProxy :: Maybe SocksProxy
noProxy :: Maybe [Text]
..} ->
[Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
catMaybes
[ Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"ftpProxy" Maybe Text
ftpProxy,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"httpProxy" Maybe Text
httpProxy,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"sslProxy" Maybe Text
sslProxy,
Key -> Maybe SocksProxy -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"socksProxy" Maybe SocksProxy
socksProxy,
Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"noProxy" Maybe [Text]
noProxy
]
instance FromJSON Proxy where
parseJSON :: Value -> Parser Proxy
parseJSON :: Value -> Parser Proxy
parseJSON = String -> (Object -> Parser Proxy) -> Value -> Parser Proxy
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Proxy" ((Object -> Parser Proxy) -> Value -> Parser Proxy)
-> (Object -> Parser Proxy) -> Value -> Parser Proxy
forall a b. (a -> b) -> a -> b
$
\Object
v ->
Object
v Object -> Key -> Parser Value
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"proxyType" Parser Value -> (Value -> Parser Proxy) -> Parser Proxy
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
String Text
"direct" -> Proxy -> Parser Proxy
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Proxy
Direct
String Text
"autodetect" -> Proxy -> Parser Proxy
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Proxy
AutoDetect
String Text
"system" -> Proxy -> Parser Proxy
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Proxy
System
String Text
"pac" -> Text -> Proxy
Pac (Text -> Proxy) -> Parser Text -> Parser Proxy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"proxyAutoconfigUrl"
String Text
"manual" ->
do
ftpProxy <- Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"ftpProxy"
httpProxy <- v .:? "httpProxy"
sslProxy <- v .:? "sslProxy"
socksProxy <- v .:? "socksProxy"
noProxy <- v .:? "noProxy"
pure Manual {..}
Value
_ -> String -> Parser Proxy
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid Proxy"
data VendorSpecific
=
ChromeOptions
{ VendorSpecific -> Maybe [Text]
chromeArgs :: Maybe [Text],
VendorSpecific -> Maybe Text
chromeBinary :: Maybe Text,
VendorSpecific -> Maybe [Text]
chromeExtensions :: Maybe [Text],
VendorSpecific -> Maybe (Map Text Value)
chromeLocalState :: Maybe (Map Text Value),
VendorSpecific -> Maybe MobileEmulation
chromeMobileEmulation :: Maybe MobileEmulation,
VendorSpecific -> Maybe (Map Text Value)
chromePrefs :: Maybe (Map Text Value),
VendorSpecific -> Maybe Bool
chromeDetach :: Maybe Bool,
VendorSpecific -> Maybe Text
chromeDebuggerAddress :: Maybe Text,
VendorSpecific -> Maybe [Text]
chromeExcludeSwitches :: Maybe [Text],
VendorSpecific -> Maybe String
chromeMinidumpPath :: Maybe FilePath,
VendorSpecific -> Maybe PerfLoggingPrefs
chromePerfLoggingPrefs :: Maybe PerfLoggingPrefs,
VendorSpecific -> Maybe [Text]
chromeWindowTypes :: Maybe [Text]
}
| EdgeOptions
{ VendorSpecific -> Maybe [Text]
edgeArgs :: Maybe [Text],
VendorSpecific -> Maybe Text
edgeBinary :: Maybe Text,
VendorSpecific -> Maybe [Text]
edgeExtensions :: Maybe [Text],
VendorSpecific -> Maybe (Map Text Value)
edgeLocalState :: Maybe (Map Text Value),
VendorSpecific -> Maybe MobileEmulation
edgeMobileEmulation :: Maybe MobileEmulation,
VendorSpecific -> Maybe (Map Text Value)
edgePrefs :: Maybe (Map Text Value),
VendorSpecific -> Maybe Bool
edgeDetach :: Maybe Bool,
VendorSpecific -> Maybe Text
edgeDebuggerAddress :: Maybe Text,
VendorSpecific -> Maybe [Text]
edgeExcludeSwitches :: Maybe [Text],
VendorSpecific -> Maybe String
edgeMinidumpPath :: Maybe FilePath,
VendorSpecific -> Maybe PerfLoggingPrefs
edgePerfLoggingPrefs :: Maybe PerfLoggingPrefs,
VendorSpecific -> Maybe [Text]
edgeWindowTypes :: Maybe [Text]
}
| FirefoxOptions
{ VendorSpecific -> Maybe [Text]
firefoxArgs :: Maybe [Text],
VendorSpecific -> Maybe Text
firefoxBinary :: Maybe Text,
VendorSpecific -> Maybe Text
firefoxProfile :: Maybe Text,
VendorSpecific -> Maybe LogSettings
firefoxLog :: Maybe LogSettings
}
| SafariOptions
{ VendorSpecific -> Maybe Bool
safariAutomaticInspection :: Maybe Bool,
VendorSpecific -> Maybe Bool
safariAutomaticProfiling :: Maybe Bool
}
deriving (Int -> VendorSpecific -> ShowS
[VendorSpecific] -> ShowS
VendorSpecific -> String
(Int -> VendorSpecific -> ShowS)
-> (VendorSpecific -> String)
-> ([VendorSpecific] -> ShowS)
-> Show VendorSpecific
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VendorSpecific -> ShowS
showsPrec :: Int -> VendorSpecific -> ShowS
$cshow :: VendorSpecific -> String
show :: VendorSpecific -> String
$cshowList :: [VendorSpecific] -> ShowS
showList :: [VendorSpecific] -> ShowS
Show, (forall x. VendorSpecific -> Rep VendorSpecific x)
-> (forall x. Rep VendorSpecific x -> VendorSpecific)
-> Generic VendorSpecific
forall x. Rep VendorSpecific x -> VendorSpecific
forall x. VendorSpecific -> Rep VendorSpecific x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. VendorSpecific -> Rep VendorSpecific x
from :: forall x. VendorSpecific -> Rep VendorSpecific x
$cto :: forall x. Rep VendorSpecific x -> VendorSpecific
to :: forall x. Rep VendorSpecific x -> VendorSpecific
Generic, VendorSpecific -> VendorSpecific -> Bool
(VendorSpecific -> VendorSpecific -> Bool)
-> (VendorSpecific -> VendorSpecific -> Bool) -> Eq VendorSpecific
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VendorSpecific -> VendorSpecific -> Bool
== :: VendorSpecific -> VendorSpecific -> Bool
$c/= :: VendorSpecific -> VendorSpecific -> Bool
/= :: VendorSpecific -> VendorSpecific -> Bool
Eq)
data PerfLoggingPrefs = MkPerfLoggingPrefs
{ PerfLoggingPrefs -> Maybe Bool
enableNetwork :: Maybe Bool,
PerfLoggingPrefs -> Maybe Bool
enablePage :: Maybe Bool,
PerfLoggingPrefs -> Maybe Bool
enableTimeline :: Maybe Bool,
PerfLoggingPrefs -> Maybe Text
traceCategories :: Maybe Text,
PerfLoggingPrefs -> Maybe Int
bufferUsageReportingInterval :: Maybe Int
}
deriving (Int -> PerfLoggingPrefs -> ShowS
[PerfLoggingPrefs] -> ShowS
PerfLoggingPrefs -> String
(Int -> PerfLoggingPrefs -> ShowS)
-> (PerfLoggingPrefs -> String)
-> ([PerfLoggingPrefs] -> ShowS)
-> Show PerfLoggingPrefs
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PerfLoggingPrefs -> ShowS
showsPrec :: Int -> PerfLoggingPrefs -> ShowS
$cshow :: PerfLoggingPrefs -> String
show :: PerfLoggingPrefs -> String
$cshowList :: [PerfLoggingPrefs] -> ShowS
showList :: [PerfLoggingPrefs] -> ShowS
Show, PerfLoggingPrefs -> PerfLoggingPrefs -> Bool
(PerfLoggingPrefs -> PerfLoggingPrefs -> Bool)
-> (PerfLoggingPrefs -> PerfLoggingPrefs -> Bool)
-> Eq PerfLoggingPrefs
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PerfLoggingPrefs -> PerfLoggingPrefs -> Bool
== :: PerfLoggingPrefs -> PerfLoggingPrefs -> Bool
$c/= :: PerfLoggingPrefs -> PerfLoggingPrefs -> Bool
/= :: PerfLoggingPrefs -> PerfLoggingPrefs -> Bool
Eq, (forall x. PerfLoggingPrefs -> Rep PerfLoggingPrefs x)
-> (forall x. Rep PerfLoggingPrefs x -> PerfLoggingPrefs)
-> Generic PerfLoggingPrefs
forall x. Rep PerfLoggingPrefs x -> PerfLoggingPrefs
forall x. PerfLoggingPrefs -> Rep PerfLoggingPrefs x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PerfLoggingPrefs -> Rep PerfLoggingPrefs x
from :: forall x. PerfLoggingPrefs -> Rep PerfLoggingPrefs x
$cto :: forall x. Rep PerfLoggingPrefs x -> PerfLoggingPrefs
to :: forall x. Rep PerfLoggingPrefs x -> PerfLoggingPrefs
Generic)
instance ToJSON PerfLoggingPrefs where
toJSON :: PerfLoggingPrefs -> Value
toJSON = Options -> PerfLoggingPrefs -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
defaultOptions {omitNothingFields = True}
instance FromJSON PerfLoggingPrefs where
parseJSON :: Value -> Parser PerfLoggingPrefs
parseJSON = Options -> Value -> Parser PerfLoggingPrefs
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
genericParseJSON Options
defaultOptions {omitNothingFields = True}
data MobileEmulation = MkMobileEmulation
{ MobileEmulation -> Maybe Text
deviceName :: Maybe Text,
MobileEmulation -> Maybe DeviceMetrics
deviceMetrics :: Maybe DeviceMetrics,
MobileEmulation -> Maybe Text
userAgent :: Maybe Text
}
deriving (Int -> MobileEmulation -> ShowS
[MobileEmulation] -> ShowS
MobileEmulation -> String
(Int -> MobileEmulation -> ShowS)
-> (MobileEmulation -> String)
-> ([MobileEmulation] -> ShowS)
-> Show MobileEmulation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MobileEmulation -> ShowS
showsPrec :: Int -> MobileEmulation -> ShowS
$cshow :: MobileEmulation -> String
show :: MobileEmulation -> String
$cshowList :: [MobileEmulation] -> ShowS
showList :: [MobileEmulation] -> ShowS
Show, MobileEmulation -> MobileEmulation -> Bool
(MobileEmulation -> MobileEmulation -> Bool)
-> (MobileEmulation -> MobileEmulation -> Bool)
-> Eq MobileEmulation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MobileEmulation -> MobileEmulation -> Bool
== :: MobileEmulation -> MobileEmulation -> Bool
$c/= :: MobileEmulation -> MobileEmulation -> Bool
/= :: MobileEmulation -> MobileEmulation -> Bool
Eq, (forall x. MobileEmulation -> Rep MobileEmulation x)
-> (forall x. Rep MobileEmulation x -> MobileEmulation)
-> Generic MobileEmulation
forall x. Rep MobileEmulation x -> MobileEmulation
forall x. MobileEmulation -> Rep MobileEmulation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MobileEmulation -> Rep MobileEmulation x
from :: forall x. MobileEmulation -> Rep MobileEmulation x
$cto :: forall x. Rep MobileEmulation x -> MobileEmulation
to :: forall x. Rep MobileEmulation x -> MobileEmulation
Generic)
instance FromJSON MobileEmulation where
parseJSON :: Value -> Parser MobileEmulation
parseJSON = Options -> Value -> Parser MobileEmulation
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
genericParseJSON Options
defaultOptions {omitNothingFields = True}
instance ToJSON MobileEmulation where
toJSON :: MobileEmulation -> Value
toJSON = Options -> MobileEmulation -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
defaultOptions {omitNothingFields = True}
data LogLevel
=
Trace
|
Debug
|
Config
|
Info
|
Warning
|
Error
|
Fatal
|
Off
deriving (Int -> LogLevel -> ShowS
[LogLevel] -> ShowS
LogLevel -> String
(Int -> LogLevel -> ShowS)
-> (LogLevel -> String) -> ([LogLevel] -> ShowS) -> Show LogLevel
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LogLevel -> ShowS
showsPrec :: Int -> LogLevel -> ShowS
$cshow :: LogLevel -> String
show :: LogLevel -> String
$cshowList :: [LogLevel] -> ShowS
showList :: [LogLevel] -> ShowS
Show, LogLevel -> LogLevel -> Bool
(LogLevel -> LogLevel -> Bool)
-> (LogLevel -> LogLevel -> Bool) -> Eq LogLevel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LogLevel -> LogLevel -> Bool
== :: LogLevel -> LogLevel -> Bool
$c/= :: LogLevel -> LogLevel -> Bool
/= :: LogLevel -> LogLevel -> Bool
Eq, Int -> LogLevel
LogLevel -> Int
LogLevel -> [LogLevel]
LogLevel -> LogLevel
LogLevel -> LogLevel -> [LogLevel]
LogLevel -> LogLevel -> LogLevel -> [LogLevel]
(LogLevel -> LogLevel)
-> (LogLevel -> LogLevel)
-> (Int -> LogLevel)
-> (LogLevel -> Int)
-> (LogLevel -> [LogLevel])
-> (LogLevel -> LogLevel -> [LogLevel])
-> (LogLevel -> LogLevel -> [LogLevel])
-> (LogLevel -> LogLevel -> LogLevel -> [LogLevel])
-> Enum LogLevel
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 :: LogLevel -> LogLevel
succ :: LogLevel -> LogLevel
$cpred :: LogLevel -> LogLevel
pred :: LogLevel -> LogLevel
$ctoEnum :: Int -> LogLevel
toEnum :: Int -> LogLevel
$cfromEnum :: LogLevel -> Int
fromEnum :: LogLevel -> Int
$cenumFrom :: LogLevel -> [LogLevel]
enumFrom :: LogLevel -> [LogLevel]
$cenumFromThen :: LogLevel -> LogLevel -> [LogLevel]
enumFromThen :: LogLevel -> LogLevel -> [LogLevel]
$cenumFromTo :: LogLevel -> LogLevel -> [LogLevel]
enumFromTo :: LogLevel -> LogLevel -> [LogLevel]
$cenumFromThenTo :: LogLevel -> LogLevel -> LogLevel -> [LogLevel]
enumFromThenTo :: LogLevel -> LogLevel -> LogLevel -> [LogLevel]
Enum, LogLevel
LogLevel -> LogLevel -> Bounded LogLevel
forall a. a -> a -> Bounded a
$cminBound :: LogLevel
minBound :: LogLevel
$cmaxBound :: LogLevel
maxBound :: LogLevel
Bounded, (forall x. LogLevel -> Rep LogLevel x)
-> (forall x. Rep LogLevel x -> LogLevel) -> Generic LogLevel
forall x. Rep LogLevel x -> LogLevel
forall x. LogLevel -> Rep LogLevel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LogLevel -> Rep LogLevel x
from :: forall x. LogLevel -> Rep LogLevel x
$cto :: forall x. Rep LogLevel x -> LogLevel
to :: forall x. Rep LogLevel x -> LogLevel
Generic)
instance ToJSON LogLevel where
toJSON :: LogLevel -> Value
toJSON :: LogLevel -> Value
toJSON =
Text -> Value
String (Text -> Value) -> (LogLevel -> Text) -> LogLevel -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
LogLevel
Trace -> Text
"trace"
LogLevel
Debug -> Text
"debug"
LogLevel
Config -> Text
"config"
LogLevel
Info -> Text
"info"
LogLevel
Warning -> Text
"warn"
LogLevel
Error -> Text
"error"
LogLevel
Fatal -> Text
"fatal"
LogLevel
Off -> Text
"off"
instance FromJSON LogLevel where
parseJSON :: Value -> Parser LogLevel
parseJSON = String -> (Text -> Parser LogLevel) -> Value -> Parser LogLevel
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"LogLevel" ((Text -> Parser LogLevel) -> Value -> Parser LogLevel)
-> (Text -> Parser LogLevel) -> Value -> Parser LogLevel
forall a b. (a -> b) -> a -> b
$ \case
Text
"trace" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Trace
Text
"debug" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Debug
Text
"config" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Config
Text
"info" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Info
Text
"warn" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Warning
Text
"error" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Error
Text
"fatal" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Fatal
Text
"off" -> LogLevel -> Parser LogLevel
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogLevel
Off
Text
other -> String -> Parser LogLevel
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser LogLevel) -> String -> Parser LogLevel
forall a b. (a -> b) -> a -> b
$ String
"Invalid log level: " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Text -> String
forall a. Show a => a -> String
show Text
other
data LogSettings = MkLogSettings
{ LogSettings -> LogLevel
level :: LogLevel
}
deriving (Int -> LogSettings -> ShowS
[LogSettings] -> ShowS
LogSettings -> String
(Int -> LogSettings -> ShowS)
-> (LogSettings -> String)
-> ([LogSettings] -> ShowS)
-> Show LogSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LogSettings -> ShowS
showsPrec :: Int -> LogSettings -> ShowS
$cshow :: LogSettings -> String
show :: LogSettings -> String
$cshowList :: [LogSettings] -> ShowS
showList :: [LogSettings] -> ShowS
Show, LogSettings -> LogSettings -> Bool
(LogSettings -> LogSettings -> Bool)
-> (LogSettings -> LogSettings -> Bool) -> Eq LogSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LogSettings -> LogSettings -> Bool
== :: LogSettings -> LogSettings -> Bool
$c/= :: LogSettings -> LogSettings -> Bool
/= :: LogSettings -> LogSettings -> Bool
Eq, (forall x. LogSettings -> Rep LogSettings x)
-> (forall x. Rep LogSettings x -> LogSettings)
-> Generic LogSettings
forall x. Rep LogSettings x -> LogSettings
forall x. LogSettings -> Rep LogSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LogSettings -> Rep LogSettings x
from :: forall x. LogSettings -> Rep LogSettings x
$cto :: forall x. Rep LogSettings x -> LogSettings
to :: forall x. Rep LogSettings x -> LogSettings
Generic)
instance FromJSON LogSettings where
parseJSON :: Value -> Parser LogSettings
parseJSON = String
-> (Object -> Parser LogSettings) -> Value -> Parser LogSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"LogSettings" ((Object -> Parser LogSettings) -> Value -> Parser LogSettings)
-> (Object -> Parser LogSettings) -> Value -> Parser LogSettings
forall a b. (a -> b) -> a -> b
$ \Object
v ->
do
level <- Object
v Object -> Key -> Parser LogLevel
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"level"
pure MkLogSettings {..}
instance ToJSON LogSettings where
toJSON :: LogSettings -> Value
toJSON = Options -> LogSettings -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
defaultOptions {omitNothingFields = True}
data DeviceMetrics = MkDeviceMetrics
{ DeviceMetrics -> Int
width :: Int,
DeviceMetrics -> Int
height :: Int,
DeviceMetrics -> Double
pixelRatio :: Double,
DeviceMetrics -> Bool
touch :: Bool
}
deriving (Int -> DeviceMetrics -> ShowS
[DeviceMetrics] -> ShowS
DeviceMetrics -> String
(Int -> DeviceMetrics -> ShowS)
-> (DeviceMetrics -> String)
-> ([DeviceMetrics] -> ShowS)
-> Show DeviceMetrics
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeviceMetrics -> ShowS
showsPrec :: Int -> DeviceMetrics -> ShowS
$cshow :: DeviceMetrics -> String
show :: DeviceMetrics -> String
$cshowList :: [DeviceMetrics] -> ShowS
showList :: [DeviceMetrics] -> ShowS
Show, DeviceMetrics -> DeviceMetrics -> Bool
(DeviceMetrics -> DeviceMetrics -> Bool)
-> (DeviceMetrics -> DeviceMetrics -> Bool) -> Eq DeviceMetrics
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeviceMetrics -> DeviceMetrics -> Bool
== :: DeviceMetrics -> DeviceMetrics -> Bool
$c/= :: DeviceMetrics -> DeviceMetrics -> Bool
/= :: DeviceMetrics -> DeviceMetrics -> Bool
Eq, (forall x. DeviceMetrics -> Rep DeviceMetrics x)
-> (forall x. Rep DeviceMetrics x -> DeviceMetrics)
-> Generic DeviceMetrics
forall x. Rep DeviceMetrics x -> DeviceMetrics
forall x. DeviceMetrics -> Rep DeviceMetrics x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DeviceMetrics -> Rep DeviceMetrics x
from :: forall x. DeviceMetrics -> Rep DeviceMetrics x
$cto :: forall x. Rep DeviceMetrics x -> DeviceMetrics
to :: forall x. Rep DeviceMetrics x -> DeviceMetrics
Generic)
instance FromJSON DeviceMetrics where
parseJSON :: Value -> Parser DeviceMetrics
parseJSON = String
-> (Object -> Parser DeviceMetrics)
-> Value
-> Parser DeviceMetrics
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"DeviceMetrics" ((Object -> Parser DeviceMetrics) -> Value -> Parser DeviceMetrics)
-> (Object -> Parser DeviceMetrics)
-> Value
-> Parser DeviceMetrics
forall a b. (a -> b) -> a -> b
$ \Object
v ->
do
let m :: forall a. (FromJSON a) => Key -> Parser a
m :: forall a. FromJSON a => Key -> Parser a
m = Object -> Key -> Parser a
forall a. FromJSON a => Object -> Key -> Parser a
parseField Object
v
width <- Key -> Parser Int
forall a. FromJSON a => Key -> Parser a
m Key
"width"
height <- m "height"
pixelRatio <- m "pixelRatio"
touch <- m "touch"
pure MkDeviceMetrics {..}
instance ToJSON DeviceMetrics where
toJSON :: DeviceMetrics -> Value
toJSON = Options -> DeviceMetrics -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
defaultOptions {omitNothingFields = True}
instance ToJSON VendorSpecific where
toJSON :: VendorSpecific -> Value
toJSON :: VendorSpecific -> Value
toJSON VendorSpecific
vs =
[Pair] -> Value
object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
catMaybes [Maybe Pair]
props
where
props :: [Maybe Pair]
props = case VendorSpecific
vs of
ChromeOptions {Maybe Bool
Maybe String
Maybe [Text]
Maybe Text
Maybe (Map Text Value)
Maybe MobileEmulation
Maybe PerfLoggingPrefs
chromeArgs :: VendorSpecific -> Maybe [Text]
chromeBinary :: VendorSpecific -> Maybe Text
chromeExtensions :: VendorSpecific -> Maybe [Text]
chromeLocalState :: VendorSpecific -> Maybe (Map Text Value)
chromeMobileEmulation :: VendorSpecific -> Maybe MobileEmulation
chromePrefs :: VendorSpecific -> Maybe (Map Text Value)
chromeDetach :: VendorSpecific -> Maybe Bool
chromeDebuggerAddress :: VendorSpecific -> Maybe Text
chromeExcludeSwitches :: VendorSpecific -> Maybe [Text]
chromeMinidumpPath :: VendorSpecific -> Maybe String
chromePerfLoggingPrefs :: VendorSpecific -> Maybe PerfLoggingPrefs
chromeWindowTypes :: VendorSpecific -> Maybe [Text]
chromeArgs :: Maybe [Text]
chromeBinary :: Maybe Text
chromeExtensions :: Maybe [Text]
chromeLocalState :: Maybe (Map Text Value)
chromeMobileEmulation :: Maybe MobileEmulation
chromePrefs :: Maybe (Map Text Value)
chromeDetach :: Maybe Bool
chromeDebuggerAddress :: Maybe Text
chromeExcludeSwitches :: Maybe [Text]
chromeMinidumpPath :: Maybe String
chromePerfLoggingPrefs :: Maybe PerfLoggingPrefs
chromeWindowTypes :: Maybe [Text]
..} ->
[ Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"args" Maybe [Text]
chromeArgs,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"binary" Maybe Text
chromeBinary,
Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"extensions" Maybe [Text]
chromeExtensions,
Key -> Maybe (Map Text Value) -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"localState" Maybe (Map Text Value)
chromeLocalState,
Key -> Maybe MobileEmulation -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"mobileEmulation" Maybe MobileEmulation
chromeMobileEmulation,
Key -> Maybe (Map Text Value) -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"prefs" Maybe (Map Text Value)
chromePrefs,
Key -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"detach" Maybe Bool
chromeDetach,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"debuggerAddress" Maybe Text
chromeDebuggerAddress,
Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"excludeSwitches" Maybe [Text]
chromeExcludeSwitches,
Key -> Maybe String -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"minidumpPath" Maybe String
chromeMinidumpPath,
Key -> Maybe PerfLoggingPrefs -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"perfLoggingPrefs" Maybe PerfLoggingPrefs
chromePerfLoggingPrefs,
Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"windowTypes" Maybe [Text]
chromeWindowTypes
]
EdgeOptions {Maybe Bool
Maybe String
Maybe [Text]
Maybe Text
Maybe (Map Text Value)
Maybe MobileEmulation
Maybe PerfLoggingPrefs
edgeArgs :: VendorSpecific -> Maybe [Text]
edgeBinary :: VendorSpecific -> Maybe Text
edgeExtensions :: VendorSpecific -> Maybe [Text]
edgeLocalState :: VendorSpecific -> Maybe (Map Text Value)
edgeMobileEmulation :: VendorSpecific -> Maybe MobileEmulation
edgePrefs :: VendorSpecific -> Maybe (Map Text Value)
edgeDetach :: VendorSpecific -> Maybe Bool
edgeDebuggerAddress :: VendorSpecific -> Maybe Text
edgeExcludeSwitches :: VendorSpecific -> Maybe [Text]
edgeMinidumpPath :: VendorSpecific -> Maybe String
edgePerfLoggingPrefs :: VendorSpecific -> Maybe PerfLoggingPrefs
edgeWindowTypes :: VendorSpecific -> Maybe [Text]
edgeArgs :: Maybe [Text]
edgeBinary :: Maybe Text
edgeExtensions :: Maybe [Text]
edgeLocalState :: Maybe (Map Text Value)
edgeMobileEmulation :: Maybe MobileEmulation
edgePrefs :: Maybe (Map Text Value)
edgeDetach :: Maybe Bool
edgeDebuggerAddress :: Maybe Text
edgeExcludeSwitches :: Maybe [Text]
edgeMinidumpPath :: Maybe String
edgePerfLoggingPrefs :: Maybe PerfLoggingPrefs
edgeWindowTypes :: Maybe [Text]
..} ->
[ Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"args" Maybe [Text]
edgeArgs,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"binary" Maybe Text
edgeBinary,
Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"extensions" Maybe [Text]
edgeExtensions,
Key -> Maybe (Map Text Value) -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"localState" Maybe (Map Text Value)
edgeLocalState,
Key -> Maybe (Map Text Value) -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"prefs" Maybe (Map Text Value)
edgePrefs,
Key -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"detach" Maybe Bool
edgeDetach,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"debuggerAddress" Maybe Text
edgeDebuggerAddress,
Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"excludeSwitches" Maybe [Text]
edgeExcludeSwitches,
Key -> Maybe String -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"minidumpPath" Maybe String
edgeMinidumpPath,
Key -> Maybe MobileEmulation -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"mobileEmulation" Maybe MobileEmulation
edgeMobileEmulation,
Key -> Maybe PerfLoggingPrefs -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"perfLoggingPrefs" Maybe PerfLoggingPrefs
edgePerfLoggingPrefs,
Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"windowTypes" Maybe [Text]
edgeWindowTypes
]
FirefoxOptions {Maybe [Text]
Maybe Text
Maybe LogSettings
firefoxArgs :: VendorSpecific -> Maybe [Text]
firefoxBinary :: VendorSpecific -> Maybe Text
firefoxProfile :: VendorSpecific -> Maybe Text
firefoxLog :: VendorSpecific -> Maybe LogSettings
firefoxArgs :: Maybe [Text]
firefoxBinary :: Maybe Text
firefoxProfile :: Maybe Text
firefoxLog :: Maybe LogSettings
..} ->
[ Key -> Maybe [Text] -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"args" Maybe [Text]
firefoxArgs,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"binary" Maybe Text
firefoxBinary,
Key -> Maybe Text -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"profile" Maybe Text
firefoxProfile,
Key -> Maybe LogSettings -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"log" Maybe LogSettings
firefoxLog
]
SafariOptions {Maybe Bool
safariAutomaticInspection :: VendorSpecific -> Maybe Bool
safariAutomaticProfiling :: VendorSpecific -> Maybe Bool
safariAutomaticInspection :: Maybe Bool
safariAutomaticProfiling :: Maybe Bool
..} ->
[ Key -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"automaticInspection" Maybe Bool
safariAutomaticInspection,
Key -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) e b a.
(Functor f, KeyValue e b, ToJSON a) =>
Key -> f a -> f b
opt Key
"automaticProfiling" Maybe Bool
safariAutomaticProfiling
]
vendorSpecificPropName :: VendorSpecific -> Text
vendorSpecificPropName :: VendorSpecific -> Text
vendorSpecificPropName = \case
ChromeOptions {} -> Text
"goog:chromeOptions"
EdgeOptions {} -> Text
"ms:edgeOptions"
FirefoxOptions {} -> Text
"moz:firefoxOptions"
SafariOptions {} -> Text
"safari:options"
vendorSpecificToJSON :: Maybe VendorSpecific -> [Pair]
vendorSpecificToJSON :: Maybe VendorSpecific -> [Pair]
vendorSpecificToJSON = [Pair]
-> (VendorSpecific -> [Pair]) -> Maybe VendorSpecific -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] VendorSpecific -> [Pair]
vendorSpecificToJSON'
where
vendorSpecificToJSON' :: VendorSpecific -> [Pair]
vendorSpecificToJSON' :: VendorSpecific -> [Pair]
vendorSpecificToJSON' VendorSpecific
vs = [(Text -> Key
fromText (VendorSpecific -> Text
vendorSpecificPropName VendorSpecific
vs), VendorSpecific -> Value
forall a. ToJSON a => a -> Value
toJSON VendorSpecific
vs)]
instance ToJSON UnhandledPromptBehavior where
toJSON :: UnhandledPromptBehavior -> Value
toJSON :: UnhandledPromptBehavior -> Value
toJSON = \case
UnhandledPromptBehavior
Dismiss -> Value
"dismiss"
UnhandledPromptBehavior
Accept -> Value
"accept"
UnhandledPromptBehavior
DismissAndNotify -> Value
"dismiss and notify"
UnhandledPromptBehavior
AcceptAndNotify -> Value
"accept and notify"
UnhandledPromptBehavior
Ignore -> Value
"ignore"
instance ToJSON BrowserName where
toJSON :: BrowserName -> Value
toJSON :: BrowserName -> Value
toJSON = \case
BrowserName
Chrome -> Value
"chrome"
BrowserName
Firefox -> Value
"firefox"
BrowserName
Safari -> Value
"safari"
BrowserName
Edge -> Value
"edge"
BrowserName
InternetExplorer -> Value
"internet explorer"
instance ToJSON PlatformName where
toJSON :: PlatformName -> Value
toJSON :: PlatformName -> Value
toJSON = \case
PlatformName
Windows -> Value
"windows"
PlatformName
Mac -> Value
"mac"
PlatformName
Linux -> Value
"linux"
PlatformName
Android -> Value
"android"
PlatformName
IOS -> Value
"ios"
instance FromJSON UnhandledPromptBehavior where
parseJSON :: Value -> Parser UnhandledPromptBehavior
parseJSON :: Value -> Parser UnhandledPromptBehavior
parseJSON = String
-> (Text -> Parser UnhandledPromptBehavior)
-> Value
-> Parser UnhandledPromptBehavior
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"UnhandledPromptBehavior" ((Text -> Parser UnhandledPromptBehavior)
-> Value -> Parser UnhandledPromptBehavior)
-> (Text -> Parser UnhandledPromptBehavior)
-> Value
-> Parser UnhandledPromptBehavior
forall a b. (a -> b) -> a -> b
$ \case
Text
"dismiss" -> UnhandledPromptBehavior -> Parser UnhandledPromptBehavior
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UnhandledPromptBehavior
Dismiss
Text
"accept" -> UnhandledPromptBehavior -> Parser UnhandledPromptBehavior
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UnhandledPromptBehavior
Accept
Text
"dismiss and notify" -> UnhandledPromptBehavior -> Parser UnhandledPromptBehavior
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UnhandledPromptBehavior
DismissAndNotify
Text
"accept and notify" -> UnhandledPromptBehavior -> Parser UnhandledPromptBehavior
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UnhandledPromptBehavior
AcceptAndNotify
Text
"ignore" -> UnhandledPromptBehavior -> Parser UnhandledPromptBehavior
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure UnhandledPromptBehavior
Ignore
Text
other -> String -> Parser UnhandledPromptBehavior
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser UnhandledPromptBehavior)
-> String -> Parser UnhandledPromptBehavior
forall a b. (a -> b) -> a -> b
$ String
"UnhandledPromptBehavior: " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Text -> String
forall a. Show a => a -> String
show Text
other
instance FromJSON BrowserName where
parseJSON :: Value -> Parser BrowserName
parseJSON :: Value -> Parser BrowserName
parseJSON = String
-> (Text -> Parser BrowserName) -> Value -> Parser BrowserName
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"BrowserName" ((Text -> Parser BrowserName) -> Value -> Parser BrowserName)
-> (Text -> Parser BrowserName) -> Value -> Parser BrowserName
forall a b. (a -> b) -> a -> b
$ \case
Text
"chrome" -> BrowserName -> Parser BrowserName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BrowserName
Chrome
Text
"firefox" -> BrowserName -> Parser BrowserName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BrowserName
Firefox
Text
"safari" -> BrowserName -> Parser BrowserName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BrowserName
Safari
Text
"edge" -> BrowserName -> Parser BrowserName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BrowserName
Edge
Text
"internet explorer" -> BrowserName -> Parser BrowserName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BrowserName
InternetExplorer
Text
_ -> String -> Parser BrowserName
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid BrowserName"
instance FromJSON PlatformName where
parseJSON :: Value -> Parser PlatformName
parseJSON :: Value -> Parser PlatformName
parseJSON = String
-> (Text -> Parser PlatformName) -> Value -> Parser PlatformName
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"PlatformName" ((Text -> Parser PlatformName) -> Value -> Parser PlatformName)
-> (Text -> Parser PlatformName) -> Value -> Parser PlatformName
forall a b. (a -> b) -> a -> b
$ \case
Text
"windows" -> PlatformName -> Parser PlatformName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PlatformName
Windows
Text
"mac" -> PlatformName -> Parser PlatformName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PlatformName
Mac
Text
"linux" -> PlatformName -> Parser PlatformName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PlatformName
Linux
Text
"android" -> PlatformName -> Parser PlatformName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PlatformName
Android
Text
"ios" -> PlatformName -> Parser PlatformName
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PlatformName
IOS
Text
_ -> String -> Parser PlatformName
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid PlatformName"
parseVendorSpecific :: Object -> Parser (Maybe VendorSpecific)
parseVendorSpecific :: Object -> Parser (Maybe VendorSpecific)
parseVendorSpecific Object
v =
[Parser (Maybe VendorSpecific)] -> Parser (Maybe VendorSpecific)
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ VendorSpecific -> Maybe VendorSpecific
forall a. a -> Maybe a
Just (VendorSpecific -> Maybe VendorSpecific)
-> Parser VendorSpecific -> Parser (Maybe VendorSpecific)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Object
v Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"goog:chromeOptions" Parser Object
-> (Object -> Parser VendorSpecific) -> Parser VendorSpecific
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Object -> Parser VendorSpecific
parseChromeOptions),
VendorSpecific -> Maybe VendorSpecific
forall a. a -> Maybe a
Just (VendorSpecific -> Maybe VendorSpecific)
-> Parser VendorSpecific -> Parser (Maybe VendorSpecific)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Object
v Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"ms:edgeOptions" Parser Object
-> (Object -> Parser VendorSpecific) -> Parser VendorSpecific
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Object -> Parser VendorSpecific
parseEdgeOptions),
VendorSpecific -> Maybe VendorSpecific
forall a. a -> Maybe a
Just (VendorSpecific -> Maybe VendorSpecific)
-> Parser VendorSpecific -> Parser (Maybe VendorSpecific)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Object
v Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"moz:firefoxOptions" Parser Object
-> (Object -> Parser VendorSpecific) -> Parser VendorSpecific
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Object -> Parser VendorSpecific
parseFirefoxOptions),
VendorSpecific -> Maybe VendorSpecific
forall a. a -> Maybe a
Just (VendorSpecific -> Maybe VendorSpecific)
-> Parser VendorSpecific -> Parser (Maybe VendorSpecific)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Object
v Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"safari:options" Parser Object
-> (Object -> Parser VendorSpecific) -> Parser VendorSpecific
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Object -> Parser VendorSpecific
parseSafariOptions),
Maybe VendorSpecific -> Parser (Maybe VendorSpecific)
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe VendorSpecific
forall a. Maybe a
Nothing
]
where
parseChromeOptions :: Object -> Parser VendorSpecific
parseChromeOptions Object
o = do
chromeArgs <- Key -> Parser (Maybe [Text])
forall a. FromJSON a => Key -> Parser (Maybe a)
m Key
"args"
chromeBinary <- m "binary"
chromeExtensions <- m "extensions"
chromeLocalState <- m "localState"
chromeMobileEmulation <- m "mobileEmulation"
chromePrefs <- m "prefs"
chromeDetach <- m "detach"
chromeDebuggerAddress <- m "debuggerAddress"
chromeExcludeSwitches <- m "excludeSwitches"
chromeMinidumpPath <- m "minidumpPath"
chromePerfLoggingPrefs <- m "perfLoggingPrefs"
chromeWindowTypes <- m "windowTypes"
pure $ ChromeOptions {..}
where
m :: forall a. (FromJSON a) => Key -> Parser (Maybe a)
m :: forall a. FromJSON a => Key -> Parser (Maybe a)
m = Object -> Key -> Parser (Maybe a)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
parseFieldMaybe Object
o
parseEdgeOptions :: Object -> Parser VendorSpecific
parseEdgeOptions Object
o = do
edgeArgs <- Key -> Parser (Maybe [Text])
forall a. FromJSON a => Key -> Parser (Maybe a)
m Key
"args"
edgeBinary <- m "binary"
edgeExtensions <- m "extensions"
edgeLocalState <- m "localState"
edgePrefs <- m "prefs"
edgeDetach <- m "detach"
edgeDebuggerAddress <- m "debuggerAddress"
edgeExcludeSwitches <- m "excludeSwitches"
edgeMinidumpPath <- m "minidumpPath"
edgeMobileEmulation <- m "mobileEmulation"
edgePerfLoggingPrefs <- m "perfLoggingPrefs"
edgeWindowTypes <- m "windowTypes"
pure EdgeOptions {..}
where
m :: forall a. (FromJSON a) => Key -> Parser (Maybe a)
m :: forall a. FromJSON a => Key -> Parser (Maybe a)
m = Object -> Key -> Parser (Maybe a)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
parseFieldMaybe Object
o
parseFirefoxOptions :: Object -> Parser VendorSpecific
parseFirefoxOptions Object
o = do
firefoxArgs <- Key -> Parser (Maybe [Text])
forall a. FromJSON a => Key -> Parser (Maybe a)
m Key
"args"
firefoxBinary <- m "binary"
firefoxProfile <- m "profile"
firefoxLog <- m "log"
pure FirefoxOptions {..}
where
m :: forall a. (FromJSON a) => Key -> Parser (Maybe a)
m :: forall a. FromJSON a => Key -> Parser (Maybe a)
m = Object -> Key -> Parser (Maybe a)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
parseFieldMaybe Object
o
parseSafariOptions :: Object -> Parser VendorSpecific
parseSafariOptions Object
o = do
safariAutomaticInspection <- Key -> Parser (Maybe Bool)
m Key
"automaticInspection"
safariAutomaticProfiling <- m "automaticProfiling"
pure SafariOptions {..}
where
m :: Key -> Parser (Maybe Bool)
m = Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
parseFieldMaybe Object
o
data Timeouts = MkTimeouts
{ Timeouts -> Maybe Int
implicit :: Maybe Int,
Timeouts -> Maybe Int
pageLoad :: Maybe Int,
Timeouts -> Maybe Int
script :: Maybe Int
}
deriving (Int -> Timeouts -> ShowS
[Timeouts] -> ShowS
Timeouts -> String
(Int -> Timeouts -> ShowS)
-> (Timeouts -> String) -> ([Timeouts] -> ShowS) -> Show Timeouts
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Timeouts -> ShowS
showsPrec :: Int -> Timeouts -> ShowS
$cshow :: Timeouts -> String
show :: Timeouts -> String
$cshowList :: [Timeouts] -> ShowS
showList :: [Timeouts] -> ShowS
Show, (forall x. Timeouts -> Rep Timeouts x)
-> (forall x. Rep Timeouts x -> Timeouts) -> Generic Timeouts
forall x. Rep Timeouts x -> Timeouts
forall x. Timeouts -> Rep Timeouts x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Timeouts -> Rep Timeouts x
from :: forall x. Timeouts -> Rep Timeouts x
$cto :: forall x. Rep Timeouts x -> Timeouts
to :: forall x. Rep Timeouts x -> Timeouts
Generic, Timeouts -> Timeouts -> Bool
(Timeouts -> Timeouts -> Bool)
-> (Timeouts -> Timeouts -> Bool) -> Eq Timeouts
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Timeouts -> Timeouts -> Bool
== :: Timeouts -> Timeouts -> Bool
$c/= :: Timeouts -> Timeouts -> Bool
/= :: Timeouts -> Timeouts -> Bool
Eq)
instance FromJSON Timeouts where
parseJSON :: Value -> Parser Timeouts
parseJSON :: Value -> Parser Timeouts
parseJSON = String -> (Object -> Parser Timeouts) -> Value -> Parser Timeouts
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Timeouts" ((Object -> Parser Timeouts) -> Value -> Parser Timeouts)
-> (Object -> Parser Timeouts) -> Value -> Parser Timeouts
forall a b. (a -> b) -> a -> b
$ \Object
v ->
do
implicit <- Object
v Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"implicit"
pageLoad <- v .:? "pageLoad"
script <- v .:? "script"
pure MkTimeouts {..}
instance ToJSON Timeouts where
toJSON :: Timeouts -> Value
toJSON :: Timeouts -> Value
toJSON MkTimeouts {Maybe Int
implicit :: Timeouts -> Maybe Int
pageLoad :: Timeouts -> Maybe Int
script :: Timeouts -> Maybe Int
implicit :: Maybe Int
pageLoad :: Maybe Int
script :: Maybe Int
..} =
[Pair] -> Value
object
[ Key
"implicit" Key -> Maybe Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Int
implicit,
Key
"pageLoad" Key -> Maybe Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Int
pageLoad,
Key
"script" Key -> Maybe Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Int
script
]