{-# 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.AccessControlPolicy 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.Grant
import Amazonka.S3.Types.Owner
data AccessControlPolicy = AccessControlPolicy'
{
AccessControlPolicy -> Maybe [Grant]
grants :: Prelude.Maybe [Grant],
AccessControlPolicy -> Maybe Owner
owner :: Prelude.Maybe Owner
}
deriving (AccessControlPolicy -> AccessControlPolicy -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccessControlPolicy -> AccessControlPolicy -> Bool
$c/= :: AccessControlPolicy -> AccessControlPolicy -> Bool
== :: AccessControlPolicy -> AccessControlPolicy -> Bool
$c== :: AccessControlPolicy -> AccessControlPolicy -> Bool
Prelude.Eq, ReadPrec [AccessControlPolicy]
ReadPrec AccessControlPolicy
Int -> ReadS AccessControlPolicy
ReadS [AccessControlPolicy]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AccessControlPolicy]
$creadListPrec :: ReadPrec [AccessControlPolicy]
readPrec :: ReadPrec AccessControlPolicy
$creadPrec :: ReadPrec AccessControlPolicy
readList :: ReadS [AccessControlPolicy]
$creadList :: ReadS [AccessControlPolicy]
readsPrec :: Int -> ReadS AccessControlPolicy
$creadsPrec :: Int -> ReadS AccessControlPolicy
Prelude.Read, Int -> AccessControlPolicy -> ShowS
[AccessControlPolicy] -> ShowS
AccessControlPolicy -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccessControlPolicy] -> ShowS
$cshowList :: [AccessControlPolicy] -> ShowS
show :: AccessControlPolicy -> String
$cshow :: AccessControlPolicy -> String
showsPrec :: Int -> AccessControlPolicy -> ShowS
$cshowsPrec :: Int -> AccessControlPolicy -> ShowS
Prelude.Show, forall x. Rep AccessControlPolicy x -> AccessControlPolicy
forall x. AccessControlPolicy -> Rep AccessControlPolicy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AccessControlPolicy x -> AccessControlPolicy
$cfrom :: forall x. AccessControlPolicy -> Rep AccessControlPolicy x
Prelude.Generic)
newAccessControlPolicy ::
AccessControlPolicy
newAccessControlPolicy :: AccessControlPolicy
newAccessControlPolicy =
AccessControlPolicy'
{ $sel:grants:AccessControlPolicy' :: Maybe [Grant]
grants = forall a. Maybe a
Prelude.Nothing,
$sel:owner:AccessControlPolicy' :: Maybe Owner
owner = forall a. Maybe a
Prelude.Nothing
}
accessControlPolicy_grants :: Lens.Lens' AccessControlPolicy (Prelude.Maybe [Grant])
accessControlPolicy_grants :: Lens' AccessControlPolicy (Maybe [Grant])
accessControlPolicy_grants = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AccessControlPolicy' {Maybe [Grant]
grants :: Maybe [Grant]
$sel:grants:AccessControlPolicy' :: AccessControlPolicy -> Maybe [Grant]
grants} -> Maybe [Grant]
grants) (\s :: AccessControlPolicy
s@AccessControlPolicy' {} Maybe [Grant]
a -> AccessControlPolicy
s {$sel:grants:AccessControlPolicy' :: Maybe [Grant]
grants = Maybe [Grant]
a} :: AccessControlPolicy) 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
accessControlPolicy_owner :: Lens.Lens' AccessControlPolicy (Prelude.Maybe Owner)
accessControlPolicy_owner :: Lens' AccessControlPolicy (Maybe Owner)
accessControlPolicy_owner = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AccessControlPolicy' {Maybe Owner
owner :: Maybe Owner
$sel:owner:AccessControlPolicy' :: AccessControlPolicy -> Maybe Owner
owner} -> Maybe Owner
owner) (\s :: AccessControlPolicy
s@AccessControlPolicy' {} Maybe Owner
a -> AccessControlPolicy
s {$sel:owner:AccessControlPolicy' :: Maybe Owner
owner = Maybe Owner
a} :: AccessControlPolicy)
instance Prelude.Hashable AccessControlPolicy where
hashWithSalt :: Int -> AccessControlPolicy -> Int
hashWithSalt Int
_salt AccessControlPolicy' {Maybe [Grant]
Maybe Owner
owner :: Maybe Owner
grants :: Maybe [Grant]
$sel:owner:AccessControlPolicy' :: AccessControlPolicy -> Maybe Owner
$sel:grants:AccessControlPolicy' :: AccessControlPolicy -> Maybe [Grant]
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Grant]
grants
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Owner
owner
instance Prelude.NFData AccessControlPolicy where
rnf :: AccessControlPolicy -> ()
rnf AccessControlPolicy' {Maybe [Grant]
Maybe Owner
owner :: Maybe Owner
grants :: Maybe [Grant]
$sel:owner:AccessControlPolicy' :: AccessControlPolicy -> Maybe Owner
$sel:grants:AccessControlPolicy' :: AccessControlPolicy -> Maybe [Grant]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [Grant]
grants seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Owner
owner
instance Data.ToXML AccessControlPolicy where
toXML :: AccessControlPolicy -> XML
toXML AccessControlPolicy' {Maybe [Grant]
Maybe Owner
owner :: Maybe Owner
grants :: Maybe [Grant]
$sel:owner:AccessControlPolicy' :: AccessControlPolicy -> Maybe Owner
$sel:grants:AccessControlPolicy' :: AccessControlPolicy -> Maybe [Grant]
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ Name
"AccessControlList"
forall a. ToXML a => Name -> a -> XML
Data.@= forall a. ToXML a => a -> XML
Data.toXML
(forall a. (IsList a, ToXML (Item a)) => Name -> a -> XML
Data.toXMLList Name
"Grant" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Grant]
grants),
Name
"Owner" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe Owner
owner
]