{-# 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.FMS.Types.SecurityServiceType
-- 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.FMS.Types.SecurityServiceType
  ( SecurityServiceType
      ( ..,
        SecurityServiceType_DNS_FIREWALL,
        SecurityServiceType_NETWORK_FIREWALL,
        SecurityServiceType_SECURITY_GROUPS_COMMON,
        SecurityServiceType_SECURITY_GROUPS_CONTENT_AUDIT,
        SecurityServiceType_SECURITY_GROUPS_USAGE_AUDIT,
        SecurityServiceType_SHIELD_ADVANCED,
        SecurityServiceType_WAF,
        SecurityServiceType_WAFV2
      ),
  )
where

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

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

pattern SecurityServiceType_DNS_FIREWALL :: SecurityServiceType
pattern $bSecurityServiceType_DNS_FIREWALL :: SecurityServiceType
$mSecurityServiceType_DNS_FIREWALL :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_DNS_FIREWALL = SecurityServiceType' "DNS_FIREWALL"

pattern SecurityServiceType_NETWORK_FIREWALL :: SecurityServiceType
pattern $bSecurityServiceType_NETWORK_FIREWALL :: SecurityServiceType
$mSecurityServiceType_NETWORK_FIREWALL :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_NETWORK_FIREWALL = SecurityServiceType' "NETWORK_FIREWALL"

pattern SecurityServiceType_SECURITY_GROUPS_COMMON :: SecurityServiceType
pattern $bSecurityServiceType_SECURITY_GROUPS_COMMON :: SecurityServiceType
$mSecurityServiceType_SECURITY_GROUPS_COMMON :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_SECURITY_GROUPS_COMMON = SecurityServiceType' "SECURITY_GROUPS_COMMON"

pattern SecurityServiceType_SECURITY_GROUPS_CONTENT_AUDIT :: SecurityServiceType
pattern $bSecurityServiceType_SECURITY_GROUPS_CONTENT_AUDIT :: SecurityServiceType
$mSecurityServiceType_SECURITY_GROUPS_CONTENT_AUDIT :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_SECURITY_GROUPS_CONTENT_AUDIT = SecurityServiceType' "SECURITY_GROUPS_CONTENT_AUDIT"

pattern SecurityServiceType_SECURITY_GROUPS_USAGE_AUDIT :: SecurityServiceType
pattern $bSecurityServiceType_SECURITY_GROUPS_USAGE_AUDIT :: SecurityServiceType
$mSecurityServiceType_SECURITY_GROUPS_USAGE_AUDIT :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_SECURITY_GROUPS_USAGE_AUDIT = SecurityServiceType' "SECURITY_GROUPS_USAGE_AUDIT"

pattern SecurityServiceType_SHIELD_ADVANCED :: SecurityServiceType
pattern $bSecurityServiceType_SHIELD_ADVANCED :: SecurityServiceType
$mSecurityServiceType_SHIELD_ADVANCED :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_SHIELD_ADVANCED = SecurityServiceType' "SHIELD_ADVANCED"

pattern SecurityServiceType_WAF :: SecurityServiceType
pattern $bSecurityServiceType_WAF :: SecurityServiceType
$mSecurityServiceType_WAF :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_WAF = SecurityServiceType' "WAF"

pattern SecurityServiceType_WAFV2 :: SecurityServiceType
pattern $bSecurityServiceType_WAFV2 :: SecurityServiceType
$mSecurityServiceType_WAFV2 :: forall r. SecurityServiceType -> (Void# -> r) -> (Void# -> r) -> r
SecurityServiceType_WAFV2 = SecurityServiceType' "WAFV2"

{-# COMPLETE
  SecurityServiceType_DNS_FIREWALL,
  SecurityServiceType_NETWORK_FIREWALL,
  SecurityServiceType_SECURITY_GROUPS_COMMON,
  SecurityServiceType_SECURITY_GROUPS_CONTENT_AUDIT,
  SecurityServiceType_SECURITY_GROUPS_USAGE_AUDIT,
  SecurityServiceType_SHIELD_ADVANCED,
  SecurityServiceType_WAF,
  SecurityServiceType_WAFV2,
  SecurityServiceType'
  #-}