{-# 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.Route53Resolver.Types.BlockResponse
-- 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.Route53Resolver.Types.BlockResponse
  ( BlockResponse
      ( ..,
        BlockResponse_NODATA,
        BlockResponse_NXDOMAIN,
        BlockResponse_OVERRIDE
      ),
  )
where

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

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

pattern BlockResponse_NODATA :: BlockResponse
pattern $bBlockResponse_NODATA :: BlockResponse
$mBlockResponse_NODATA :: forall r. BlockResponse -> (Void# -> r) -> (Void# -> r) -> r
BlockResponse_NODATA = BlockResponse' "NODATA"

pattern BlockResponse_NXDOMAIN :: BlockResponse
pattern $bBlockResponse_NXDOMAIN :: BlockResponse
$mBlockResponse_NXDOMAIN :: forall r. BlockResponse -> (Void# -> r) -> (Void# -> r) -> r
BlockResponse_NXDOMAIN = BlockResponse' "NXDOMAIN"

pattern BlockResponse_OVERRIDE :: BlockResponse
pattern $bBlockResponse_OVERRIDE :: BlockResponse
$mBlockResponse_OVERRIDE :: forall r. BlockResponse -> (Void# -> r) -> (Void# -> r) -> r
BlockResponse_OVERRIDE = BlockResponse' "OVERRIDE"

{-# COMPLETE
  BlockResponse_NODATA,
  BlockResponse_NXDOMAIN,
  BlockResponse_OVERRIDE,
  BlockResponse'
  #-}