{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.AppMesh.Types.GrpcRoute where
import Amazonka.AppMesh.Types.GrpcRetryPolicy
import Amazonka.AppMesh.Types.GrpcRouteAction
import Amazonka.AppMesh.Types.GrpcRouteMatch
import Amazonka.AppMesh.Types.GrpcTimeout
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
data GrpcRoute = GrpcRoute'
{
GrpcRoute -> Maybe GrpcRetryPolicy
retryPolicy :: Prelude.Maybe GrpcRetryPolicy,
GrpcRoute -> Maybe GrpcTimeout
timeout :: Prelude.Maybe GrpcTimeout,
GrpcRoute -> GrpcRouteAction
action :: GrpcRouteAction,
GrpcRoute -> GrpcRouteMatch
match :: GrpcRouteMatch
}
deriving (GrpcRoute -> GrpcRoute -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GrpcRoute -> GrpcRoute -> Bool
$c/= :: GrpcRoute -> GrpcRoute -> Bool
== :: GrpcRoute -> GrpcRoute -> Bool
$c== :: GrpcRoute -> GrpcRoute -> Bool
Prelude.Eq, ReadPrec [GrpcRoute]
ReadPrec GrpcRoute
Int -> ReadS GrpcRoute
ReadS [GrpcRoute]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GrpcRoute]
$creadListPrec :: ReadPrec [GrpcRoute]
readPrec :: ReadPrec GrpcRoute
$creadPrec :: ReadPrec GrpcRoute
readList :: ReadS [GrpcRoute]
$creadList :: ReadS [GrpcRoute]
readsPrec :: Int -> ReadS GrpcRoute
$creadsPrec :: Int -> ReadS GrpcRoute
Prelude.Read, Int -> GrpcRoute -> ShowS
[GrpcRoute] -> ShowS
GrpcRoute -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GrpcRoute] -> ShowS
$cshowList :: [GrpcRoute] -> ShowS
show :: GrpcRoute -> String
$cshow :: GrpcRoute -> String
showsPrec :: Int -> GrpcRoute -> ShowS
$cshowsPrec :: Int -> GrpcRoute -> ShowS
Prelude.Show, forall x. Rep GrpcRoute x -> GrpcRoute
forall x. GrpcRoute -> Rep GrpcRoute x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GrpcRoute x -> GrpcRoute
$cfrom :: forall x. GrpcRoute -> Rep GrpcRoute x
Prelude.Generic)
newGrpcRoute ::
GrpcRouteAction ->
GrpcRouteMatch ->
GrpcRoute
newGrpcRoute :: GrpcRouteAction -> GrpcRouteMatch -> GrpcRoute
newGrpcRoute GrpcRouteAction
pAction_ GrpcRouteMatch
pMatch_ =
GrpcRoute'
{ $sel:retryPolicy:GrpcRoute' :: Maybe GrpcRetryPolicy
retryPolicy = forall a. Maybe a
Prelude.Nothing,
$sel:timeout:GrpcRoute' :: Maybe GrpcTimeout
timeout = forall a. Maybe a
Prelude.Nothing,
$sel:action:GrpcRoute' :: GrpcRouteAction
action = GrpcRouteAction
pAction_,
$sel:match:GrpcRoute' :: GrpcRouteMatch
match = GrpcRouteMatch
pMatch_
}
grpcRoute_retryPolicy :: Lens.Lens' GrpcRoute (Prelude.Maybe GrpcRetryPolicy)
grpcRoute_retryPolicy :: Lens' GrpcRoute (Maybe GrpcRetryPolicy)
grpcRoute_retryPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GrpcRoute' {Maybe GrpcRetryPolicy
retryPolicy :: Maybe GrpcRetryPolicy
$sel:retryPolicy:GrpcRoute' :: GrpcRoute -> Maybe GrpcRetryPolicy
retryPolicy} -> Maybe GrpcRetryPolicy
retryPolicy) (\s :: GrpcRoute
s@GrpcRoute' {} Maybe GrpcRetryPolicy
a -> GrpcRoute
s {$sel:retryPolicy:GrpcRoute' :: Maybe GrpcRetryPolicy
retryPolicy = Maybe GrpcRetryPolicy
a} :: GrpcRoute)
grpcRoute_timeout :: Lens.Lens' GrpcRoute (Prelude.Maybe GrpcTimeout)
grpcRoute_timeout :: Lens' GrpcRoute (Maybe GrpcTimeout)
grpcRoute_timeout = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GrpcRoute' {Maybe GrpcTimeout
timeout :: Maybe GrpcTimeout
$sel:timeout:GrpcRoute' :: GrpcRoute -> Maybe GrpcTimeout
timeout} -> Maybe GrpcTimeout
timeout) (\s :: GrpcRoute
s@GrpcRoute' {} Maybe GrpcTimeout
a -> GrpcRoute
s {$sel:timeout:GrpcRoute' :: Maybe GrpcTimeout
timeout = Maybe GrpcTimeout
a} :: GrpcRoute)
grpcRoute_action :: Lens.Lens' GrpcRoute GrpcRouteAction
grpcRoute_action :: Lens' GrpcRoute GrpcRouteAction
grpcRoute_action = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GrpcRoute' {GrpcRouteAction
action :: GrpcRouteAction
$sel:action:GrpcRoute' :: GrpcRoute -> GrpcRouteAction
action} -> GrpcRouteAction
action) (\s :: GrpcRoute
s@GrpcRoute' {} GrpcRouteAction
a -> GrpcRoute
s {$sel:action:GrpcRoute' :: GrpcRouteAction
action = GrpcRouteAction
a} :: GrpcRoute)
grpcRoute_match :: Lens.Lens' GrpcRoute GrpcRouteMatch
grpcRoute_match :: Lens' GrpcRoute GrpcRouteMatch
grpcRoute_match = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GrpcRoute' {GrpcRouteMatch
match :: GrpcRouteMatch
$sel:match:GrpcRoute' :: GrpcRoute -> GrpcRouteMatch
match} -> GrpcRouteMatch
match) (\s :: GrpcRoute
s@GrpcRoute' {} GrpcRouteMatch
a -> GrpcRoute
s {$sel:match:GrpcRoute' :: GrpcRouteMatch
match = GrpcRouteMatch
a} :: GrpcRoute)
instance Data.FromJSON GrpcRoute where
parseJSON :: Value -> Parser GrpcRoute
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"GrpcRoute"
( \Object
x ->
Maybe GrpcRetryPolicy
-> Maybe GrpcTimeout
-> GrpcRouteAction
-> GrpcRouteMatch
-> GrpcRoute
GrpcRoute'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"retryPolicy")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"timeout")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"action")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"match")
)
instance Prelude.Hashable GrpcRoute where
hashWithSalt :: Int -> GrpcRoute -> Int
hashWithSalt Int
_salt GrpcRoute' {Maybe GrpcTimeout
Maybe GrpcRetryPolicy
GrpcRouteMatch
GrpcRouteAction
match :: GrpcRouteMatch
action :: GrpcRouteAction
timeout :: Maybe GrpcTimeout
retryPolicy :: Maybe GrpcRetryPolicy
$sel:match:GrpcRoute' :: GrpcRoute -> GrpcRouteMatch
$sel:action:GrpcRoute' :: GrpcRoute -> GrpcRouteAction
$sel:timeout:GrpcRoute' :: GrpcRoute -> Maybe GrpcTimeout
$sel:retryPolicy:GrpcRoute' :: GrpcRoute -> Maybe GrpcRetryPolicy
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GrpcRetryPolicy
retryPolicy
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GrpcTimeout
timeout
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` GrpcRouteAction
action
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` GrpcRouteMatch
match
instance Prelude.NFData GrpcRoute where
rnf :: GrpcRoute -> ()
rnf GrpcRoute' {Maybe GrpcTimeout
Maybe GrpcRetryPolicy
GrpcRouteMatch
GrpcRouteAction
match :: GrpcRouteMatch
action :: GrpcRouteAction
timeout :: Maybe GrpcTimeout
retryPolicy :: Maybe GrpcRetryPolicy
$sel:match:GrpcRoute' :: GrpcRoute -> GrpcRouteMatch
$sel:action:GrpcRoute' :: GrpcRoute -> GrpcRouteAction
$sel:timeout:GrpcRoute' :: GrpcRoute -> Maybe GrpcTimeout
$sel:retryPolicy:GrpcRoute' :: GrpcRoute -> Maybe GrpcRetryPolicy
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe GrpcRetryPolicy
retryPolicy
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GrpcTimeout
timeout
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf GrpcRouteAction
action
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf GrpcRouteMatch
match
instance Data.ToJSON GrpcRoute where
toJSON :: GrpcRoute -> Value
toJSON GrpcRoute' {Maybe GrpcTimeout
Maybe GrpcRetryPolicy
GrpcRouteMatch
GrpcRouteAction
match :: GrpcRouteMatch
action :: GrpcRouteAction
timeout :: Maybe GrpcTimeout
retryPolicy :: Maybe GrpcRetryPolicy
$sel:match:GrpcRoute' :: GrpcRoute -> GrpcRouteMatch
$sel:action:GrpcRoute' :: GrpcRoute -> GrpcRouteAction
$sel:timeout:GrpcRoute' :: GrpcRoute -> Maybe GrpcTimeout
$sel:retryPolicy:GrpcRoute' :: GrpcRoute -> Maybe GrpcRetryPolicy
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"retryPolicy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GrpcRetryPolicy
retryPolicy,
(Key
"timeout" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GrpcTimeout
timeout,
forall a. a -> Maybe a
Prelude.Just (Key
"action" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= GrpcRouteAction
action),
forall a. a -> Maybe a
Prelude.Just (Key
"match" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= GrpcRouteMatch
match)
]
)