{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AuditManager.Types.ControlResponse
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AuditManager.Types.ControlResponse
  ( ControlResponse
      ( ..,
        ControlResponse_AUTOMATE,
        ControlResponse_DEFER,
        ControlResponse_IGNORE,
        ControlResponse_MANUAL
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype ControlResponse = ControlResponse'
  { ControlResponse -> Text
fromControlResponse ::
      Core.Text
  }
  deriving stock
    ( Int -> ControlResponse -> ShowS
[ControlResponse] -> ShowS
ControlResponse -> String
(Int -> ControlResponse -> ShowS)
-> (ControlResponse -> String)
-> ([ControlResponse] -> ShowS)
-> Show ControlResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ControlResponse] -> ShowS
$cshowList :: [ControlResponse] -> ShowS
show :: ControlResponse -> String
$cshow :: ControlResponse -> String
showsPrec :: Int -> ControlResponse -> ShowS
$cshowsPrec :: Int -> ControlResponse -> ShowS
Prelude.Show,
      ReadPrec [ControlResponse]
ReadPrec ControlResponse
Int -> ReadS ControlResponse
ReadS [ControlResponse]
(Int -> ReadS ControlResponse)
-> ReadS [ControlResponse]
-> ReadPrec ControlResponse
-> ReadPrec [ControlResponse]
-> Read ControlResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ControlResponse]
$creadListPrec :: ReadPrec [ControlResponse]
readPrec :: ReadPrec ControlResponse
$creadPrec :: ReadPrec ControlResponse
readList :: ReadS [ControlResponse]
$creadList :: ReadS [ControlResponse]
readsPrec :: Int -> ReadS ControlResponse
$creadsPrec :: Int -> ReadS ControlResponse
Prelude.Read,
      ControlResponse -> ControlResponse -> Bool
(ControlResponse -> ControlResponse -> Bool)
-> (ControlResponse -> ControlResponse -> Bool)
-> Eq ControlResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ControlResponse -> ControlResponse -> Bool
$c/= :: ControlResponse -> ControlResponse -> Bool
== :: ControlResponse -> ControlResponse -> Bool
$c== :: ControlResponse -> ControlResponse -> Bool
Prelude.Eq,
      Eq ControlResponse
Eq ControlResponse
-> (ControlResponse -> ControlResponse -> Ordering)
-> (ControlResponse -> ControlResponse -> Bool)
-> (ControlResponse -> ControlResponse -> Bool)
-> (ControlResponse -> ControlResponse -> Bool)
-> (ControlResponse -> ControlResponse -> Bool)
-> (ControlResponse -> ControlResponse -> ControlResponse)
-> (ControlResponse -> ControlResponse -> ControlResponse)
-> Ord ControlResponse
ControlResponse -> ControlResponse -> Bool
ControlResponse -> ControlResponse -> Ordering
ControlResponse -> ControlResponse -> ControlResponse
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 :: ControlResponse -> ControlResponse -> ControlResponse
$cmin :: ControlResponse -> ControlResponse -> ControlResponse
max :: ControlResponse -> ControlResponse -> ControlResponse
$cmax :: ControlResponse -> ControlResponse -> ControlResponse
>= :: ControlResponse -> ControlResponse -> Bool
$c>= :: ControlResponse -> ControlResponse -> Bool
> :: ControlResponse -> ControlResponse -> Bool
$c> :: ControlResponse -> ControlResponse -> Bool
<= :: ControlResponse -> ControlResponse -> Bool
$c<= :: ControlResponse -> ControlResponse -> Bool
< :: ControlResponse -> ControlResponse -> Bool
$c< :: ControlResponse -> ControlResponse -> Bool
compare :: ControlResponse -> ControlResponse -> Ordering
$ccompare :: ControlResponse -> ControlResponse -> Ordering
$cp1Ord :: Eq ControlResponse
Prelude.Ord,
      (forall x. ControlResponse -> Rep ControlResponse x)
-> (forall x. Rep ControlResponse x -> ControlResponse)
-> Generic ControlResponse
forall x. Rep ControlResponse x -> ControlResponse
forall x. ControlResponse -> Rep ControlResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ControlResponse x -> ControlResponse
$cfrom :: forall x. ControlResponse -> Rep ControlResponse x
Prelude.Generic
    )
  deriving newtype
    ( Int -> ControlResponse -> Int
ControlResponse -> Int
(Int -> ControlResponse -> Int)
-> (ControlResponse -> Int) -> Hashable ControlResponse
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: ControlResponse -> Int
$chash :: ControlResponse -> Int
hashWithSalt :: Int -> ControlResponse -> Int
$chashWithSalt :: Int -> ControlResponse -> Int
Prelude.Hashable,
      ControlResponse -> ()
(ControlResponse -> ()) -> NFData ControlResponse
forall a. (a -> ()) -> NFData a
rnf :: ControlResponse -> ()
$crnf :: ControlResponse -> ()
Prelude.NFData,
      Text -> Either String ControlResponse
(Text -> Either String ControlResponse) -> FromText ControlResponse
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String ControlResponse
$cfromText :: Text -> Either String ControlResponse
Core.FromText,
      ControlResponse -> Text
(ControlResponse -> Text) -> ToText ControlResponse
forall a. (a -> Text) -> ToText a
toText :: ControlResponse -> Text
$ctoText :: ControlResponse -> Text
Core.ToText,
      ControlResponse -> ByteString
(ControlResponse -> ByteString) -> ToByteString ControlResponse
forall a. (a -> ByteString) -> ToByteString a
toBS :: ControlResponse -> ByteString
$ctoBS :: ControlResponse -> ByteString
Core.ToByteString,
      ControlResponse -> ByteStringBuilder
(ControlResponse -> ByteStringBuilder) -> ToLog ControlResponse
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: ControlResponse -> ByteStringBuilder
$cbuild :: ControlResponse -> ByteStringBuilder
Core.ToLog,
      HeaderName -> ControlResponse -> [Header]
(HeaderName -> ControlResponse -> [Header])
-> ToHeader ControlResponse
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> ControlResponse -> [Header]
$ctoHeader :: HeaderName -> ControlResponse -> [Header]
Core.ToHeader,
      ControlResponse -> QueryString
(ControlResponse -> QueryString) -> ToQuery ControlResponse
forall a. (a -> QueryString) -> ToQuery a
toQuery :: ControlResponse -> QueryString
$ctoQuery :: ControlResponse -> QueryString
Core.ToQuery,
      Value -> Parser [ControlResponse]
Value -> Parser ControlResponse
(Value -> Parser ControlResponse)
-> (Value -> Parser [ControlResponse]) -> FromJSON ControlResponse
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ControlResponse]
$cparseJSONList :: Value -> Parser [ControlResponse]
parseJSON :: Value -> Parser ControlResponse
$cparseJSON :: Value -> Parser ControlResponse
Core.FromJSON,
      FromJSONKeyFunction [ControlResponse]
FromJSONKeyFunction ControlResponse
FromJSONKeyFunction ControlResponse
-> FromJSONKeyFunction [ControlResponse]
-> FromJSONKey ControlResponse
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [ControlResponse]
$cfromJSONKeyList :: FromJSONKeyFunction [ControlResponse]
fromJSONKey :: FromJSONKeyFunction ControlResponse
$cfromJSONKey :: FromJSONKeyFunction ControlResponse
Core.FromJSONKey,
      [ControlResponse] -> Encoding
[ControlResponse] -> Value
ControlResponse -> Encoding
ControlResponse -> Value
(ControlResponse -> Value)
-> (ControlResponse -> Encoding)
-> ([ControlResponse] -> Value)
-> ([ControlResponse] -> Encoding)
-> ToJSON ControlResponse
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ControlResponse] -> Encoding
$ctoEncodingList :: [ControlResponse] -> Encoding
toJSONList :: [ControlResponse] -> Value
$ctoJSONList :: [ControlResponse] -> Value
toEncoding :: ControlResponse -> Encoding
$ctoEncoding :: ControlResponse -> Encoding
toJSON :: ControlResponse -> Value
$ctoJSON :: ControlResponse -> Value
Core.ToJSON,
      ToJSONKeyFunction [ControlResponse]
ToJSONKeyFunction ControlResponse
ToJSONKeyFunction ControlResponse
-> ToJSONKeyFunction [ControlResponse] -> ToJSONKey ControlResponse
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [ControlResponse]
$ctoJSONKeyList :: ToJSONKeyFunction [ControlResponse]
toJSONKey :: ToJSONKeyFunction ControlResponse
$ctoJSONKey :: ToJSONKeyFunction ControlResponse
Core.ToJSONKey,
      [Node] -> Either String ControlResponse
([Node] -> Either String ControlResponse)
-> FromXML ControlResponse
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String ControlResponse
$cparseXML :: [Node] -> Either String ControlResponse
Core.FromXML,
      ControlResponse -> XML
(ControlResponse -> XML) -> ToXML ControlResponse
forall a. (a -> XML) -> ToXML a
toXML :: ControlResponse -> XML
$ctoXML :: ControlResponse -> XML
Core.ToXML
    )

pattern ControlResponse_AUTOMATE :: ControlResponse
pattern $bControlResponse_AUTOMATE :: ControlResponse
$mControlResponse_AUTOMATE :: forall r. ControlResponse -> (Void# -> r) -> (Void# -> r) -> r
ControlResponse_AUTOMATE = ControlResponse' "AUTOMATE"

pattern ControlResponse_DEFER :: ControlResponse
pattern $bControlResponse_DEFER :: ControlResponse
$mControlResponse_DEFER :: forall r. ControlResponse -> (Void# -> r) -> (Void# -> r) -> r
ControlResponse_DEFER = ControlResponse' "DEFER"

pattern ControlResponse_IGNORE :: ControlResponse
pattern $bControlResponse_IGNORE :: ControlResponse
$mControlResponse_IGNORE :: forall r. ControlResponse -> (Void# -> r) -> (Void# -> r) -> r
ControlResponse_IGNORE = ControlResponse' "IGNORE"

pattern ControlResponse_MANUAL :: ControlResponse
pattern $bControlResponse_MANUAL :: ControlResponse
$mControlResponse_MANUAL :: forall r. ControlResponse -> (Void# -> r) -> (Void# -> r) -> r
ControlResponse_MANUAL = ControlResponse' "MANUAL"

{-# COMPLETE
  ControlResponse_AUTOMATE,
  ControlResponse_DEFER,
  ControlResponse_IGNORE,
  ControlResponse_MANUAL,
  ControlResponse'
  #-}