{-# LANGUAGE OverloadedStrings, RecordWildCards, TupleSections #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}


{- |
= DeviceOrientation

-}


module CDP.Domains.DeviceOrientation (module CDP.Domains.DeviceOrientation) where

import           Control.Applicative  ((<$>))
import           Control.Monad
import           Control.Monad.Loops
import           Control.Monad.Trans  (liftIO)
import qualified Data.Map             as M
import           Data.Maybe          
import Data.Functor.Identity
import Data.String
import qualified Data.Text as T
import qualified Data.List as List
import qualified Data.Text.IO         as TI
import qualified Data.Vector          as V
import Data.Aeson.Types (Parser(..))
import           Data.Aeson           (FromJSON (..), ToJSON (..), (.:), (.:?), (.=), (.!=), (.:!))
import qualified Data.Aeson           as A
import qualified Network.HTTP.Simple as Http
import qualified Network.URI          as Uri
import qualified Network.WebSockets as WS
import Control.Concurrent
import qualified Data.ByteString.Lazy as BS
import qualified Data.Map as Map
import Data.Proxy
import System.Random
import GHC.Generics
import Data.Char
import Data.Default

import CDP.Internal.Utils




-- | Clears the overridden Device Orientation.

-- | Parameters of the 'DeviceOrientation.clearDeviceOrientationOverride' command.
data PDeviceOrientationClearDeviceOrientationOverride = PDeviceOrientationClearDeviceOrientationOverride
  deriving (PDeviceOrientationClearDeviceOrientationOverride
-> PDeviceOrientationClearDeviceOrientationOverride -> Bool
(PDeviceOrientationClearDeviceOrientationOverride
 -> PDeviceOrientationClearDeviceOrientationOverride -> Bool)
-> (PDeviceOrientationClearDeviceOrientationOverride
    -> PDeviceOrientationClearDeviceOrientationOverride -> Bool)
-> Eq PDeviceOrientationClearDeviceOrientationOverride
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PDeviceOrientationClearDeviceOrientationOverride
-> PDeviceOrientationClearDeviceOrientationOverride -> Bool
$c/= :: PDeviceOrientationClearDeviceOrientationOverride
-> PDeviceOrientationClearDeviceOrientationOverride -> Bool
== :: PDeviceOrientationClearDeviceOrientationOverride
-> PDeviceOrientationClearDeviceOrientationOverride -> Bool
$c== :: PDeviceOrientationClearDeviceOrientationOverride
-> PDeviceOrientationClearDeviceOrientationOverride -> Bool
Eq, Int -> PDeviceOrientationClearDeviceOrientationOverride -> ShowS
[PDeviceOrientationClearDeviceOrientationOverride] -> ShowS
PDeviceOrientationClearDeviceOrientationOverride -> String
(Int -> PDeviceOrientationClearDeviceOrientationOverride -> ShowS)
-> (PDeviceOrientationClearDeviceOrientationOverride -> String)
-> ([PDeviceOrientationClearDeviceOrientationOverride] -> ShowS)
-> Show PDeviceOrientationClearDeviceOrientationOverride
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PDeviceOrientationClearDeviceOrientationOverride] -> ShowS
$cshowList :: [PDeviceOrientationClearDeviceOrientationOverride] -> ShowS
show :: PDeviceOrientationClearDeviceOrientationOverride -> String
$cshow :: PDeviceOrientationClearDeviceOrientationOverride -> String
showsPrec :: Int -> PDeviceOrientationClearDeviceOrientationOverride -> ShowS
$cshowsPrec :: Int -> PDeviceOrientationClearDeviceOrientationOverride -> ShowS
Show)
pDeviceOrientationClearDeviceOrientationOverride
  :: PDeviceOrientationClearDeviceOrientationOverride
pDeviceOrientationClearDeviceOrientationOverride :: PDeviceOrientationClearDeviceOrientationOverride
pDeviceOrientationClearDeviceOrientationOverride
  = PDeviceOrientationClearDeviceOrientationOverride
PDeviceOrientationClearDeviceOrientationOverride
instance ToJSON PDeviceOrientationClearDeviceOrientationOverride where
  toJSON :: PDeviceOrientationClearDeviceOrientationOverride -> Value
toJSON PDeviceOrientationClearDeviceOrientationOverride
_ = Value
A.Null
instance Command PDeviceOrientationClearDeviceOrientationOverride where
  type CommandResponse PDeviceOrientationClearDeviceOrientationOverride = ()
  commandName :: Proxy PDeviceOrientationClearDeviceOrientationOverride -> String
commandName Proxy PDeviceOrientationClearDeviceOrientationOverride
_ = String
"DeviceOrientation.clearDeviceOrientationOverride"
  fromJSON :: Proxy PDeviceOrientationClearDeviceOrientationOverride
-> Value
-> Result
     (CommandResponse PDeviceOrientationClearDeviceOrientationOverride)
fromJSON = Result () -> Value -> Result ()
forall a b. a -> b -> a
const (Result () -> Value -> Result ())
-> (Proxy PDeviceOrientationClearDeviceOrientationOverride
    -> Result ())
-> Proxy PDeviceOrientationClearDeviceOrientationOverride
-> Value
-> Result ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> Result ()
forall a. a -> Result a
A.Success (() -> Result ())
-> (Proxy PDeviceOrientationClearDeviceOrientationOverride -> ())
-> Proxy PDeviceOrientationClearDeviceOrientationOverride
-> Result ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> Proxy PDeviceOrientationClearDeviceOrientationOverride -> ()
forall a b. a -> b -> a
const ()

-- | Overrides the Device Orientation.

-- | Parameters of the 'DeviceOrientation.setDeviceOrientationOverride' command.
data PDeviceOrientationSetDeviceOrientationOverride = PDeviceOrientationSetDeviceOrientationOverride
  {
    -- | Mock alpha
    PDeviceOrientationSetDeviceOrientationOverride -> Double
pDeviceOrientationSetDeviceOrientationOverrideAlpha :: Double,
    -- | Mock beta
    PDeviceOrientationSetDeviceOrientationOverride -> Double
pDeviceOrientationSetDeviceOrientationOverrideBeta :: Double,
    -- | Mock gamma
    PDeviceOrientationSetDeviceOrientationOverride -> Double
pDeviceOrientationSetDeviceOrientationOverrideGamma :: Double
  }
  deriving (PDeviceOrientationSetDeviceOrientationOverride
-> PDeviceOrientationSetDeviceOrientationOverride -> Bool
(PDeviceOrientationSetDeviceOrientationOverride
 -> PDeviceOrientationSetDeviceOrientationOverride -> Bool)
-> (PDeviceOrientationSetDeviceOrientationOverride
    -> PDeviceOrientationSetDeviceOrientationOverride -> Bool)
-> Eq PDeviceOrientationSetDeviceOrientationOverride
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PDeviceOrientationSetDeviceOrientationOverride
-> PDeviceOrientationSetDeviceOrientationOverride -> Bool
$c/= :: PDeviceOrientationSetDeviceOrientationOverride
-> PDeviceOrientationSetDeviceOrientationOverride -> Bool
== :: PDeviceOrientationSetDeviceOrientationOverride
-> PDeviceOrientationSetDeviceOrientationOverride -> Bool
$c== :: PDeviceOrientationSetDeviceOrientationOverride
-> PDeviceOrientationSetDeviceOrientationOverride -> Bool
Eq, Int -> PDeviceOrientationSetDeviceOrientationOverride -> ShowS
[PDeviceOrientationSetDeviceOrientationOverride] -> ShowS
PDeviceOrientationSetDeviceOrientationOverride -> String
(Int -> PDeviceOrientationSetDeviceOrientationOverride -> ShowS)
-> (PDeviceOrientationSetDeviceOrientationOverride -> String)
-> ([PDeviceOrientationSetDeviceOrientationOverride] -> ShowS)
-> Show PDeviceOrientationSetDeviceOrientationOverride
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PDeviceOrientationSetDeviceOrientationOverride] -> ShowS
$cshowList :: [PDeviceOrientationSetDeviceOrientationOverride] -> ShowS
show :: PDeviceOrientationSetDeviceOrientationOverride -> String
$cshow :: PDeviceOrientationSetDeviceOrientationOverride -> String
showsPrec :: Int -> PDeviceOrientationSetDeviceOrientationOverride -> ShowS
$cshowsPrec :: Int -> PDeviceOrientationSetDeviceOrientationOverride -> ShowS
Show)
pDeviceOrientationSetDeviceOrientationOverride
  {-
  -- | Mock alpha
  -}
  :: Double
  {-
  -- | Mock beta
  -}
  -> Double
  {-
  -- | Mock gamma
  -}
  -> Double
  -> PDeviceOrientationSetDeviceOrientationOverride
pDeviceOrientationSetDeviceOrientationOverride :: Double
-> Double
-> Double
-> PDeviceOrientationSetDeviceOrientationOverride
pDeviceOrientationSetDeviceOrientationOverride
  Double
arg_pDeviceOrientationSetDeviceOrientationOverrideAlpha
  Double
arg_pDeviceOrientationSetDeviceOrientationOverrideBeta
  Double
arg_pDeviceOrientationSetDeviceOrientationOverrideGamma
  = Double
-> Double
-> Double
-> PDeviceOrientationSetDeviceOrientationOverride
PDeviceOrientationSetDeviceOrientationOverride
    Double
arg_pDeviceOrientationSetDeviceOrientationOverrideAlpha
    Double
arg_pDeviceOrientationSetDeviceOrientationOverrideBeta
    Double
arg_pDeviceOrientationSetDeviceOrientationOverrideGamma
instance ToJSON PDeviceOrientationSetDeviceOrientationOverride where
  toJSON :: PDeviceOrientationSetDeviceOrientationOverride -> Value
toJSON PDeviceOrientationSetDeviceOrientationOverride
p = [Pair] -> Value
A.object ([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
catMaybes [
    (Text
"alpha" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Double -> Maybe Double
forall a. a -> Maybe a
Just (PDeviceOrientationSetDeviceOrientationOverride -> Double
pDeviceOrientationSetDeviceOrientationOverrideAlpha PDeviceOrientationSetDeviceOrientationOverride
p),
    (Text
"beta" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Double -> Maybe Double
forall a. a -> Maybe a
Just (PDeviceOrientationSetDeviceOrientationOverride -> Double
pDeviceOrientationSetDeviceOrientationOverrideBeta PDeviceOrientationSetDeviceOrientationOverride
p),
    (Text
"gamma" Text -> Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Double -> Pair) -> Maybe Double -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Double -> Maybe Double
forall a. a -> Maybe a
Just (PDeviceOrientationSetDeviceOrientationOverride -> Double
pDeviceOrientationSetDeviceOrientationOverrideGamma PDeviceOrientationSetDeviceOrientationOverride
p)
    ]
instance Command PDeviceOrientationSetDeviceOrientationOverride where
  type CommandResponse PDeviceOrientationSetDeviceOrientationOverride = ()
  commandName :: Proxy PDeviceOrientationSetDeviceOrientationOverride -> String
commandName Proxy PDeviceOrientationSetDeviceOrientationOverride
_ = String
"DeviceOrientation.setDeviceOrientationOverride"
  fromJSON :: Proxy PDeviceOrientationSetDeviceOrientationOverride
-> Value
-> Result
     (CommandResponse PDeviceOrientationSetDeviceOrientationOverride)
fromJSON = Result () -> Value -> Result ()
forall a b. a -> b -> a
const (Result () -> Value -> Result ())
-> (Proxy PDeviceOrientationSetDeviceOrientationOverride
    -> Result ())
-> Proxy PDeviceOrientationSetDeviceOrientationOverride
-> Value
-> Result ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> Result ()
forall a. a -> Result a
A.Success (() -> Result ())
-> (Proxy PDeviceOrientationSetDeviceOrientationOverride -> ())
-> Proxy PDeviceOrientationSetDeviceOrientationOverride
-> Result ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> Proxy PDeviceOrientationSetDeviceOrientationOverride -> ()
forall a b. a -> b -> a
const ()