{-# 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.CloudFront.Types.SSLSupportMethod
-- 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.CloudFront.Types.SSLSupportMethod
  ( SSLSupportMethod
      ( ..,
        SSLSupportMethod_Sni_only,
        SSLSupportMethod_Static_ip,
        SSLSupportMethod_Vip
      ),
  )
where

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

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

pattern SSLSupportMethod_Sni_only :: SSLSupportMethod
pattern $bSSLSupportMethod_Sni_only :: SSLSupportMethod
$mSSLSupportMethod_Sni_only :: forall r. SSLSupportMethod -> (Void# -> r) -> (Void# -> r) -> r
SSLSupportMethod_Sni_only = SSLSupportMethod' "sni-only"

pattern SSLSupportMethod_Static_ip :: SSLSupportMethod
pattern $bSSLSupportMethod_Static_ip :: SSLSupportMethod
$mSSLSupportMethod_Static_ip :: forall r. SSLSupportMethod -> (Void# -> r) -> (Void# -> r) -> r
SSLSupportMethod_Static_ip = SSLSupportMethod' "static-ip"

pattern SSLSupportMethod_Vip :: SSLSupportMethod
pattern $bSSLSupportMethod_Vip :: SSLSupportMethod
$mSSLSupportMethod_Vip :: forall r. SSLSupportMethod -> (Void# -> r) -> (Void# -> r) -> r
SSLSupportMethod_Vip = SSLSupportMethod' "vip"

{-# COMPLETE
  SSLSupportMethod_Sni_only,
  SSLSupportMethod_Static_ip,
  SSLSupportMethod_Vip,
  SSLSupportMethod'
  #-}