{-# 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.EC2.Types.InternetGateway where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.InternetGatewayAttachment
import Amazonka.EC2.Types.Tag
import qualified Amazonka.Prelude as Prelude
data InternetGateway = InternetGateway'
{
InternetGateway -> Maybe [InternetGatewayAttachment]
attachments :: Prelude.Maybe [InternetGatewayAttachment],
InternetGateway -> Maybe Text
ownerId :: Prelude.Maybe Prelude.Text,
InternetGateway -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
InternetGateway -> Text
internetGatewayId :: Prelude.Text
}
deriving (InternetGateway -> InternetGateway -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InternetGateway -> InternetGateway -> Bool
$c/= :: InternetGateway -> InternetGateway -> Bool
== :: InternetGateway -> InternetGateway -> Bool
$c== :: InternetGateway -> InternetGateway -> Bool
Prelude.Eq, ReadPrec [InternetGateway]
ReadPrec InternetGateway
Int -> ReadS InternetGateway
ReadS [InternetGateway]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [InternetGateway]
$creadListPrec :: ReadPrec [InternetGateway]
readPrec :: ReadPrec InternetGateway
$creadPrec :: ReadPrec InternetGateway
readList :: ReadS [InternetGateway]
$creadList :: ReadS [InternetGateway]
readsPrec :: Int -> ReadS InternetGateway
$creadsPrec :: Int -> ReadS InternetGateway
Prelude.Read, Int -> InternetGateway -> ShowS
[InternetGateway] -> ShowS
InternetGateway -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InternetGateway] -> ShowS
$cshowList :: [InternetGateway] -> ShowS
show :: InternetGateway -> String
$cshow :: InternetGateway -> String
showsPrec :: Int -> InternetGateway -> ShowS
$cshowsPrec :: Int -> InternetGateway -> ShowS
Prelude.Show, forall x. Rep InternetGateway x -> InternetGateway
forall x. InternetGateway -> Rep InternetGateway x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep InternetGateway x -> InternetGateway
$cfrom :: forall x. InternetGateway -> Rep InternetGateway x
Prelude.Generic)
newInternetGateway ::
Prelude.Text ->
InternetGateway
newInternetGateway :: Text -> InternetGateway
newInternetGateway Text
pInternetGatewayId_ =
InternetGateway'
{ $sel:attachments:InternetGateway' :: Maybe [InternetGatewayAttachment]
attachments = forall a. Maybe a
Prelude.Nothing,
$sel:ownerId:InternetGateway' :: Maybe Text
ownerId = forall a. Maybe a
Prelude.Nothing,
$sel:tags:InternetGateway' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
$sel:internetGatewayId:InternetGateway' :: Text
internetGatewayId = Text
pInternetGatewayId_
}
internetGateway_attachments :: Lens.Lens' InternetGateway (Prelude.Maybe [InternetGatewayAttachment])
internetGateway_attachments :: Lens' InternetGateway (Maybe [InternetGatewayAttachment])
internetGateway_attachments = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InternetGateway' {Maybe [InternetGatewayAttachment]
attachments :: Maybe [InternetGatewayAttachment]
$sel:attachments:InternetGateway' :: InternetGateway -> Maybe [InternetGatewayAttachment]
attachments} -> Maybe [InternetGatewayAttachment]
attachments) (\s :: InternetGateway
s@InternetGateway' {} Maybe [InternetGatewayAttachment]
a -> InternetGateway
s {$sel:attachments:InternetGateway' :: Maybe [InternetGatewayAttachment]
attachments = Maybe [InternetGatewayAttachment]
a} :: InternetGateway) 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
internetGateway_ownerId :: Lens.Lens' InternetGateway (Prelude.Maybe Prelude.Text)
internetGateway_ownerId :: Lens' InternetGateway (Maybe Text)
internetGateway_ownerId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InternetGateway' {Maybe Text
ownerId :: Maybe Text
$sel:ownerId:InternetGateway' :: InternetGateway -> Maybe Text
ownerId} -> Maybe Text
ownerId) (\s :: InternetGateway
s@InternetGateway' {} Maybe Text
a -> InternetGateway
s {$sel:ownerId:InternetGateway' :: Maybe Text
ownerId = Maybe Text
a} :: InternetGateway)
internetGateway_tags :: Lens.Lens' InternetGateway (Prelude.Maybe [Tag])
internetGateway_tags :: Lens' InternetGateway (Maybe [Tag])
internetGateway_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InternetGateway' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:InternetGateway' :: InternetGateway -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: InternetGateway
s@InternetGateway' {} Maybe [Tag]
a -> InternetGateway
s {$sel:tags:InternetGateway' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: InternetGateway) 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
internetGateway_internetGatewayId :: Lens.Lens' InternetGateway Prelude.Text
internetGateway_internetGatewayId :: Lens' InternetGateway Text
internetGateway_internetGatewayId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InternetGateway' {Text
internetGatewayId :: Text
$sel:internetGatewayId:InternetGateway' :: InternetGateway -> Text
internetGatewayId} -> Text
internetGatewayId) (\s :: InternetGateway
s@InternetGateway' {} Text
a -> InternetGateway
s {$sel:internetGatewayId:InternetGateway' :: Text
internetGatewayId = Text
a} :: InternetGateway)
instance Data.FromXML InternetGateway where
parseXML :: [Node] -> Either String InternetGateway
parseXML [Node]
x =
Maybe [InternetGatewayAttachment]
-> Maybe Text -> Maybe [Tag] -> Text -> InternetGateway
InternetGateway'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"attachmentSet"
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ownerId")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"tagSet"
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"internetGatewayId")
instance Prelude.Hashable InternetGateway where
hashWithSalt :: Int -> InternetGateway -> Int
hashWithSalt Int
_salt InternetGateway' {Maybe [InternetGatewayAttachment]
Maybe [Tag]
Maybe Text
Text
internetGatewayId :: Text
tags :: Maybe [Tag]
ownerId :: Maybe Text
attachments :: Maybe [InternetGatewayAttachment]
$sel:internetGatewayId:InternetGateway' :: InternetGateway -> Text
$sel:tags:InternetGateway' :: InternetGateway -> Maybe [Tag]
$sel:ownerId:InternetGateway' :: InternetGateway -> Maybe Text
$sel:attachments:InternetGateway' :: InternetGateway -> Maybe [InternetGatewayAttachment]
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [InternetGatewayAttachment]
attachments
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ownerId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
internetGatewayId
instance Prelude.NFData InternetGateway where
rnf :: InternetGateway -> ()
rnf InternetGateway' {Maybe [InternetGatewayAttachment]
Maybe [Tag]
Maybe Text
Text
internetGatewayId :: Text
tags :: Maybe [Tag]
ownerId :: Maybe Text
attachments :: Maybe [InternetGatewayAttachment]
$sel:internetGatewayId:InternetGateway' :: InternetGateway -> Text
$sel:tags:InternetGateway' :: InternetGateway -> Maybe [Tag]
$sel:ownerId:InternetGateway' :: InternetGateway -> Maybe Text
$sel:attachments:InternetGateway' :: InternetGateway -> Maybe [InternetGatewayAttachment]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [InternetGatewayAttachment]
attachments
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ownerId
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 Text
internetGatewayId