{-# 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.Firehose.Types.ProcessorType
-- 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.Firehose.Types.ProcessorType
  ( ProcessorType
      ( ..,
        ProcessorType_AppendDelimiterToRecord,
        ProcessorType_Lambda,
        ProcessorType_MetadataExtraction,
        ProcessorType_RecordDeAggregation
      ),
  )
where

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

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

pattern ProcessorType_AppendDelimiterToRecord :: ProcessorType
pattern $bProcessorType_AppendDelimiterToRecord :: ProcessorType
$mProcessorType_AppendDelimiterToRecord :: forall r. ProcessorType -> (Void# -> r) -> (Void# -> r) -> r
ProcessorType_AppendDelimiterToRecord = ProcessorType' "AppendDelimiterToRecord"

pattern ProcessorType_Lambda :: ProcessorType
pattern $bProcessorType_Lambda :: ProcessorType
$mProcessorType_Lambda :: forall r. ProcessorType -> (Void# -> r) -> (Void# -> r) -> r
ProcessorType_Lambda = ProcessorType' "Lambda"

pattern ProcessorType_MetadataExtraction :: ProcessorType
pattern $bProcessorType_MetadataExtraction :: ProcessorType
$mProcessorType_MetadataExtraction :: forall r. ProcessorType -> (Void# -> r) -> (Void# -> r) -> r
ProcessorType_MetadataExtraction = ProcessorType' "MetadataExtraction"

pattern ProcessorType_RecordDeAggregation :: ProcessorType
pattern $bProcessorType_RecordDeAggregation :: ProcessorType
$mProcessorType_RecordDeAggregation :: forall r. ProcessorType -> (Void# -> r) -> (Void# -> r) -> r
ProcessorType_RecordDeAggregation = ProcessorType' "RecordDeAggregation"

{-# COMPLETE
  ProcessorType_AppendDelimiterToRecord,
  ProcessorType_Lambda,
  ProcessorType_MetadataExtraction,
  ProcessorType_RecordDeAggregation,
  ProcessorType'
  #-}