{-# 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.SESV2.Types.DimensionValueSource
-- 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.SESV2.Types.DimensionValueSource
  ( DimensionValueSource
      ( ..,
        DimensionValueSource_EMAIL_HEADER,
        DimensionValueSource_LINK_TAG,
        DimensionValueSource_MESSAGE_TAG
      ),
  )
where

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

-- | The location where the Amazon SES API v2 finds the value of a dimension
-- to publish to Amazon CloudWatch. To use the message tags that you
-- specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the
-- @SendEmail@ or @SendRawEmail@ API, choose @messageTag@. To use your own
-- email headers, choose @emailHeader@. To use link tags, choose
-- @linkTags@.
newtype DimensionValueSource = DimensionValueSource'
  { DimensionValueSource -> Text
fromDimensionValueSource ::
      Core.Text
  }
  deriving stock
    ( Int -> DimensionValueSource -> ShowS
[DimensionValueSource] -> ShowS
DimensionValueSource -> String
(Int -> DimensionValueSource -> ShowS)
-> (DimensionValueSource -> String)
-> ([DimensionValueSource] -> ShowS)
-> Show DimensionValueSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DimensionValueSource] -> ShowS
$cshowList :: [DimensionValueSource] -> ShowS
show :: DimensionValueSource -> String
$cshow :: DimensionValueSource -> String
showsPrec :: Int -> DimensionValueSource -> ShowS
$cshowsPrec :: Int -> DimensionValueSource -> ShowS
Prelude.Show,
      ReadPrec [DimensionValueSource]
ReadPrec DimensionValueSource
Int -> ReadS DimensionValueSource
ReadS [DimensionValueSource]
(Int -> ReadS DimensionValueSource)
-> ReadS [DimensionValueSource]
-> ReadPrec DimensionValueSource
-> ReadPrec [DimensionValueSource]
-> Read DimensionValueSource
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DimensionValueSource]
$creadListPrec :: ReadPrec [DimensionValueSource]
readPrec :: ReadPrec DimensionValueSource
$creadPrec :: ReadPrec DimensionValueSource
readList :: ReadS [DimensionValueSource]
$creadList :: ReadS [DimensionValueSource]
readsPrec :: Int -> ReadS DimensionValueSource
$creadsPrec :: Int -> ReadS DimensionValueSource
Prelude.Read,
      DimensionValueSource -> DimensionValueSource -> Bool
(DimensionValueSource -> DimensionValueSource -> Bool)
-> (DimensionValueSource -> DimensionValueSource -> Bool)
-> Eq DimensionValueSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DimensionValueSource -> DimensionValueSource -> Bool
$c/= :: DimensionValueSource -> DimensionValueSource -> Bool
== :: DimensionValueSource -> DimensionValueSource -> Bool
$c== :: DimensionValueSource -> DimensionValueSource -> Bool
Prelude.Eq,
      Eq DimensionValueSource
Eq DimensionValueSource
-> (DimensionValueSource -> DimensionValueSource -> Ordering)
-> (DimensionValueSource -> DimensionValueSource -> Bool)
-> (DimensionValueSource -> DimensionValueSource -> Bool)
-> (DimensionValueSource -> DimensionValueSource -> Bool)
-> (DimensionValueSource -> DimensionValueSource -> Bool)
-> (DimensionValueSource
    -> DimensionValueSource -> DimensionValueSource)
-> (DimensionValueSource
    -> DimensionValueSource -> DimensionValueSource)
-> Ord DimensionValueSource
DimensionValueSource -> DimensionValueSource -> Bool
DimensionValueSource -> DimensionValueSource -> Ordering
DimensionValueSource
-> DimensionValueSource -> DimensionValueSource
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 :: DimensionValueSource
-> DimensionValueSource -> DimensionValueSource
$cmin :: DimensionValueSource
-> DimensionValueSource -> DimensionValueSource
max :: DimensionValueSource
-> DimensionValueSource -> DimensionValueSource
$cmax :: DimensionValueSource
-> DimensionValueSource -> DimensionValueSource
>= :: DimensionValueSource -> DimensionValueSource -> Bool
$c>= :: DimensionValueSource -> DimensionValueSource -> Bool
> :: DimensionValueSource -> DimensionValueSource -> Bool
$c> :: DimensionValueSource -> DimensionValueSource -> Bool
<= :: DimensionValueSource -> DimensionValueSource -> Bool
$c<= :: DimensionValueSource -> DimensionValueSource -> Bool
< :: DimensionValueSource -> DimensionValueSource -> Bool
$c< :: DimensionValueSource -> DimensionValueSource -> Bool
compare :: DimensionValueSource -> DimensionValueSource -> Ordering
$ccompare :: DimensionValueSource -> DimensionValueSource -> Ordering
$cp1Ord :: Eq DimensionValueSource
Prelude.Ord,
      (forall x. DimensionValueSource -> Rep DimensionValueSource x)
-> (forall x. Rep DimensionValueSource x -> DimensionValueSource)
-> Generic DimensionValueSource
forall x. Rep DimensionValueSource x -> DimensionValueSource
forall x. DimensionValueSource -> Rep DimensionValueSource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DimensionValueSource x -> DimensionValueSource
$cfrom :: forall x. DimensionValueSource -> Rep DimensionValueSource x
Prelude.Generic
    )
  deriving newtype
    ( Int -> DimensionValueSource -> Int
DimensionValueSource -> Int
(Int -> DimensionValueSource -> Int)
-> (DimensionValueSource -> Int) -> Hashable DimensionValueSource
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: DimensionValueSource -> Int
$chash :: DimensionValueSource -> Int
hashWithSalt :: Int -> DimensionValueSource -> Int
$chashWithSalt :: Int -> DimensionValueSource -> Int
Prelude.Hashable,
      DimensionValueSource -> ()
(DimensionValueSource -> ()) -> NFData DimensionValueSource
forall a. (a -> ()) -> NFData a
rnf :: DimensionValueSource -> ()
$crnf :: DimensionValueSource -> ()
Prelude.NFData,
      Text -> Either String DimensionValueSource
(Text -> Either String DimensionValueSource)
-> FromText DimensionValueSource
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String DimensionValueSource
$cfromText :: Text -> Either String DimensionValueSource
Core.FromText,
      DimensionValueSource -> Text
(DimensionValueSource -> Text) -> ToText DimensionValueSource
forall a. (a -> Text) -> ToText a
toText :: DimensionValueSource -> Text
$ctoText :: DimensionValueSource -> Text
Core.ToText,
      DimensionValueSource -> ByteString
(DimensionValueSource -> ByteString)
-> ToByteString DimensionValueSource
forall a. (a -> ByteString) -> ToByteString a
toBS :: DimensionValueSource -> ByteString
$ctoBS :: DimensionValueSource -> ByteString
Core.ToByteString,
      DimensionValueSource -> ByteStringBuilder
(DimensionValueSource -> ByteStringBuilder)
-> ToLog DimensionValueSource
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: DimensionValueSource -> ByteStringBuilder
$cbuild :: DimensionValueSource -> ByteStringBuilder
Core.ToLog,
      HeaderName -> DimensionValueSource -> [Header]
(HeaderName -> DimensionValueSource -> [Header])
-> ToHeader DimensionValueSource
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> DimensionValueSource -> [Header]
$ctoHeader :: HeaderName -> DimensionValueSource -> [Header]
Core.ToHeader,
      DimensionValueSource -> QueryString
(DimensionValueSource -> QueryString)
-> ToQuery DimensionValueSource
forall a. (a -> QueryString) -> ToQuery a
toQuery :: DimensionValueSource -> QueryString
$ctoQuery :: DimensionValueSource -> QueryString
Core.ToQuery,
      Value -> Parser [DimensionValueSource]
Value -> Parser DimensionValueSource
(Value -> Parser DimensionValueSource)
-> (Value -> Parser [DimensionValueSource])
-> FromJSON DimensionValueSource
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [DimensionValueSource]
$cparseJSONList :: Value -> Parser [DimensionValueSource]
parseJSON :: Value -> Parser DimensionValueSource
$cparseJSON :: Value -> Parser DimensionValueSource
Core.FromJSON,
      FromJSONKeyFunction [DimensionValueSource]
FromJSONKeyFunction DimensionValueSource
FromJSONKeyFunction DimensionValueSource
-> FromJSONKeyFunction [DimensionValueSource]
-> FromJSONKey DimensionValueSource
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [DimensionValueSource]
$cfromJSONKeyList :: FromJSONKeyFunction [DimensionValueSource]
fromJSONKey :: FromJSONKeyFunction DimensionValueSource
$cfromJSONKey :: FromJSONKeyFunction DimensionValueSource
Core.FromJSONKey,
      [DimensionValueSource] -> Encoding
[DimensionValueSource] -> Value
DimensionValueSource -> Encoding
DimensionValueSource -> Value
(DimensionValueSource -> Value)
-> (DimensionValueSource -> Encoding)
-> ([DimensionValueSource] -> Value)
-> ([DimensionValueSource] -> Encoding)
-> ToJSON DimensionValueSource
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [DimensionValueSource] -> Encoding
$ctoEncodingList :: [DimensionValueSource] -> Encoding
toJSONList :: [DimensionValueSource] -> Value
$ctoJSONList :: [DimensionValueSource] -> Value
toEncoding :: DimensionValueSource -> Encoding
$ctoEncoding :: DimensionValueSource -> Encoding
toJSON :: DimensionValueSource -> Value
$ctoJSON :: DimensionValueSource -> Value
Core.ToJSON,
      ToJSONKeyFunction [DimensionValueSource]
ToJSONKeyFunction DimensionValueSource
ToJSONKeyFunction DimensionValueSource
-> ToJSONKeyFunction [DimensionValueSource]
-> ToJSONKey DimensionValueSource
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [DimensionValueSource]
$ctoJSONKeyList :: ToJSONKeyFunction [DimensionValueSource]
toJSONKey :: ToJSONKeyFunction DimensionValueSource
$ctoJSONKey :: ToJSONKeyFunction DimensionValueSource
Core.ToJSONKey,
      [Node] -> Either String DimensionValueSource
([Node] -> Either String DimensionValueSource)
-> FromXML DimensionValueSource
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String DimensionValueSource
$cparseXML :: [Node] -> Either String DimensionValueSource
Core.FromXML,
      DimensionValueSource -> XML
(DimensionValueSource -> XML) -> ToXML DimensionValueSource
forall a. (a -> XML) -> ToXML a
toXML :: DimensionValueSource -> XML
$ctoXML :: DimensionValueSource -> XML
Core.ToXML
    )

pattern DimensionValueSource_EMAIL_HEADER :: DimensionValueSource
pattern $bDimensionValueSource_EMAIL_HEADER :: DimensionValueSource
$mDimensionValueSource_EMAIL_HEADER :: forall r. DimensionValueSource -> (Void# -> r) -> (Void# -> r) -> r
DimensionValueSource_EMAIL_HEADER = DimensionValueSource' "EMAIL_HEADER"

pattern DimensionValueSource_LINK_TAG :: DimensionValueSource
pattern $bDimensionValueSource_LINK_TAG :: DimensionValueSource
$mDimensionValueSource_LINK_TAG :: forall r. DimensionValueSource -> (Void# -> r) -> (Void# -> r) -> r
DimensionValueSource_LINK_TAG = DimensionValueSource' "LINK_TAG"

pattern DimensionValueSource_MESSAGE_TAG :: DimensionValueSource
pattern $bDimensionValueSource_MESSAGE_TAG :: DimensionValueSource
$mDimensionValueSource_MESSAGE_TAG :: forall r. DimensionValueSource -> (Void# -> r) -> (Void# -> r) -> r
DimensionValueSource_MESSAGE_TAG = DimensionValueSource' "MESSAGE_TAG"

{-# COMPLETE
  DimensionValueSource_EMAIL_HEADER,
  DimensionValueSource_LINK_TAG,
  DimensionValueSource_MESSAGE_TAG,
  DimensionValueSource'
  #-}