{-# 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 #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.GuardDuty.Types.BucketLevelPermissions -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.GuardDuty.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.GuardDuty.Types.AccessControlList import Amazonka.GuardDuty.Types.BlockPublicAccess import Amazonka.GuardDuty.Types.BucketPolicy import qualified Amazonka.Prelude as Prelude -- | Contains information about the bucket level permissions for the S3 -- bucket. -- -- /See:/ 'newBucketLevelPermissions' smart constructor. data BucketLevelPermissions = BucketLevelPermissions' { -- | Contains information on how Access Control Policies are applied to the -- bucket. accessControlList :: Prelude.Maybe AccessControlList, -- | Contains information on which account level S3 Block Public Access -- settings are applied to the S3 bucket. blockPublicAccess :: Prelude.Maybe BlockPublicAccess, -- | Contains information on the bucket policies for the S3 bucket. bucketPolicy :: Prelude.Maybe BucketPolicy } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'BucketLevelPermissions' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'accessControlList', 'bucketLevelPermissions_accessControlList' - Contains information on how Access Control Policies are applied to the -- bucket. -- -- 'blockPublicAccess', 'bucketLevelPermissions_blockPublicAccess' - Contains information on which account level S3 Block Public Access -- settings are applied to the S3 bucket. -- -- 'bucketPolicy', 'bucketLevelPermissions_bucketPolicy' - Contains information on the bucket policies for the S3 bucket. newBucketLevelPermissions :: BucketLevelPermissions newBucketLevelPermissions = BucketLevelPermissions' { accessControlList = Prelude.Nothing, blockPublicAccess = Prelude.Nothing, bucketPolicy = Prelude.Nothing } -- | Contains information on how Access Control Policies are applied to the -- bucket. bucketLevelPermissions_accessControlList :: Lens.Lens' BucketLevelPermissions (Prelude.Maybe AccessControlList) bucketLevelPermissions_accessControlList = Lens.lens (\BucketLevelPermissions' {accessControlList} -> accessControlList) (\s@BucketLevelPermissions' {} a -> s {accessControlList = a} :: BucketLevelPermissions) -- | Contains information on which account level S3 Block Public Access -- settings are applied to the S3 bucket. bucketLevelPermissions_blockPublicAccess :: Lens.Lens' BucketLevelPermissions (Prelude.Maybe BlockPublicAccess) bucketLevelPermissions_blockPublicAccess = Lens.lens (\BucketLevelPermissions' {blockPublicAccess} -> blockPublicAccess) (\s@BucketLevelPermissions' {} a -> s {blockPublicAccess = a} :: BucketLevelPermissions) -- | Contains information on the bucket policies for the S3 bucket. bucketLevelPermissions_bucketPolicy :: Lens.Lens' BucketLevelPermissions (Prelude.Maybe BucketPolicy) bucketLevelPermissions_bucketPolicy = Lens.lens (\BucketLevelPermissions' {bucketPolicy} -> bucketPolicy) (\s@BucketLevelPermissions' {} a -> s {bucketPolicy = a} :: BucketLevelPermissions) instance Data.FromJSON BucketLevelPermissions where parseJSON = Data.withObject "BucketLevelPermissions" ( \x -> BucketLevelPermissions' Prelude.<$> (x Data..:? "accessControlList") Prelude.<*> (x Data..:? "blockPublicAccess") Prelude.<*> (x Data..:? "bucketPolicy") ) instance Prelude.Hashable BucketLevelPermissions where hashWithSalt _salt BucketLevelPermissions' {..} = _salt `Prelude.hashWithSalt` accessControlList `Prelude.hashWithSalt` blockPublicAccess `Prelude.hashWithSalt` bucketPolicy instance Prelude.NFData BucketLevelPermissions where rnf BucketLevelPermissions' {..} = Prelude.rnf accessControlList `Prelude.seq` Prelude.rnf blockPublicAccess `Prelude.seq` Prelude.rnf bucketPolicy