module Patrol.Type.DebugImage where

import qualified Data.Aeson as Aeson
import qualified Data.Map as Map
import qualified Data.Text as Text
import qualified Patrol.Type.AppleDebugImage as AppleDebugImage
import qualified Patrol.Type.NativeDebugImage as NativeDebugImage
import qualified Patrol.Type.ProguardDebugImage as ProguardDebugImage

data DebugImage
  = Apple AppleDebugImage.AppleDebugImage
  | Native NativeDebugImage.NativeDebugImage
  | Proguard ProguardDebugImage.ProguardDebugImage
  | Other (Map.Map Text.Text Aeson.Value)
  deriving (DebugImage -> DebugImage -> Bool
(DebugImage -> DebugImage -> Bool)
-> (DebugImage -> DebugImage -> Bool) -> Eq DebugImage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DebugImage -> DebugImage -> Bool
== :: DebugImage -> DebugImage -> Bool
$c/= :: DebugImage -> DebugImage -> Bool
/= :: DebugImage -> DebugImage -> Bool
Eq, Int -> DebugImage -> ShowS
[DebugImage] -> ShowS
DebugImage -> String
(Int -> DebugImage -> ShowS)
-> (DebugImage -> String)
-> ([DebugImage] -> ShowS)
-> Show DebugImage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DebugImage -> ShowS
showsPrec :: Int -> DebugImage -> ShowS
$cshow :: DebugImage -> String
show :: DebugImage -> String
$cshowList :: [DebugImage] -> ShowS
showList :: [DebugImage] -> ShowS
Show)

instance Aeson.ToJSON DebugImage where
  toJSON :: DebugImage -> Value
toJSON DebugImage
debugImage = case DebugImage
debugImage of
    Apple AppleDebugImage
appleDebugImage -> AppleDebugImage -> Value
forall a. ToJSON a => a -> Value
Aeson.toJSON AppleDebugImage
appleDebugImage
    Native NativeDebugImage
nativeDebugImage -> NativeDebugImage -> Value
forall a. ToJSON a => a -> Value
Aeson.toJSON NativeDebugImage
nativeDebugImage
    Proguard ProguardDebugImage
proguardDebugImage -> ProguardDebugImage -> Value
forall a. ToJSON a => a -> Value
Aeson.toJSON ProguardDebugImage
proguardDebugImage
    Other Map Text Value
other -> Map Text Value -> Value
forall a. ToJSON a => a -> Value
Aeson.toJSON Map Text Value
other