module Network.Bugsnag.ReleaseStage ( BugsnagReleaseStage(..) ) where import Prelude import Data.Aeson import Data.Text (Text) data BugsnagReleaseStage = DevelopmentReleaseStage | StagingReleaseStage | ProductionReleaseStage | CustomReleaseStage Text deriving stock (BugsnagReleaseStage -> BugsnagReleaseStage -> Bool (BugsnagReleaseStage -> BugsnagReleaseStage -> Bool) -> (BugsnagReleaseStage -> BugsnagReleaseStage -> Bool) -> Eq BugsnagReleaseStage forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: BugsnagReleaseStage -> BugsnagReleaseStage -> Bool $c/= :: BugsnagReleaseStage -> BugsnagReleaseStage -> Bool == :: BugsnagReleaseStage -> BugsnagReleaseStage -> Bool $c== :: BugsnagReleaseStage -> BugsnagReleaseStage -> Bool Eq, Int -> BugsnagReleaseStage -> ShowS [BugsnagReleaseStage] -> ShowS BugsnagReleaseStage -> String (Int -> BugsnagReleaseStage -> ShowS) -> (BugsnagReleaseStage -> String) -> ([BugsnagReleaseStage] -> ShowS) -> Show BugsnagReleaseStage forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [BugsnagReleaseStage] -> ShowS $cshowList :: [BugsnagReleaseStage] -> ShowS show :: BugsnagReleaseStage -> String $cshow :: BugsnagReleaseStage -> String showsPrec :: Int -> BugsnagReleaseStage -> ShowS $cshowsPrec :: Int -> BugsnagReleaseStage -> ShowS Show) instance FromJSON BugsnagReleaseStage where parseJSON :: Value -> Parser BugsnagReleaseStage parseJSON = String -> (Text -> Parser BugsnagReleaseStage) -> Value -> Parser BugsnagReleaseStage forall a. String -> (Text -> Parser a) -> Value -> Parser a withText String "ReleaseStage" ((Text -> Parser BugsnagReleaseStage) -> Value -> Parser BugsnagReleaseStage) -> (Text -> Parser BugsnagReleaseStage) -> Value -> Parser BugsnagReleaseStage forall a b. (a -> b) -> a -> b $ \case Text "development" -> BugsnagReleaseStage -> Parser BugsnagReleaseStage forall (f :: * -> *) a. Applicative f => a -> f a pure BugsnagReleaseStage DevelopmentReleaseStage Text "staging" -> BugsnagReleaseStage -> Parser BugsnagReleaseStage forall (f :: * -> *) a. Applicative f => a -> f a pure BugsnagReleaseStage StagingReleaseStage Text "production" -> BugsnagReleaseStage -> Parser BugsnagReleaseStage forall (f :: * -> *) a. Applicative f => a -> f a pure BugsnagReleaseStage ProductionReleaseStage Text t -> BugsnagReleaseStage -> Parser BugsnagReleaseStage forall (f :: * -> *) a. Applicative f => a -> f a pure (BugsnagReleaseStage -> Parser BugsnagReleaseStage) -> BugsnagReleaseStage -> Parser BugsnagReleaseStage forall a b. (a -> b) -> a -> b $ Text -> BugsnagReleaseStage CustomReleaseStage Text t instance ToJSON BugsnagReleaseStage where toJSON :: BugsnagReleaseStage -> Value toJSON BugsnagReleaseStage DevelopmentReleaseStage = Text -> Value String Text "development" toJSON BugsnagReleaseStage StagingReleaseStage = Text -> Value String Text "staging" toJSON BugsnagReleaseStage ProductionReleaseStage = Text -> Value String Text "production" toJSON (CustomReleaseStage Text t) = Text -> Value String Text t