{-# 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.MacieV2.Types.BucketLevelPermissions where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MacieV2.Types.AccessControlList
import Amazonka.MacieV2.Types.BlockPublicAccess
import Amazonka.MacieV2.Types.BucketPolicy
import qualified Amazonka.Prelude as Prelude
data BucketLevelPermissions = BucketLevelPermissions'
{
BucketLevelPermissions -> Maybe AccessControlList
accessControlList :: Prelude.Maybe AccessControlList,
BucketLevelPermissions -> Maybe BlockPublicAccess
blockPublicAccess :: Prelude.Maybe BlockPublicAccess,
BucketLevelPermissions -> Maybe BucketPolicy
bucketPolicy :: Prelude.Maybe BucketPolicy
}
deriving (BucketLevelPermissions -> BucketLevelPermissions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BucketLevelPermissions -> BucketLevelPermissions -> Bool
$c/= :: BucketLevelPermissions -> BucketLevelPermissions -> Bool
== :: BucketLevelPermissions -> BucketLevelPermissions -> Bool
$c== :: BucketLevelPermissions -> BucketLevelPermissions -> Bool
Prelude.Eq, ReadPrec [BucketLevelPermissions]
ReadPrec BucketLevelPermissions
Int -> ReadS BucketLevelPermissions
ReadS [BucketLevelPermissions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BucketLevelPermissions]
$creadListPrec :: ReadPrec [BucketLevelPermissions]
readPrec :: ReadPrec BucketLevelPermissions
$creadPrec :: ReadPrec BucketLevelPermissions
readList :: ReadS [BucketLevelPermissions]
$creadList :: ReadS [BucketLevelPermissions]
readsPrec :: Int -> ReadS BucketLevelPermissions
$creadsPrec :: Int -> ReadS BucketLevelPermissions
Prelude.Read, Int -> BucketLevelPermissions -> ShowS
[BucketLevelPermissions] -> ShowS
BucketLevelPermissions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BucketLevelPermissions] -> ShowS
$cshowList :: [BucketLevelPermissions] -> ShowS
show :: BucketLevelPermissions -> String
$cshow :: BucketLevelPermissions -> String
showsPrec :: Int -> BucketLevelPermissions -> ShowS
$cshowsPrec :: Int -> BucketLevelPermissions -> ShowS
Prelude.Show, forall x. Rep BucketLevelPermissions x -> BucketLevelPermissions
forall x. BucketLevelPermissions -> Rep BucketLevelPermissions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BucketLevelPermissions x -> BucketLevelPermissions
$cfrom :: forall x. BucketLevelPermissions -> Rep BucketLevelPermissions x
Prelude.Generic)
newBucketLevelPermissions ::
BucketLevelPermissions
newBucketLevelPermissions :: BucketLevelPermissions
newBucketLevelPermissions =
BucketLevelPermissions'
{ $sel:accessControlList:BucketLevelPermissions' :: Maybe AccessControlList
accessControlList =
forall a. Maybe a
Prelude.Nothing,
$sel:blockPublicAccess:BucketLevelPermissions' :: Maybe BlockPublicAccess
blockPublicAccess = forall a. Maybe a
Prelude.Nothing,
$sel:bucketPolicy:BucketLevelPermissions' :: Maybe BucketPolicy
bucketPolicy = forall a. Maybe a
Prelude.Nothing
}
bucketLevelPermissions_accessControlList :: Lens.Lens' BucketLevelPermissions (Prelude.Maybe AccessControlList)
bucketLevelPermissions_accessControlList :: Lens' BucketLevelPermissions (Maybe AccessControlList)
bucketLevelPermissions_accessControlList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BucketLevelPermissions' {Maybe AccessControlList
accessControlList :: Maybe AccessControlList
$sel:accessControlList:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe AccessControlList
accessControlList} -> Maybe AccessControlList
accessControlList) (\s :: BucketLevelPermissions
s@BucketLevelPermissions' {} Maybe AccessControlList
a -> BucketLevelPermissions
s {$sel:accessControlList:BucketLevelPermissions' :: Maybe AccessControlList
accessControlList = Maybe AccessControlList
a} :: BucketLevelPermissions)
bucketLevelPermissions_blockPublicAccess :: Lens.Lens' BucketLevelPermissions (Prelude.Maybe BlockPublicAccess)
bucketLevelPermissions_blockPublicAccess :: Lens' BucketLevelPermissions (Maybe BlockPublicAccess)
bucketLevelPermissions_blockPublicAccess = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BucketLevelPermissions' {Maybe BlockPublicAccess
blockPublicAccess :: Maybe BlockPublicAccess
$sel:blockPublicAccess:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe BlockPublicAccess
blockPublicAccess} -> Maybe BlockPublicAccess
blockPublicAccess) (\s :: BucketLevelPermissions
s@BucketLevelPermissions' {} Maybe BlockPublicAccess
a -> BucketLevelPermissions
s {$sel:blockPublicAccess:BucketLevelPermissions' :: Maybe BlockPublicAccess
blockPublicAccess = Maybe BlockPublicAccess
a} :: BucketLevelPermissions)
bucketLevelPermissions_bucketPolicy :: Lens.Lens' BucketLevelPermissions (Prelude.Maybe BucketPolicy)
bucketLevelPermissions_bucketPolicy :: Lens' BucketLevelPermissions (Maybe BucketPolicy)
bucketLevelPermissions_bucketPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BucketLevelPermissions' {Maybe BucketPolicy
bucketPolicy :: Maybe BucketPolicy
$sel:bucketPolicy:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe BucketPolicy
bucketPolicy} -> Maybe BucketPolicy
bucketPolicy) (\s :: BucketLevelPermissions
s@BucketLevelPermissions' {} Maybe BucketPolicy
a -> BucketLevelPermissions
s {$sel:bucketPolicy:BucketLevelPermissions' :: Maybe BucketPolicy
bucketPolicy = Maybe BucketPolicy
a} :: BucketLevelPermissions)
instance Data.FromJSON BucketLevelPermissions where
parseJSON :: Value -> Parser BucketLevelPermissions
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"BucketLevelPermissions"
( \Object
x ->
Maybe AccessControlList
-> Maybe BlockPublicAccess
-> Maybe BucketPolicy
-> BucketLevelPermissions
BucketLevelPermissions'
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
"accessControlList")
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
"blockPublicAccess")
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
"bucketPolicy")
)
instance Prelude.Hashable BucketLevelPermissions where
hashWithSalt :: Int -> BucketLevelPermissions -> Int
hashWithSalt Int
_salt BucketLevelPermissions' {Maybe AccessControlList
Maybe BlockPublicAccess
Maybe BucketPolicy
bucketPolicy :: Maybe BucketPolicy
blockPublicAccess :: Maybe BlockPublicAccess
accessControlList :: Maybe AccessControlList
$sel:bucketPolicy:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe BucketPolicy
$sel:blockPublicAccess:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe BlockPublicAccess
$sel:accessControlList:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe AccessControlList
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessControlList
accessControlList
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BlockPublicAccess
blockPublicAccess
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BucketPolicy
bucketPolicy
instance Prelude.NFData BucketLevelPermissions where
rnf :: BucketLevelPermissions -> ()
rnf BucketLevelPermissions' {Maybe AccessControlList
Maybe BlockPublicAccess
Maybe BucketPolicy
bucketPolicy :: Maybe BucketPolicy
blockPublicAccess :: Maybe BlockPublicAccess
accessControlList :: Maybe AccessControlList
$sel:bucketPolicy:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe BucketPolicy
$sel:blockPublicAccess:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe BlockPublicAccess
$sel:accessControlList:BucketLevelPermissions' :: BucketLevelPermissions -> Maybe AccessControlList
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessControlList
accessControlList
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BlockPublicAccess
blockPublicAccess
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BucketPolicy
bucketPolicy