{-# 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.CodeDeploy.Types.TrafficRoutingType
-- 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.CodeDeploy.Types.TrafficRoutingType
  ( TrafficRoutingType
      ( ..,
        TrafficRoutingType_AllAtOnce,
        TrafficRoutingType_TimeBasedCanary,
        TrafficRoutingType_TimeBasedLinear
      ),
  )
where

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

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

pattern TrafficRoutingType_AllAtOnce :: TrafficRoutingType
pattern $bTrafficRoutingType_AllAtOnce :: TrafficRoutingType
$mTrafficRoutingType_AllAtOnce :: forall r. TrafficRoutingType -> (Void# -> r) -> (Void# -> r) -> r
TrafficRoutingType_AllAtOnce = TrafficRoutingType' "AllAtOnce"

pattern TrafficRoutingType_TimeBasedCanary :: TrafficRoutingType
pattern $bTrafficRoutingType_TimeBasedCanary :: TrafficRoutingType
$mTrafficRoutingType_TimeBasedCanary :: forall r. TrafficRoutingType -> (Void# -> r) -> (Void# -> r) -> r
TrafficRoutingType_TimeBasedCanary = TrafficRoutingType' "TimeBasedCanary"

pattern TrafficRoutingType_TimeBasedLinear :: TrafficRoutingType
pattern $bTrafficRoutingType_TimeBasedLinear :: TrafficRoutingType
$mTrafficRoutingType_TimeBasedLinear :: forall r. TrafficRoutingType -> (Void# -> r) -> (Void# -> r) -> r
TrafficRoutingType_TimeBasedLinear = TrafficRoutingType' "TimeBasedLinear"

{-# COMPLETE
  TrafficRoutingType_AllAtOnce,
  TrafficRoutingType_TimeBasedCanary,
  TrafficRoutingType_TimeBasedLinear,
  TrafficRoutingType'
  #-}