{-# 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.S3.Types.TargetGrant where
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
import Amazonka.S3.Internal
import Amazonka.S3.Types.BucketLogsPermission
import Amazonka.S3.Types.Grantee
data TargetGrant = TargetGrant'
{
TargetGrant -> Maybe Grantee
grantee :: Prelude.Maybe Grantee,
TargetGrant -> Maybe BucketLogsPermission
permission :: Prelude.Maybe BucketLogsPermission
}
deriving (TargetGrant -> TargetGrant -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TargetGrant -> TargetGrant -> Bool
$c/= :: TargetGrant -> TargetGrant -> Bool
== :: TargetGrant -> TargetGrant -> Bool
$c== :: TargetGrant -> TargetGrant -> Bool
Prelude.Eq, ReadPrec [TargetGrant]
ReadPrec TargetGrant
Int -> ReadS TargetGrant
ReadS [TargetGrant]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TargetGrant]
$creadListPrec :: ReadPrec [TargetGrant]
readPrec :: ReadPrec TargetGrant
$creadPrec :: ReadPrec TargetGrant
readList :: ReadS [TargetGrant]
$creadList :: ReadS [TargetGrant]
readsPrec :: Int -> ReadS TargetGrant
$creadsPrec :: Int -> ReadS TargetGrant
Prelude.Read, Int -> TargetGrant -> ShowS
[TargetGrant] -> ShowS
TargetGrant -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TargetGrant] -> ShowS
$cshowList :: [TargetGrant] -> ShowS
show :: TargetGrant -> String
$cshow :: TargetGrant -> String
showsPrec :: Int -> TargetGrant -> ShowS
$cshowsPrec :: Int -> TargetGrant -> ShowS
Prelude.Show, forall x. Rep TargetGrant x -> TargetGrant
forall x. TargetGrant -> Rep TargetGrant x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TargetGrant x -> TargetGrant
$cfrom :: forall x. TargetGrant -> Rep TargetGrant x
Prelude.Generic)
newTargetGrant ::
TargetGrant
newTargetGrant :: TargetGrant
newTargetGrant =
TargetGrant'
{ $sel:grantee:TargetGrant' :: Maybe Grantee
grantee = forall a. Maybe a
Prelude.Nothing,
$sel:permission:TargetGrant' :: Maybe BucketLogsPermission
permission = forall a. Maybe a
Prelude.Nothing
}
targetGrant_grantee :: Lens.Lens' TargetGrant (Prelude.Maybe Grantee)
targetGrant_grantee :: Lens' TargetGrant (Maybe Grantee)
targetGrant_grantee = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TargetGrant' {Maybe Grantee
grantee :: Maybe Grantee
$sel:grantee:TargetGrant' :: TargetGrant -> Maybe Grantee
grantee} -> Maybe Grantee
grantee) (\s :: TargetGrant
s@TargetGrant' {} Maybe Grantee
a -> TargetGrant
s {$sel:grantee:TargetGrant' :: Maybe Grantee
grantee = Maybe Grantee
a} :: TargetGrant)
targetGrant_permission :: Lens.Lens' TargetGrant (Prelude.Maybe BucketLogsPermission)
targetGrant_permission :: Lens' TargetGrant (Maybe BucketLogsPermission)
targetGrant_permission = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TargetGrant' {Maybe BucketLogsPermission
permission :: Maybe BucketLogsPermission
$sel:permission:TargetGrant' :: TargetGrant -> Maybe BucketLogsPermission
permission} -> Maybe BucketLogsPermission
permission) (\s :: TargetGrant
s@TargetGrant' {} Maybe BucketLogsPermission
a -> TargetGrant
s {$sel:permission:TargetGrant' :: Maybe BucketLogsPermission
permission = Maybe BucketLogsPermission
a} :: TargetGrant)
instance Data.FromXML TargetGrant where
parseXML :: [Node] -> Either String TargetGrant
parseXML [Node]
x =
Maybe Grantee -> Maybe BucketLogsPermission -> TargetGrant
TargetGrant'
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
"Grantee")
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
"Permission")
instance Prelude.Hashable TargetGrant where
hashWithSalt :: Int -> TargetGrant -> Int
hashWithSalt Int
_salt TargetGrant' {Maybe BucketLogsPermission
Maybe Grantee
permission :: Maybe BucketLogsPermission
grantee :: Maybe Grantee
$sel:permission:TargetGrant' :: TargetGrant -> Maybe BucketLogsPermission
$sel:grantee:TargetGrant' :: TargetGrant -> Maybe Grantee
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Grantee
grantee
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BucketLogsPermission
permission
instance Prelude.NFData TargetGrant where
rnf :: TargetGrant -> ()
rnf TargetGrant' {Maybe BucketLogsPermission
Maybe Grantee
permission :: Maybe BucketLogsPermission
grantee :: Maybe Grantee
$sel:permission:TargetGrant' :: TargetGrant -> Maybe BucketLogsPermission
$sel:grantee:TargetGrant' :: TargetGrant -> Maybe Grantee
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Grantee
grantee
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BucketLogsPermission
permission
instance Data.ToXML TargetGrant where
toXML :: TargetGrant -> XML
toXML TargetGrant' {Maybe BucketLogsPermission
Maybe Grantee
permission :: Maybe BucketLogsPermission
grantee :: Maybe Grantee
$sel:permission:TargetGrant' :: TargetGrant -> Maybe BucketLogsPermission
$sel:grantee:TargetGrant' :: TargetGrant -> Maybe Grantee
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ Name
"Grantee" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe Grantee
grantee,
Name
"Permission" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe BucketLogsPermission
permission
]