{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} module Network.Bugsnag.ReleaseStage ( BugsnagReleaseStage(..) ) where import Data.Aeson import Data.Text (Text) data BugsnagReleaseStage = DevelopmentReleaseStage | StagingReleaseStage | ProductionReleaseStage | CustomReleaseStage Text deriving (Eq, Show) instance FromJSON BugsnagReleaseStage where parseJSON = withText "ReleaseStage" $ \case "development" -> pure DevelopmentReleaseStage "staging" -> pure StagingReleaseStage "production" -> pure ProductionReleaseStage t -> pure $ CustomReleaseStage t instance ToJSON BugsnagReleaseStage where toJSON DevelopmentReleaseStage = String "development" toJSON StagingReleaseStage = String "staging" toJSON ProductionReleaseStage = String "production" toJSON (CustomReleaseStage t) = String t