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


{- |
= Media

This domain allows detailed inspection of media elements
-}


module CDP.Domains.Media (module CDP.Domains.Media) 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




-- | Type 'Media.PlayerId'.
--   Players will get an ID that is unique within the agent context.
type MediaPlayerId = T.Text

-- | Type 'Media.Timestamp'.
type MediaTimestamp = Double

-- | Type 'Media.PlayerMessage'.
--   Have one type per entry in MediaLogRecord::Type
--   Corresponds to kMessage
data MediaPlayerMessageLevel = MediaPlayerMessageLevelError | MediaPlayerMessageLevelWarning | MediaPlayerMessageLevelInfo | MediaPlayerMessageLevelDebug
  deriving (Eq MediaPlayerMessageLevel
Eq MediaPlayerMessageLevel
-> (MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Ordering)
-> (MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool)
-> (MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool)
-> (MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool)
-> (MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool)
-> (MediaPlayerMessageLevel
    -> MediaPlayerMessageLevel -> MediaPlayerMessageLevel)
-> (MediaPlayerMessageLevel
    -> MediaPlayerMessageLevel -> MediaPlayerMessageLevel)
-> Ord MediaPlayerMessageLevel
MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Ordering
MediaPlayerMessageLevel
-> MediaPlayerMessageLevel -> MediaPlayerMessageLevel
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MediaPlayerMessageLevel
-> MediaPlayerMessageLevel -> MediaPlayerMessageLevel
$cmin :: MediaPlayerMessageLevel
-> MediaPlayerMessageLevel -> MediaPlayerMessageLevel
max :: MediaPlayerMessageLevel
-> MediaPlayerMessageLevel -> MediaPlayerMessageLevel
$cmax :: MediaPlayerMessageLevel
-> MediaPlayerMessageLevel -> MediaPlayerMessageLevel
>= :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
$c>= :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
> :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
$c> :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
<= :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
$c<= :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
< :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
$c< :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
compare :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Ordering
$ccompare :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Ordering
$cp1Ord :: Eq MediaPlayerMessageLevel
Ord, MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
(MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool)
-> (MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool)
-> Eq MediaPlayerMessageLevel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
$c/= :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
== :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
$c== :: MediaPlayerMessageLevel -> MediaPlayerMessageLevel -> Bool
Eq, Int -> MediaPlayerMessageLevel -> ShowS
[MediaPlayerMessageLevel] -> ShowS
MediaPlayerMessageLevel -> String
(Int -> MediaPlayerMessageLevel -> ShowS)
-> (MediaPlayerMessageLevel -> String)
-> ([MediaPlayerMessageLevel] -> ShowS)
-> Show MediaPlayerMessageLevel
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerMessageLevel] -> ShowS
$cshowList :: [MediaPlayerMessageLevel] -> ShowS
show :: MediaPlayerMessageLevel -> String
$cshow :: MediaPlayerMessageLevel -> String
showsPrec :: Int -> MediaPlayerMessageLevel -> ShowS
$cshowsPrec :: Int -> MediaPlayerMessageLevel -> ShowS
Show, ReadPrec [MediaPlayerMessageLevel]
ReadPrec MediaPlayerMessageLevel
Int -> ReadS MediaPlayerMessageLevel
ReadS [MediaPlayerMessageLevel]
(Int -> ReadS MediaPlayerMessageLevel)
-> ReadS [MediaPlayerMessageLevel]
-> ReadPrec MediaPlayerMessageLevel
-> ReadPrec [MediaPlayerMessageLevel]
-> Read MediaPlayerMessageLevel
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MediaPlayerMessageLevel]
$creadListPrec :: ReadPrec [MediaPlayerMessageLevel]
readPrec :: ReadPrec MediaPlayerMessageLevel
$creadPrec :: ReadPrec MediaPlayerMessageLevel
readList :: ReadS [MediaPlayerMessageLevel]
$creadList :: ReadS [MediaPlayerMessageLevel]
readsPrec :: Int -> ReadS MediaPlayerMessageLevel
$creadsPrec :: Int -> ReadS MediaPlayerMessageLevel
Read)
instance FromJSON MediaPlayerMessageLevel where
  parseJSON :: Value -> Parser MediaPlayerMessageLevel
parseJSON = String
-> (Text -> Parser MediaPlayerMessageLevel)
-> Value
-> Parser MediaPlayerMessageLevel
forall a. String -> (Text -> Parser a) -> Value -> Parser a
A.withText String
"MediaPlayerMessageLevel" ((Text -> Parser MediaPlayerMessageLevel)
 -> Value -> Parser MediaPlayerMessageLevel)
-> (Text -> Parser MediaPlayerMessageLevel)
-> Value
-> Parser MediaPlayerMessageLevel
forall a b. (a -> b) -> a -> b
$ \Text
v -> case Text
v of
    Text
"error" -> MediaPlayerMessageLevel -> Parser MediaPlayerMessageLevel
forall (f :: * -> *) a. Applicative f => a -> f a
pure MediaPlayerMessageLevel
MediaPlayerMessageLevelError
    Text
"warning" -> MediaPlayerMessageLevel -> Parser MediaPlayerMessageLevel
forall (f :: * -> *) a. Applicative f => a -> f a
pure MediaPlayerMessageLevel
MediaPlayerMessageLevelWarning
    Text
"info" -> MediaPlayerMessageLevel -> Parser MediaPlayerMessageLevel
forall (f :: * -> *) a. Applicative f => a -> f a
pure MediaPlayerMessageLevel
MediaPlayerMessageLevelInfo
    Text
"debug" -> MediaPlayerMessageLevel -> Parser MediaPlayerMessageLevel
forall (f :: * -> *) a. Applicative f => a -> f a
pure MediaPlayerMessageLevel
MediaPlayerMessageLevelDebug
    Text
"_" -> String -> Parser MediaPlayerMessageLevel
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"failed to parse MediaPlayerMessageLevel"
instance ToJSON MediaPlayerMessageLevel where
  toJSON :: MediaPlayerMessageLevel -> Value
toJSON MediaPlayerMessageLevel
v = Text -> Value
A.String (Text -> Value) -> Text -> Value
forall a b. (a -> b) -> a -> b
$ case MediaPlayerMessageLevel
v of
    MediaPlayerMessageLevel
MediaPlayerMessageLevelError -> Text
"error"
    MediaPlayerMessageLevel
MediaPlayerMessageLevelWarning -> Text
"warning"
    MediaPlayerMessageLevel
MediaPlayerMessageLevelInfo -> Text
"info"
    MediaPlayerMessageLevel
MediaPlayerMessageLevelDebug -> Text
"debug"
data MediaPlayerMessage = MediaPlayerMessage
  {
    -- | Keep in sync with MediaLogMessageLevel
    --   We are currently keeping the message level 'error' separate from the
    --   PlayerError type because right now they represent different things,
    --   this one being a DVLOG(ERROR) style log message that gets printed
    --   based on what log level is selected in the UI, and the other is a
    --   representation of a media::PipelineStatus object. Soon however we're
    --   going to be moving away from using PipelineStatus for errors and
    --   introducing a new error type which should hopefully let us integrate
    --   the error log level into the PlayerError type.
    MediaPlayerMessage -> MediaPlayerMessageLevel
mediaPlayerMessageLevel :: MediaPlayerMessageLevel,
    MediaPlayerMessage -> Text
mediaPlayerMessageMessage :: T.Text
  }
  deriving (MediaPlayerMessage -> MediaPlayerMessage -> Bool
(MediaPlayerMessage -> MediaPlayerMessage -> Bool)
-> (MediaPlayerMessage -> MediaPlayerMessage -> Bool)
-> Eq MediaPlayerMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerMessage -> MediaPlayerMessage -> Bool
$c/= :: MediaPlayerMessage -> MediaPlayerMessage -> Bool
== :: MediaPlayerMessage -> MediaPlayerMessage -> Bool
$c== :: MediaPlayerMessage -> MediaPlayerMessage -> Bool
Eq, Int -> MediaPlayerMessage -> ShowS
[MediaPlayerMessage] -> ShowS
MediaPlayerMessage -> String
(Int -> MediaPlayerMessage -> ShowS)
-> (MediaPlayerMessage -> String)
-> ([MediaPlayerMessage] -> ShowS)
-> Show MediaPlayerMessage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerMessage] -> ShowS
$cshowList :: [MediaPlayerMessage] -> ShowS
show :: MediaPlayerMessage -> String
$cshow :: MediaPlayerMessage -> String
showsPrec :: Int -> MediaPlayerMessage -> ShowS
$cshowsPrec :: Int -> MediaPlayerMessage -> ShowS
Show)
instance FromJSON MediaPlayerMessage where
  parseJSON :: Value -> Parser MediaPlayerMessage
parseJSON = String
-> (Object -> Parser MediaPlayerMessage)
-> Value
-> Parser MediaPlayerMessage
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerMessage" ((Object -> Parser MediaPlayerMessage)
 -> Value -> Parser MediaPlayerMessage)
-> (Object -> Parser MediaPlayerMessage)
-> Value
-> Parser MediaPlayerMessage
forall a b. (a -> b) -> a -> b
$ \Object
o -> MediaPlayerMessageLevel -> Text -> MediaPlayerMessage
MediaPlayerMessage
    (MediaPlayerMessageLevel -> Text -> MediaPlayerMessage)
-> Parser MediaPlayerMessageLevel
-> Parser (Text -> MediaPlayerMessage)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser MediaPlayerMessageLevel
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"level"
    Parser (Text -> MediaPlayerMessage)
-> Parser Text -> Parser MediaPlayerMessage
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"message"
instance ToJSON MediaPlayerMessage where
  toJSON :: MediaPlayerMessage -> Value
toJSON MediaPlayerMessage
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
"level" Text -> MediaPlayerMessageLevel -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (MediaPlayerMessageLevel -> Pair)
-> Maybe MediaPlayerMessageLevel -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> MediaPlayerMessageLevel -> Maybe MediaPlayerMessageLevel
forall a. a -> Maybe a
Just (MediaPlayerMessage -> MediaPlayerMessageLevel
mediaPlayerMessageLevel MediaPlayerMessage
p),
    (Text
"message" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall a. a -> Maybe a
Just (MediaPlayerMessage -> Text
mediaPlayerMessageMessage MediaPlayerMessage
p)
    ]

-- | Type 'Media.PlayerProperty'.
--   Corresponds to kMediaPropertyChange
data MediaPlayerProperty = MediaPlayerProperty
  {
    MediaPlayerProperty -> Text
mediaPlayerPropertyName :: T.Text,
    MediaPlayerProperty -> Text
mediaPlayerPropertyValue :: T.Text
  }
  deriving (MediaPlayerProperty -> MediaPlayerProperty -> Bool
(MediaPlayerProperty -> MediaPlayerProperty -> Bool)
-> (MediaPlayerProperty -> MediaPlayerProperty -> Bool)
-> Eq MediaPlayerProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerProperty -> MediaPlayerProperty -> Bool
$c/= :: MediaPlayerProperty -> MediaPlayerProperty -> Bool
== :: MediaPlayerProperty -> MediaPlayerProperty -> Bool
$c== :: MediaPlayerProperty -> MediaPlayerProperty -> Bool
Eq, Int -> MediaPlayerProperty -> ShowS
[MediaPlayerProperty] -> ShowS
MediaPlayerProperty -> String
(Int -> MediaPlayerProperty -> ShowS)
-> (MediaPlayerProperty -> String)
-> ([MediaPlayerProperty] -> ShowS)
-> Show MediaPlayerProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerProperty] -> ShowS
$cshowList :: [MediaPlayerProperty] -> ShowS
show :: MediaPlayerProperty -> String
$cshow :: MediaPlayerProperty -> String
showsPrec :: Int -> MediaPlayerProperty -> ShowS
$cshowsPrec :: Int -> MediaPlayerProperty -> ShowS
Show)
instance FromJSON MediaPlayerProperty where
  parseJSON :: Value -> Parser MediaPlayerProperty
parseJSON = String
-> (Object -> Parser MediaPlayerProperty)
-> Value
-> Parser MediaPlayerProperty
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerProperty" ((Object -> Parser MediaPlayerProperty)
 -> Value -> Parser MediaPlayerProperty)
-> (Object -> Parser MediaPlayerProperty)
-> Value
-> Parser MediaPlayerProperty
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> Text -> MediaPlayerProperty
MediaPlayerProperty
    (Text -> Text -> MediaPlayerProperty)
-> Parser Text -> Parser (Text -> MediaPlayerProperty)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"name"
    Parser (Text -> MediaPlayerProperty)
-> Parser Text -> Parser MediaPlayerProperty
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"value"
instance ToJSON MediaPlayerProperty where
  toJSON :: MediaPlayerProperty -> Value
toJSON MediaPlayerProperty
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
"name" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall a. a -> Maybe a
Just (MediaPlayerProperty -> Text
mediaPlayerPropertyName MediaPlayerProperty
p),
    (Text
"value" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall a. a -> Maybe a
Just (MediaPlayerProperty -> Text
mediaPlayerPropertyValue MediaPlayerProperty
p)
    ]

-- | Type 'Media.PlayerEvent'.
--   Corresponds to kMediaEventTriggered
data MediaPlayerEvent = MediaPlayerEvent
  {
    MediaPlayerEvent -> MediaTimestamp
mediaPlayerEventTimestamp :: MediaTimestamp,
    MediaPlayerEvent -> Text
mediaPlayerEventValue :: T.Text
  }
  deriving (MediaPlayerEvent -> MediaPlayerEvent -> Bool
(MediaPlayerEvent -> MediaPlayerEvent -> Bool)
-> (MediaPlayerEvent -> MediaPlayerEvent -> Bool)
-> Eq MediaPlayerEvent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerEvent -> MediaPlayerEvent -> Bool
$c/= :: MediaPlayerEvent -> MediaPlayerEvent -> Bool
== :: MediaPlayerEvent -> MediaPlayerEvent -> Bool
$c== :: MediaPlayerEvent -> MediaPlayerEvent -> Bool
Eq, Int -> MediaPlayerEvent -> ShowS
[MediaPlayerEvent] -> ShowS
MediaPlayerEvent -> String
(Int -> MediaPlayerEvent -> ShowS)
-> (MediaPlayerEvent -> String)
-> ([MediaPlayerEvent] -> ShowS)
-> Show MediaPlayerEvent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerEvent] -> ShowS
$cshowList :: [MediaPlayerEvent] -> ShowS
show :: MediaPlayerEvent -> String
$cshow :: MediaPlayerEvent -> String
showsPrec :: Int -> MediaPlayerEvent -> ShowS
$cshowsPrec :: Int -> MediaPlayerEvent -> ShowS
Show)
instance FromJSON MediaPlayerEvent where
  parseJSON :: Value -> Parser MediaPlayerEvent
parseJSON = String
-> (Object -> Parser MediaPlayerEvent)
-> Value
-> Parser MediaPlayerEvent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerEvent" ((Object -> Parser MediaPlayerEvent)
 -> Value -> Parser MediaPlayerEvent)
-> (Object -> Parser MediaPlayerEvent)
-> Value
-> Parser MediaPlayerEvent
forall a b. (a -> b) -> a -> b
$ \Object
o -> MediaTimestamp -> Text -> MediaPlayerEvent
MediaPlayerEvent
    (MediaTimestamp -> Text -> MediaPlayerEvent)
-> Parser MediaTimestamp -> Parser (Text -> MediaPlayerEvent)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser MediaTimestamp
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"timestamp"
    Parser (Text -> MediaPlayerEvent)
-> Parser Text -> Parser MediaPlayerEvent
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"value"
instance ToJSON MediaPlayerEvent where
  toJSON :: MediaPlayerEvent -> Value
toJSON MediaPlayerEvent
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
"timestamp" Text -> MediaTimestamp -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (MediaTimestamp -> Pair) -> Maybe MediaTimestamp -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> MediaTimestamp -> Maybe MediaTimestamp
forall a. a -> Maybe a
Just (MediaPlayerEvent -> MediaTimestamp
mediaPlayerEventTimestamp MediaPlayerEvent
p),
    (Text
"value" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall a. a -> Maybe a
Just (MediaPlayerEvent -> Text
mediaPlayerEventValue MediaPlayerEvent
p)
    ]

-- | Type 'Media.PlayerErrorSourceLocation'.
--   Represents logged source line numbers reported in an error.
--   NOTE: file and line are from chromium c++ implementation code, not js.
data MediaPlayerErrorSourceLocation = MediaPlayerErrorSourceLocation
  {
    MediaPlayerErrorSourceLocation -> Text
mediaPlayerErrorSourceLocationFile :: T.Text,
    MediaPlayerErrorSourceLocation -> Int
mediaPlayerErrorSourceLocationLine :: Int
  }
  deriving (MediaPlayerErrorSourceLocation
-> MediaPlayerErrorSourceLocation -> Bool
(MediaPlayerErrorSourceLocation
 -> MediaPlayerErrorSourceLocation -> Bool)
-> (MediaPlayerErrorSourceLocation
    -> MediaPlayerErrorSourceLocation -> Bool)
-> Eq MediaPlayerErrorSourceLocation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerErrorSourceLocation
-> MediaPlayerErrorSourceLocation -> Bool
$c/= :: MediaPlayerErrorSourceLocation
-> MediaPlayerErrorSourceLocation -> Bool
== :: MediaPlayerErrorSourceLocation
-> MediaPlayerErrorSourceLocation -> Bool
$c== :: MediaPlayerErrorSourceLocation
-> MediaPlayerErrorSourceLocation -> Bool
Eq, Int -> MediaPlayerErrorSourceLocation -> ShowS
[MediaPlayerErrorSourceLocation] -> ShowS
MediaPlayerErrorSourceLocation -> String
(Int -> MediaPlayerErrorSourceLocation -> ShowS)
-> (MediaPlayerErrorSourceLocation -> String)
-> ([MediaPlayerErrorSourceLocation] -> ShowS)
-> Show MediaPlayerErrorSourceLocation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerErrorSourceLocation] -> ShowS
$cshowList :: [MediaPlayerErrorSourceLocation] -> ShowS
show :: MediaPlayerErrorSourceLocation -> String
$cshow :: MediaPlayerErrorSourceLocation -> String
showsPrec :: Int -> MediaPlayerErrorSourceLocation -> ShowS
$cshowsPrec :: Int -> MediaPlayerErrorSourceLocation -> ShowS
Show)
instance FromJSON MediaPlayerErrorSourceLocation where
  parseJSON :: Value -> Parser MediaPlayerErrorSourceLocation
parseJSON = String
-> (Object -> Parser MediaPlayerErrorSourceLocation)
-> Value
-> Parser MediaPlayerErrorSourceLocation
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerErrorSourceLocation" ((Object -> Parser MediaPlayerErrorSourceLocation)
 -> Value -> Parser MediaPlayerErrorSourceLocation)
-> (Object -> Parser MediaPlayerErrorSourceLocation)
-> Value
-> Parser MediaPlayerErrorSourceLocation
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> Int -> MediaPlayerErrorSourceLocation
MediaPlayerErrorSourceLocation
    (Text -> Int -> MediaPlayerErrorSourceLocation)
-> Parser Text -> Parser (Int -> MediaPlayerErrorSourceLocation)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"file"
    Parser (Int -> MediaPlayerErrorSourceLocation)
-> Parser Int -> Parser MediaPlayerErrorSourceLocation
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"line"
instance ToJSON MediaPlayerErrorSourceLocation where
  toJSON :: MediaPlayerErrorSourceLocation -> Value
toJSON MediaPlayerErrorSourceLocation
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
"file" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall a. a -> Maybe a
Just (MediaPlayerErrorSourceLocation -> Text
mediaPlayerErrorSourceLocationFile MediaPlayerErrorSourceLocation
p),
    (Text
"line" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> Maybe Int
forall a. a -> Maybe a
Just (MediaPlayerErrorSourceLocation -> Int
mediaPlayerErrorSourceLocationLine MediaPlayerErrorSourceLocation
p)
    ]

-- | Type 'Media.PlayerError'.
--   Corresponds to kMediaError
data MediaPlayerError = MediaPlayerError
  {
    MediaPlayerError -> Text
mediaPlayerErrorErrorType :: T.Text,
    -- | Code is the numeric enum entry for a specific set of error codes, such
    --   as PipelineStatusCodes in media/base/pipeline_status.h
    MediaPlayerError -> Int
mediaPlayerErrorCode :: Int,
    -- | A trace of where this error was caused / where it passed through.
    MediaPlayerError -> [MediaPlayerErrorSourceLocation]
mediaPlayerErrorStack :: [MediaPlayerErrorSourceLocation],
    -- | Errors potentially have a root cause error, ie, a DecoderError might be
    --   caused by an WindowsError
    MediaPlayerError -> [MediaPlayerError]
mediaPlayerErrorCause :: [MediaPlayerError],
    -- | Extra data attached to an error, such as an HRESULT, Video Codec, etc.
    MediaPlayerError -> [(Text, Text)]
mediaPlayerErrorData :: [(T.Text, T.Text)]
  }
  deriving (MediaPlayerError -> MediaPlayerError -> Bool
(MediaPlayerError -> MediaPlayerError -> Bool)
-> (MediaPlayerError -> MediaPlayerError -> Bool)
-> Eq MediaPlayerError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerError -> MediaPlayerError -> Bool
$c/= :: MediaPlayerError -> MediaPlayerError -> Bool
== :: MediaPlayerError -> MediaPlayerError -> Bool
$c== :: MediaPlayerError -> MediaPlayerError -> Bool
Eq, Int -> MediaPlayerError -> ShowS
[MediaPlayerError] -> ShowS
MediaPlayerError -> String
(Int -> MediaPlayerError -> ShowS)
-> (MediaPlayerError -> String)
-> ([MediaPlayerError] -> ShowS)
-> Show MediaPlayerError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerError] -> ShowS
$cshowList :: [MediaPlayerError] -> ShowS
show :: MediaPlayerError -> String
$cshow :: MediaPlayerError -> String
showsPrec :: Int -> MediaPlayerError -> ShowS
$cshowsPrec :: Int -> MediaPlayerError -> ShowS
Show)
instance FromJSON MediaPlayerError where
  parseJSON :: Value -> Parser MediaPlayerError
parseJSON = String
-> (Object -> Parser MediaPlayerError)
-> Value
-> Parser MediaPlayerError
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerError" ((Object -> Parser MediaPlayerError)
 -> Value -> Parser MediaPlayerError)
-> (Object -> Parser MediaPlayerError)
-> Value
-> Parser MediaPlayerError
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text
-> Int
-> [MediaPlayerErrorSourceLocation]
-> [MediaPlayerError]
-> [(Text, Text)]
-> MediaPlayerError
MediaPlayerError
    (Text
 -> Int
 -> [MediaPlayerErrorSourceLocation]
 -> [MediaPlayerError]
 -> [(Text, Text)]
 -> MediaPlayerError)
-> Parser Text
-> Parser
     (Int
      -> [MediaPlayerErrorSourceLocation]
      -> [MediaPlayerError]
      -> [(Text, Text)]
      -> MediaPlayerError)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"errorType"
    Parser
  (Int
   -> [MediaPlayerErrorSourceLocation]
   -> [MediaPlayerError]
   -> [(Text, Text)]
   -> MediaPlayerError)
-> Parser Int
-> Parser
     ([MediaPlayerErrorSourceLocation]
      -> [MediaPlayerError] -> [(Text, Text)] -> MediaPlayerError)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"code"
    Parser
  ([MediaPlayerErrorSourceLocation]
   -> [MediaPlayerError] -> [(Text, Text)] -> MediaPlayerError)
-> Parser [MediaPlayerErrorSourceLocation]
-> Parser
     ([MediaPlayerError] -> [(Text, Text)] -> MediaPlayerError)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser [MediaPlayerErrorSourceLocation]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"stack"
    Parser ([MediaPlayerError] -> [(Text, Text)] -> MediaPlayerError)
-> Parser [MediaPlayerError]
-> Parser ([(Text, Text)] -> MediaPlayerError)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser [MediaPlayerError]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"cause"
    Parser ([(Text, Text)] -> MediaPlayerError)
-> Parser [(Text, Text)] -> Parser MediaPlayerError
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser [(Text, Text)]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"data"
instance ToJSON MediaPlayerError where
  toJSON :: MediaPlayerError -> Value
toJSON MediaPlayerError
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
"errorType" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall a. a -> Maybe a
Just (MediaPlayerError -> Text
mediaPlayerErrorErrorType MediaPlayerError
p),
    (Text
"code" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> Maybe Int
forall a. a -> Maybe a
Just (MediaPlayerError -> Int
mediaPlayerErrorCode MediaPlayerError
p),
    (Text
"stack" Text -> [MediaPlayerErrorSourceLocation] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) ([MediaPlayerErrorSourceLocation] -> Pair)
-> Maybe [MediaPlayerErrorSourceLocation] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MediaPlayerErrorSourceLocation]
-> Maybe [MediaPlayerErrorSourceLocation]
forall a. a -> Maybe a
Just (MediaPlayerError -> [MediaPlayerErrorSourceLocation]
mediaPlayerErrorStack MediaPlayerError
p),
    (Text
"cause" Text -> [MediaPlayerError] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) ([MediaPlayerError] -> Pair)
-> Maybe [MediaPlayerError] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MediaPlayerError] -> Maybe [MediaPlayerError]
forall a. a -> Maybe a
Just (MediaPlayerError -> [MediaPlayerError]
mediaPlayerErrorCause MediaPlayerError
p),
    (Text
"data" Text -> [(Text, Text)] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
A..=) ([(Text, Text)] -> Pair) -> Maybe [(Text, Text)] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(Text, Text)] -> Maybe [(Text, Text)]
forall a. a -> Maybe a
Just (MediaPlayerError -> [(Text, Text)]
mediaPlayerErrorData MediaPlayerError
p)
    ]

-- | Type of the 'Media.playerPropertiesChanged' event.
data MediaPlayerPropertiesChanged = MediaPlayerPropertiesChanged
  {
    MediaPlayerPropertiesChanged -> Text
mediaPlayerPropertiesChangedPlayerId :: MediaPlayerId,
    MediaPlayerPropertiesChanged -> [MediaPlayerProperty]
mediaPlayerPropertiesChangedProperties :: [MediaPlayerProperty]
  }
  deriving (MediaPlayerPropertiesChanged
-> MediaPlayerPropertiesChanged -> Bool
(MediaPlayerPropertiesChanged
 -> MediaPlayerPropertiesChanged -> Bool)
-> (MediaPlayerPropertiesChanged
    -> MediaPlayerPropertiesChanged -> Bool)
-> Eq MediaPlayerPropertiesChanged
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerPropertiesChanged
-> MediaPlayerPropertiesChanged -> Bool
$c/= :: MediaPlayerPropertiesChanged
-> MediaPlayerPropertiesChanged -> Bool
== :: MediaPlayerPropertiesChanged
-> MediaPlayerPropertiesChanged -> Bool
$c== :: MediaPlayerPropertiesChanged
-> MediaPlayerPropertiesChanged -> Bool
Eq, Int -> MediaPlayerPropertiesChanged -> ShowS
[MediaPlayerPropertiesChanged] -> ShowS
MediaPlayerPropertiesChanged -> String
(Int -> MediaPlayerPropertiesChanged -> ShowS)
-> (MediaPlayerPropertiesChanged -> String)
-> ([MediaPlayerPropertiesChanged] -> ShowS)
-> Show MediaPlayerPropertiesChanged
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerPropertiesChanged] -> ShowS
$cshowList :: [MediaPlayerPropertiesChanged] -> ShowS
show :: MediaPlayerPropertiesChanged -> String
$cshow :: MediaPlayerPropertiesChanged -> String
showsPrec :: Int -> MediaPlayerPropertiesChanged -> ShowS
$cshowsPrec :: Int -> MediaPlayerPropertiesChanged -> ShowS
Show)
instance FromJSON MediaPlayerPropertiesChanged where
  parseJSON :: Value -> Parser MediaPlayerPropertiesChanged
parseJSON = String
-> (Object -> Parser MediaPlayerPropertiesChanged)
-> Value
-> Parser MediaPlayerPropertiesChanged
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerPropertiesChanged" ((Object -> Parser MediaPlayerPropertiesChanged)
 -> Value -> Parser MediaPlayerPropertiesChanged)
-> (Object -> Parser MediaPlayerPropertiesChanged)
-> Value
-> Parser MediaPlayerPropertiesChanged
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> [MediaPlayerProperty] -> MediaPlayerPropertiesChanged
MediaPlayerPropertiesChanged
    (Text -> [MediaPlayerProperty] -> MediaPlayerPropertiesChanged)
-> Parser Text
-> Parser ([MediaPlayerProperty] -> MediaPlayerPropertiesChanged)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"playerId"
    Parser ([MediaPlayerProperty] -> MediaPlayerPropertiesChanged)
-> Parser [MediaPlayerProperty]
-> Parser MediaPlayerPropertiesChanged
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser [MediaPlayerProperty]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"properties"
instance Event MediaPlayerPropertiesChanged where
  eventName :: Proxy MediaPlayerPropertiesChanged -> String
eventName Proxy MediaPlayerPropertiesChanged
_ = String
"Media.playerPropertiesChanged"

-- | Type of the 'Media.playerEventsAdded' event.
data MediaPlayerEventsAdded = MediaPlayerEventsAdded
  {
    MediaPlayerEventsAdded -> Text
mediaPlayerEventsAddedPlayerId :: MediaPlayerId,
    MediaPlayerEventsAdded -> [MediaPlayerEvent]
mediaPlayerEventsAddedEvents :: [MediaPlayerEvent]
  }
  deriving (MediaPlayerEventsAdded -> MediaPlayerEventsAdded -> Bool
(MediaPlayerEventsAdded -> MediaPlayerEventsAdded -> Bool)
-> (MediaPlayerEventsAdded -> MediaPlayerEventsAdded -> Bool)
-> Eq MediaPlayerEventsAdded
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerEventsAdded -> MediaPlayerEventsAdded -> Bool
$c/= :: MediaPlayerEventsAdded -> MediaPlayerEventsAdded -> Bool
== :: MediaPlayerEventsAdded -> MediaPlayerEventsAdded -> Bool
$c== :: MediaPlayerEventsAdded -> MediaPlayerEventsAdded -> Bool
Eq, Int -> MediaPlayerEventsAdded -> ShowS
[MediaPlayerEventsAdded] -> ShowS
MediaPlayerEventsAdded -> String
(Int -> MediaPlayerEventsAdded -> ShowS)
-> (MediaPlayerEventsAdded -> String)
-> ([MediaPlayerEventsAdded] -> ShowS)
-> Show MediaPlayerEventsAdded
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerEventsAdded] -> ShowS
$cshowList :: [MediaPlayerEventsAdded] -> ShowS
show :: MediaPlayerEventsAdded -> String
$cshow :: MediaPlayerEventsAdded -> String
showsPrec :: Int -> MediaPlayerEventsAdded -> ShowS
$cshowsPrec :: Int -> MediaPlayerEventsAdded -> ShowS
Show)
instance FromJSON MediaPlayerEventsAdded where
  parseJSON :: Value -> Parser MediaPlayerEventsAdded
parseJSON = String
-> (Object -> Parser MediaPlayerEventsAdded)
-> Value
-> Parser MediaPlayerEventsAdded
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerEventsAdded" ((Object -> Parser MediaPlayerEventsAdded)
 -> Value -> Parser MediaPlayerEventsAdded)
-> (Object -> Parser MediaPlayerEventsAdded)
-> Value
-> Parser MediaPlayerEventsAdded
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> [MediaPlayerEvent] -> MediaPlayerEventsAdded
MediaPlayerEventsAdded
    (Text -> [MediaPlayerEvent] -> MediaPlayerEventsAdded)
-> Parser Text
-> Parser ([MediaPlayerEvent] -> MediaPlayerEventsAdded)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"playerId"
    Parser ([MediaPlayerEvent] -> MediaPlayerEventsAdded)
-> Parser [MediaPlayerEvent] -> Parser MediaPlayerEventsAdded
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser [MediaPlayerEvent]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"events"
instance Event MediaPlayerEventsAdded where
  eventName :: Proxy MediaPlayerEventsAdded -> String
eventName Proxy MediaPlayerEventsAdded
_ = String
"Media.playerEventsAdded"

-- | Type of the 'Media.playerMessagesLogged' event.
data MediaPlayerMessagesLogged = MediaPlayerMessagesLogged
  {
    MediaPlayerMessagesLogged -> Text
mediaPlayerMessagesLoggedPlayerId :: MediaPlayerId,
    MediaPlayerMessagesLogged -> [MediaPlayerMessage]
mediaPlayerMessagesLoggedMessages :: [MediaPlayerMessage]
  }
  deriving (MediaPlayerMessagesLogged -> MediaPlayerMessagesLogged -> Bool
(MediaPlayerMessagesLogged -> MediaPlayerMessagesLogged -> Bool)
-> (MediaPlayerMessagesLogged -> MediaPlayerMessagesLogged -> Bool)
-> Eq MediaPlayerMessagesLogged
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerMessagesLogged -> MediaPlayerMessagesLogged -> Bool
$c/= :: MediaPlayerMessagesLogged -> MediaPlayerMessagesLogged -> Bool
== :: MediaPlayerMessagesLogged -> MediaPlayerMessagesLogged -> Bool
$c== :: MediaPlayerMessagesLogged -> MediaPlayerMessagesLogged -> Bool
Eq, Int -> MediaPlayerMessagesLogged -> ShowS
[MediaPlayerMessagesLogged] -> ShowS
MediaPlayerMessagesLogged -> String
(Int -> MediaPlayerMessagesLogged -> ShowS)
-> (MediaPlayerMessagesLogged -> String)
-> ([MediaPlayerMessagesLogged] -> ShowS)
-> Show MediaPlayerMessagesLogged
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerMessagesLogged] -> ShowS
$cshowList :: [MediaPlayerMessagesLogged] -> ShowS
show :: MediaPlayerMessagesLogged -> String
$cshow :: MediaPlayerMessagesLogged -> String
showsPrec :: Int -> MediaPlayerMessagesLogged -> ShowS
$cshowsPrec :: Int -> MediaPlayerMessagesLogged -> ShowS
Show)
instance FromJSON MediaPlayerMessagesLogged where
  parseJSON :: Value -> Parser MediaPlayerMessagesLogged
parseJSON = String
-> (Object -> Parser MediaPlayerMessagesLogged)
-> Value
-> Parser MediaPlayerMessagesLogged
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerMessagesLogged" ((Object -> Parser MediaPlayerMessagesLogged)
 -> Value -> Parser MediaPlayerMessagesLogged)
-> (Object -> Parser MediaPlayerMessagesLogged)
-> Value
-> Parser MediaPlayerMessagesLogged
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> [MediaPlayerMessage] -> MediaPlayerMessagesLogged
MediaPlayerMessagesLogged
    (Text -> [MediaPlayerMessage] -> MediaPlayerMessagesLogged)
-> Parser Text
-> Parser ([MediaPlayerMessage] -> MediaPlayerMessagesLogged)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"playerId"
    Parser ([MediaPlayerMessage] -> MediaPlayerMessagesLogged)
-> Parser [MediaPlayerMessage] -> Parser MediaPlayerMessagesLogged
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser [MediaPlayerMessage]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"messages"
instance Event MediaPlayerMessagesLogged where
  eventName :: Proxy MediaPlayerMessagesLogged -> String
eventName Proxy MediaPlayerMessagesLogged
_ = String
"Media.playerMessagesLogged"

-- | Type of the 'Media.playerErrorsRaised' event.
data MediaPlayerErrorsRaised = MediaPlayerErrorsRaised
  {
    MediaPlayerErrorsRaised -> Text
mediaPlayerErrorsRaisedPlayerId :: MediaPlayerId,
    MediaPlayerErrorsRaised -> [MediaPlayerError]
mediaPlayerErrorsRaisedErrors :: [MediaPlayerError]
  }
  deriving (MediaPlayerErrorsRaised -> MediaPlayerErrorsRaised -> Bool
(MediaPlayerErrorsRaised -> MediaPlayerErrorsRaised -> Bool)
-> (MediaPlayerErrorsRaised -> MediaPlayerErrorsRaised -> Bool)
-> Eq MediaPlayerErrorsRaised
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayerErrorsRaised -> MediaPlayerErrorsRaised -> Bool
$c/= :: MediaPlayerErrorsRaised -> MediaPlayerErrorsRaised -> Bool
== :: MediaPlayerErrorsRaised -> MediaPlayerErrorsRaised -> Bool
$c== :: MediaPlayerErrorsRaised -> MediaPlayerErrorsRaised -> Bool
Eq, Int -> MediaPlayerErrorsRaised -> ShowS
[MediaPlayerErrorsRaised] -> ShowS
MediaPlayerErrorsRaised -> String
(Int -> MediaPlayerErrorsRaised -> ShowS)
-> (MediaPlayerErrorsRaised -> String)
-> ([MediaPlayerErrorsRaised] -> ShowS)
-> Show MediaPlayerErrorsRaised
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayerErrorsRaised] -> ShowS
$cshowList :: [MediaPlayerErrorsRaised] -> ShowS
show :: MediaPlayerErrorsRaised -> String
$cshow :: MediaPlayerErrorsRaised -> String
showsPrec :: Int -> MediaPlayerErrorsRaised -> ShowS
$cshowsPrec :: Int -> MediaPlayerErrorsRaised -> ShowS
Show)
instance FromJSON MediaPlayerErrorsRaised where
  parseJSON :: Value -> Parser MediaPlayerErrorsRaised
parseJSON = String
-> (Object -> Parser MediaPlayerErrorsRaised)
-> Value
-> Parser MediaPlayerErrorsRaised
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayerErrorsRaised" ((Object -> Parser MediaPlayerErrorsRaised)
 -> Value -> Parser MediaPlayerErrorsRaised)
-> (Object -> Parser MediaPlayerErrorsRaised)
-> Value
-> Parser MediaPlayerErrorsRaised
forall a b. (a -> b) -> a -> b
$ \Object
o -> Text -> [MediaPlayerError] -> MediaPlayerErrorsRaised
MediaPlayerErrorsRaised
    (Text -> [MediaPlayerError] -> MediaPlayerErrorsRaised)
-> Parser Text
-> Parser ([MediaPlayerError] -> MediaPlayerErrorsRaised)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"playerId"
    Parser ([MediaPlayerError] -> MediaPlayerErrorsRaised)
-> Parser [MediaPlayerError] -> Parser MediaPlayerErrorsRaised
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Text -> Parser [MediaPlayerError]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"errors"
instance Event MediaPlayerErrorsRaised where
  eventName :: Proxy MediaPlayerErrorsRaised -> String
eventName Proxy MediaPlayerErrorsRaised
_ = String
"Media.playerErrorsRaised"

-- | Type of the 'Media.playersCreated' event.
data MediaPlayersCreated = MediaPlayersCreated
  {
    MediaPlayersCreated -> [Text]
mediaPlayersCreatedPlayers :: [MediaPlayerId]
  }
  deriving (MediaPlayersCreated -> MediaPlayersCreated -> Bool
(MediaPlayersCreated -> MediaPlayersCreated -> Bool)
-> (MediaPlayersCreated -> MediaPlayersCreated -> Bool)
-> Eq MediaPlayersCreated
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MediaPlayersCreated -> MediaPlayersCreated -> Bool
$c/= :: MediaPlayersCreated -> MediaPlayersCreated -> Bool
== :: MediaPlayersCreated -> MediaPlayersCreated -> Bool
$c== :: MediaPlayersCreated -> MediaPlayersCreated -> Bool
Eq, Int -> MediaPlayersCreated -> ShowS
[MediaPlayersCreated] -> ShowS
MediaPlayersCreated -> String
(Int -> MediaPlayersCreated -> ShowS)
-> (MediaPlayersCreated -> String)
-> ([MediaPlayersCreated] -> ShowS)
-> Show MediaPlayersCreated
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MediaPlayersCreated] -> ShowS
$cshowList :: [MediaPlayersCreated] -> ShowS
show :: MediaPlayersCreated -> String
$cshow :: MediaPlayersCreated -> String
showsPrec :: Int -> MediaPlayersCreated -> ShowS
$cshowsPrec :: Int -> MediaPlayersCreated -> ShowS
Show)
instance FromJSON MediaPlayersCreated where
  parseJSON :: Value -> Parser MediaPlayersCreated
parseJSON = String
-> (Object -> Parser MediaPlayersCreated)
-> Value
-> Parser MediaPlayersCreated
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"MediaPlayersCreated" ((Object -> Parser MediaPlayersCreated)
 -> Value -> Parser MediaPlayersCreated)
-> (Object -> Parser MediaPlayersCreated)
-> Value
-> Parser MediaPlayersCreated
forall a b. (a -> b) -> a -> b
$ \Object
o -> [Text] -> MediaPlayersCreated
MediaPlayersCreated
    ([Text] -> MediaPlayersCreated)
-> Parser [Text] -> Parser MediaPlayersCreated
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> Parser [Text]
forall a. FromJSON a => Object -> Text -> Parser a
A..: Text
"players"
instance Event MediaPlayersCreated where
  eventName :: Proxy MediaPlayersCreated -> String
eventName Proxy MediaPlayersCreated
_ = String
"Media.playersCreated"

-- | Enables the Media domain

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

-- | Disables the Media domain.

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