{-# 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.Rekognition.Types.Reason
-- 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.Rekognition.Types.Reason
  ( Reason
      ( ..,
        Reason_EXCEEDS_MAX_FACES,
        Reason_EXTREME_POSE,
        Reason_LOW_BRIGHTNESS,
        Reason_LOW_CONFIDENCE,
        Reason_LOW_FACE_QUALITY,
        Reason_LOW_SHARPNESS,
        Reason_SMALL_BOUNDING_BOX
      ),
  )
where

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

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

pattern Reason_EXCEEDS_MAX_FACES :: Reason
pattern $bReason_EXCEEDS_MAX_FACES :: Reason
$mReason_EXCEEDS_MAX_FACES :: forall r. Reason -> (Void# -> r) -> (Void# -> r) -> r
Reason_EXCEEDS_MAX_FACES = Reason' "EXCEEDS_MAX_FACES"

pattern Reason_EXTREME_POSE :: Reason
pattern $bReason_EXTREME_POSE :: Reason
$mReason_EXTREME_POSE :: forall r. Reason -> (Void# -> r) -> (Void# -> r) -> r
Reason_EXTREME_POSE = Reason' "EXTREME_POSE"

pattern Reason_LOW_BRIGHTNESS :: Reason
pattern $bReason_LOW_BRIGHTNESS :: Reason
$mReason_LOW_BRIGHTNESS :: forall r. Reason -> (Void# -> r) -> (Void# -> r) -> r
Reason_LOW_BRIGHTNESS = Reason' "LOW_BRIGHTNESS"

pattern Reason_LOW_CONFIDENCE :: Reason
pattern $bReason_LOW_CONFIDENCE :: Reason
$mReason_LOW_CONFIDENCE :: forall r. Reason -> (Void# -> r) -> (Void# -> r) -> r
Reason_LOW_CONFIDENCE = Reason' "LOW_CONFIDENCE"

pattern Reason_LOW_FACE_QUALITY :: Reason
pattern $bReason_LOW_FACE_QUALITY :: Reason
$mReason_LOW_FACE_QUALITY :: forall r. Reason -> (Void# -> r) -> (Void# -> r) -> r
Reason_LOW_FACE_QUALITY = Reason' "LOW_FACE_QUALITY"

pattern Reason_LOW_SHARPNESS :: Reason
pattern $bReason_LOW_SHARPNESS :: Reason
$mReason_LOW_SHARPNESS :: forall r. Reason -> (Void# -> r) -> (Void# -> r) -> r
Reason_LOW_SHARPNESS = Reason' "LOW_SHARPNESS"

pattern Reason_SMALL_BOUNDING_BOX :: Reason
pattern $bReason_SMALL_BOUNDING_BOX :: Reason
$mReason_SMALL_BOUNDING_BOX :: forall r. Reason -> (Void# -> r) -> (Void# -> r) -> r
Reason_SMALL_BOUNDING_BOX = Reason' "SMALL_BOUNDING_BOX"

{-# COMPLETE
  Reason_EXCEEDS_MAX_FACES,
  Reason_EXTREME_POSE,
  Reason_LOW_BRIGHTNESS,
  Reason_LOW_CONFIDENCE,
  Reason_LOW_FACE_QUALITY,
  Reason_LOW_SHARPNESS,
  Reason_SMALL_BOUNDING_BOX,
  Reason'
  #-}