{-# 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.SecurityHub.Types.ThreatIntelIndicatorType
-- 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.SecurityHub.Types.ThreatIntelIndicatorType
  ( ThreatIntelIndicatorType
      ( ..,
        ThreatIntelIndicatorType_DOMAIN,
        ThreatIntelIndicatorType_EMAIL_ADDRESS,
        ThreatIntelIndicatorType_HASH_MD5,
        ThreatIntelIndicatorType_HASH_SHA1,
        ThreatIntelIndicatorType_HASH_SHA256,
        ThreatIntelIndicatorType_HASH_SHA512,
        ThreatIntelIndicatorType_IPV4_ADDRESS,
        ThreatIntelIndicatorType_IPV6_ADDRESS,
        ThreatIntelIndicatorType_MUTEX,
        ThreatIntelIndicatorType_PROCESS,
        ThreatIntelIndicatorType_URL
      ),
  )
where

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

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

pattern ThreatIntelIndicatorType_DOMAIN :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_DOMAIN :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_DOMAIN :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_DOMAIN = ThreatIntelIndicatorType' "DOMAIN"

pattern ThreatIntelIndicatorType_EMAIL_ADDRESS :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_EMAIL_ADDRESS :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_EMAIL_ADDRESS :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_EMAIL_ADDRESS = ThreatIntelIndicatorType' "EMAIL_ADDRESS"

pattern ThreatIntelIndicatorType_HASH_MD5 :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_HASH_MD5 :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_HASH_MD5 :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_HASH_MD5 = ThreatIntelIndicatorType' "HASH_MD5"

pattern ThreatIntelIndicatorType_HASH_SHA1 :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_HASH_SHA1 :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_HASH_SHA1 :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_HASH_SHA1 = ThreatIntelIndicatorType' "HASH_SHA1"

pattern ThreatIntelIndicatorType_HASH_SHA256 :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_HASH_SHA256 :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_HASH_SHA256 :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_HASH_SHA256 = ThreatIntelIndicatorType' "HASH_SHA256"

pattern ThreatIntelIndicatorType_HASH_SHA512 :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_HASH_SHA512 :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_HASH_SHA512 :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_HASH_SHA512 = ThreatIntelIndicatorType' "HASH_SHA512"

pattern ThreatIntelIndicatorType_IPV4_ADDRESS :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_IPV4_ADDRESS :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_IPV4_ADDRESS :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_IPV4_ADDRESS = ThreatIntelIndicatorType' "IPV4_ADDRESS"

pattern ThreatIntelIndicatorType_IPV6_ADDRESS :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_IPV6_ADDRESS :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_IPV6_ADDRESS :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_IPV6_ADDRESS = ThreatIntelIndicatorType' "IPV6_ADDRESS"

pattern ThreatIntelIndicatorType_MUTEX :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_MUTEX :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_MUTEX :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_MUTEX = ThreatIntelIndicatorType' "MUTEX"

pattern ThreatIntelIndicatorType_PROCESS :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_PROCESS :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_PROCESS :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_PROCESS = ThreatIntelIndicatorType' "PROCESS"

pattern ThreatIntelIndicatorType_URL :: ThreatIntelIndicatorType
pattern $bThreatIntelIndicatorType_URL :: ThreatIntelIndicatorType
$mThreatIntelIndicatorType_URL :: forall r.
ThreatIntelIndicatorType -> (Void# -> r) -> (Void# -> r) -> r
ThreatIntelIndicatorType_URL = ThreatIntelIndicatorType' "URL"

{-# COMPLETE
  ThreatIntelIndicatorType_DOMAIN,
  ThreatIntelIndicatorType_EMAIL_ADDRESS,
  ThreatIntelIndicatorType_HASH_MD5,
  ThreatIntelIndicatorType_HASH_SHA1,
  ThreatIntelIndicatorType_HASH_SHA256,
  ThreatIntelIndicatorType_HASH_SHA512,
  ThreatIntelIndicatorType_IPV4_ADDRESS,
  ThreatIntelIndicatorType_IPV6_ADDRESS,
  ThreatIntelIndicatorType_MUTEX,
  ThreatIntelIndicatorType_PROCESS,
  ThreatIntelIndicatorType_URL,
  ThreatIntelIndicatorType'
  #-}