patrol-0.1.0.1: source/library/Patrol/Type/Context.hs
module Patrol.Type.Context where
import qualified Data.Aeson as Aeson
import qualified Data.Map as Map
import qualified Data.Text as Text
import qualified Patrol.Type.AppContext as AppContext
import qualified Patrol.Type.BrowserContext as BrowserContext
import qualified Patrol.Type.DeviceContext as DeviceContext
import qualified Patrol.Type.GpuContext as GpuContext
import qualified Patrol.Type.OsContext as OsContext
import qualified Patrol.Type.RuntimeContext as RuntimeContext
import qualified Patrol.Type.TraceContext as TraceContext
data Context
= App AppContext.AppContext
| Browser BrowserContext.BrowserContext
| Device DeviceContext.DeviceContext
| Gpu GpuContext.GpuContext
| Os OsContext.OsContext
| Runtime RuntimeContext.RuntimeContext
| Trace TraceContext.TraceContext
| Other (Map.Map Text.Text Aeson.Value)
deriving (Eq, Show)
instance Aeson.ToJSON Context where
toJSON context = case context of
App appContext -> Aeson.toJSON appContext
Browser browserContext -> Aeson.toJSON browserContext
Device deviceContext -> Aeson.toJSON deviceContext
Gpu gpuContext -> Aeson.toJSON gpuContext
Os osContext -> Aeson.toJSON osContext
Runtime runtimeContext -> Aeson.toJSON runtimeContext
Trace traceContext -> Aeson.toJSON traceContext
Other other -> Aeson.toJSON other