{-# 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.NetworkManager.Types.Link where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.NetworkManager.Types.Bandwidth
import Amazonka.NetworkManager.Types.LinkState
import Amazonka.NetworkManager.Types.Tag
import qualified Amazonka.Prelude as Prelude
data Link = Link'
{
Link -> Maybe Bandwidth
bandwidth :: Prelude.Maybe Bandwidth,
Link -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
Link -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
Link -> Maybe Text
globalNetworkId :: Prelude.Maybe Prelude.Text,
Link -> Maybe Text
linkArn :: Prelude.Maybe Prelude.Text,
Link -> Maybe Text
linkId :: Prelude.Maybe Prelude.Text,
Link -> Maybe Text
provider :: Prelude.Maybe Prelude.Text,
Link -> Maybe Text
siteId :: Prelude.Maybe Prelude.Text,
Link -> Maybe LinkState
state :: Prelude.Maybe LinkState,
Link -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
Link -> Maybe Text
type' :: Prelude.Maybe Prelude.Text
}
deriving (Link -> Link -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Link -> Link -> Bool
$c/= :: Link -> Link -> Bool
== :: Link -> Link -> Bool
$c== :: Link -> Link -> Bool
Prelude.Eq, ReadPrec [Link]
ReadPrec Link
Int -> ReadS Link
ReadS [Link]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Link]
$creadListPrec :: ReadPrec [Link]
readPrec :: ReadPrec Link
$creadPrec :: ReadPrec Link
readList :: ReadS [Link]
$creadList :: ReadS [Link]
readsPrec :: Int -> ReadS Link
$creadsPrec :: Int -> ReadS Link
Prelude.Read, Int -> Link -> ShowS
[Link] -> ShowS
Link -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Link] -> ShowS
$cshowList :: [Link] -> ShowS
show :: Link -> String
$cshow :: Link -> String
showsPrec :: Int -> Link -> ShowS
$cshowsPrec :: Int -> Link -> ShowS
Prelude.Show, forall x. Rep Link x -> Link
forall x. Link -> Rep Link x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Link x -> Link
$cfrom :: forall x. Link -> Rep Link x
Prelude.Generic)
newLink ::
Link
newLink :: Link
newLink =
Link'
{ $sel:bandwidth:Link' :: Maybe Bandwidth
bandwidth = forall a. Maybe a
Prelude.Nothing,
$sel:createdAt:Link' :: Maybe POSIX
createdAt = forall a. Maybe a
Prelude.Nothing,
$sel:description:Link' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
$sel:globalNetworkId:Link' :: Maybe Text
globalNetworkId = forall a. Maybe a
Prelude.Nothing,
$sel:linkArn:Link' :: Maybe Text
linkArn = forall a. Maybe a
Prelude.Nothing,
$sel:linkId:Link' :: Maybe Text
linkId = forall a. Maybe a
Prelude.Nothing,
$sel:provider:Link' :: Maybe Text
provider = forall a. Maybe a
Prelude.Nothing,
$sel:siteId:Link' :: Maybe Text
siteId = forall a. Maybe a
Prelude.Nothing,
$sel:state:Link' :: Maybe LinkState
state = forall a. Maybe a
Prelude.Nothing,
$sel:tags:Link' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
$sel:type':Link' :: Maybe Text
type' = forall a. Maybe a
Prelude.Nothing
}
link_bandwidth :: Lens.Lens' Link (Prelude.Maybe Bandwidth)
link_bandwidth :: Lens' Link (Maybe Bandwidth)
link_bandwidth = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Bandwidth
bandwidth :: Maybe Bandwidth
$sel:bandwidth:Link' :: Link -> Maybe Bandwidth
bandwidth} -> Maybe Bandwidth
bandwidth) (\s :: Link
s@Link' {} Maybe Bandwidth
a -> Link
s {$sel:bandwidth:Link' :: Maybe Bandwidth
bandwidth = Maybe Bandwidth
a} :: Link)
link_createdAt :: Lens.Lens' Link (Prelude.Maybe Prelude.UTCTime)
link_createdAt :: Lens' Link (Maybe UTCTime)
link_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:Link' :: Link -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: Link
s@Link' {} Maybe POSIX
a -> Link
s {$sel:createdAt:Link' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: Link) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time
link_description :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
link_description :: Lens' Link (Maybe Text)
link_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Text
description :: Maybe Text
$sel:description:Link' :: Link -> Maybe Text
description} -> Maybe Text
description) (\s :: Link
s@Link' {} Maybe Text
a -> Link
s {$sel:description:Link' :: Maybe Text
description = Maybe Text
a} :: Link)
link_globalNetworkId :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
link_globalNetworkId :: Lens' Link (Maybe Text)
link_globalNetworkId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Text
globalNetworkId :: Maybe Text
$sel:globalNetworkId:Link' :: Link -> Maybe Text
globalNetworkId} -> Maybe Text
globalNetworkId) (\s :: Link
s@Link' {} Maybe Text
a -> Link
s {$sel:globalNetworkId:Link' :: Maybe Text
globalNetworkId = Maybe Text
a} :: Link)
link_linkArn :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
link_linkArn :: Lens' Link (Maybe Text)
link_linkArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Text
linkArn :: Maybe Text
$sel:linkArn:Link' :: Link -> Maybe Text
linkArn} -> Maybe Text
linkArn) (\s :: Link
s@Link' {} Maybe Text
a -> Link
s {$sel:linkArn:Link' :: Maybe Text
linkArn = Maybe Text
a} :: Link)
link_linkId :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
link_linkId :: Lens' Link (Maybe Text)
link_linkId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Text
linkId :: Maybe Text
$sel:linkId:Link' :: Link -> Maybe Text
linkId} -> Maybe Text
linkId) (\s :: Link
s@Link' {} Maybe Text
a -> Link
s {$sel:linkId:Link' :: Maybe Text
linkId = Maybe Text
a} :: Link)
link_provider :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
link_provider :: Lens' Link (Maybe Text)
link_provider = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Text
provider :: Maybe Text
$sel:provider:Link' :: Link -> Maybe Text
provider} -> Maybe Text
provider) (\s :: Link
s@Link' {} Maybe Text
a -> Link
s {$sel:provider:Link' :: Maybe Text
provider = Maybe Text
a} :: Link)
link_siteId :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
link_siteId :: Lens' Link (Maybe Text)
link_siteId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Text
siteId :: Maybe Text
$sel:siteId:Link' :: Link -> Maybe Text
siteId} -> Maybe Text
siteId) (\s :: Link
s@Link' {} Maybe Text
a -> Link
s {$sel:siteId:Link' :: Maybe Text
siteId = Maybe Text
a} :: Link)
link_state :: Lens.Lens' Link (Prelude.Maybe LinkState)
link_state :: Lens' Link (Maybe LinkState)
link_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe LinkState
state :: Maybe LinkState
$sel:state:Link' :: Link -> Maybe LinkState
state} -> Maybe LinkState
state) (\s :: Link
s@Link' {} Maybe LinkState
a -> Link
s {$sel:state:Link' :: Maybe LinkState
state = Maybe LinkState
a} :: Link)
link_tags :: Lens.Lens' Link (Prelude.Maybe [Tag])
link_tags :: Lens' Link (Maybe [Tag])
link_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:Link' :: Link -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: Link
s@Link' {} Maybe [Tag]
a -> Link
s {$sel:tags:Link' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: Link) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
link_type :: Lens.Lens' Link (Prelude.Maybe Prelude.Text)
link_type :: Lens' Link (Maybe Text)
link_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Link' {Maybe Text
type' :: Maybe Text
$sel:type':Link' :: Link -> Maybe Text
type'} -> Maybe Text
type') (\s :: Link
s@Link' {} Maybe Text
a -> Link
s {$sel:type':Link' :: Maybe Text
type' = Maybe Text
a} :: Link)
instance Data.FromJSON Link where
parseJSON :: Value -> Parser Link
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Link"
( \Object
x ->
Maybe Bandwidth
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe LinkState
-> Maybe [Tag]
-> Maybe Text
-> Link
Link'
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
"Bandwidth")
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
"CreatedAt")
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
"Description")
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
"GlobalNetworkId")
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
"LinkArn")
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
"LinkId")
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
"Provider")
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
"SiteId")
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
"State")
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
"Tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
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
"Type")
)
instance Prelude.Hashable Link where
hashWithSalt :: Int -> Link -> Int
hashWithSalt Int
_salt Link' {Maybe [Tag]
Maybe Text
Maybe POSIX
Maybe Bandwidth
Maybe LinkState
type' :: Maybe Text
tags :: Maybe [Tag]
state :: Maybe LinkState
siteId :: Maybe Text
provider :: Maybe Text
linkId :: Maybe Text
linkArn :: Maybe Text
globalNetworkId :: Maybe Text
description :: Maybe Text
createdAt :: Maybe POSIX
bandwidth :: Maybe Bandwidth
$sel:type':Link' :: Link -> Maybe Text
$sel:tags:Link' :: Link -> Maybe [Tag]
$sel:state:Link' :: Link -> Maybe LinkState
$sel:siteId:Link' :: Link -> Maybe Text
$sel:provider:Link' :: Link -> Maybe Text
$sel:linkId:Link' :: Link -> Maybe Text
$sel:linkArn:Link' :: Link -> Maybe Text
$sel:globalNetworkId:Link' :: Link -> Maybe Text
$sel:description:Link' :: Link -> Maybe Text
$sel:createdAt:Link' :: Link -> Maybe POSIX
$sel:bandwidth:Link' :: Link -> Maybe Bandwidth
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bandwidth
bandwidth
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdAt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
globalNetworkId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
linkArn
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
linkId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
provider
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
siteId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LinkState
state
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
type'
instance Prelude.NFData Link where
rnf :: Link -> ()
rnf Link' {Maybe [Tag]
Maybe Text
Maybe POSIX
Maybe Bandwidth
Maybe LinkState
type' :: Maybe Text
tags :: Maybe [Tag]
state :: Maybe LinkState
siteId :: Maybe Text
provider :: Maybe Text
linkId :: Maybe Text
linkArn :: Maybe Text
globalNetworkId :: Maybe Text
description :: Maybe Text
createdAt :: Maybe POSIX
bandwidth :: Maybe Bandwidth
$sel:type':Link' :: Link -> Maybe Text
$sel:tags:Link' :: Link -> Maybe [Tag]
$sel:state:Link' :: Link -> Maybe LinkState
$sel:siteId:Link' :: Link -> Maybe Text
$sel:provider:Link' :: Link -> Maybe Text
$sel:linkId:Link' :: Link -> Maybe Text
$sel:linkArn:Link' :: Link -> Maybe Text
$sel:globalNetworkId:Link' :: Link -> Maybe Text
$sel:description:Link' :: Link -> Maybe Text
$sel:createdAt:Link' :: Link -> Maybe POSIX
$sel:bandwidth:Link' :: Link -> Maybe Bandwidth
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Bandwidth
bandwidth
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdAt
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
globalNetworkId
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
linkArn
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
linkId
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
provider
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
siteId
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LinkState
state
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
type'