{-# 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.MacieV2.Types.BucketStatisticsBySensitivity
-- 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.MacieV2.Types.BucketStatisticsBySensitivity 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.SensitivityAggregations
import qualified Amazonka.Prelude as Prelude

-- | Provides aggregated statistical data for sensitive data discovery
-- metrics that apply to S3 buckets, grouped by bucket sensitivity score
-- (sensitivityScore). If automated sensitive data discovery is currently
-- disabled for your account, the value for each metric is 0.
--
-- /See:/ 'newBucketStatisticsBySensitivity' smart constructor.
data BucketStatisticsBySensitivity = BucketStatisticsBySensitivity'
  { -- | The aggregated statistical data for all buckets that have a sensitivity
    -- score of -1.
    BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
classificationError :: Prelude.Maybe SensitivityAggregations,
    -- | The aggregated statistical data for all buckets that have a sensitivity
    -- score of 50.
    BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
notClassified :: Prelude.Maybe SensitivityAggregations,
    -- | The aggregated statistical data for all buckets that have a sensitivity
    -- score of 0-49.
    BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
notSensitive :: Prelude.Maybe SensitivityAggregations,
    -- | The aggregated statistical data for all buckets that have a sensitivity
    -- score of 51-100.
    BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
sensitive :: Prelude.Maybe SensitivityAggregations
  }
  deriving (BucketStatisticsBySensitivity
-> BucketStatisticsBySensitivity -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BucketStatisticsBySensitivity
-> BucketStatisticsBySensitivity -> Bool
$c/= :: BucketStatisticsBySensitivity
-> BucketStatisticsBySensitivity -> Bool
== :: BucketStatisticsBySensitivity
-> BucketStatisticsBySensitivity -> Bool
$c== :: BucketStatisticsBySensitivity
-> BucketStatisticsBySensitivity -> Bool
Prelude.Eq, ReadPrec [BucketStatisticsBySensitivity]
ReadPrec BucketStatisticsBySensitivity
Int -> ReadS BucketStatisticsBySensitivity
ReadS [BucketStatisticsBySensitivity]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BucketStatisticsBySensitivity]
$creadListPrec :: ReadPrec [BucketStatisticsBySensitivity]
readPrec :: ReadPrec BucketStatisticsBySensitivity
$creadPrec :: ReadPrec BucketStatisticsBySensitivity
readList :: ReadS [BucketStatisticsBySensitivity]
$creadList :: ReadS [BucketStatisticsBySensitivity]
readsPrec :: Int -> ReadS BucketStatisticsBySensitivity
$creadsPrec :: Int -> ReadS BucketStatisticsBySensitivity
Prelude.Read, Int -> BucketStatisticsBySensitivity -> ShowS
[BucketStatisticsBySensitivity] -> ShowS
BucketStatisticsBySensitivity -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BucketStatisticsBySensitivity] -> ShowS
$cshowList :: [BucketStatisticsBySensitivity] -> ShowS
show :: BucketStatisticsBySensitivity -> String
$cshow :: BucketStatisticsBySensitivity -> String
showsPrec :: Int -> BucketStatisticsBySensitivity -> ShowS
$cshowsPrec :: Int -> BucketStatisticsBySensitivity -> ShowS
Prelude.Show, forall x.
Rep BucketStatisticsBySensitivity x
-> BucketStatisticsBySensitivity
forall x.
BucketStatisticsBySensitivity
-> Rep BucketStatisticsBySensitivity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep BucketStatisticsBySensitivity x
-> BucketStatisticsBySensitivity
$cfrom :: forall x.
BucketStatisticsBySensitivity
-> Rep BucketStatisticsBySensitivity x
Prelude.Generic)

-- |
-- Create a value of 'BucketStatisticsBySensitivity' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'classificationError', 'bucketStatisticsBySensitivity_classificationError' - The aggregated statistical data for all buckets that have a sensitivity
-- score of -1.
--
-- 'notClassified', 'bucketStatisticsBySensitivity_notClassified' - The aggregated statistical data for all buckets that have a sensitivity
-- score of 50.
--
-- 'notSensitive', 'bucketStatisticsBySensitivity_notSensitive' - The aggregated statistical data for all buckets that have a sensitivity
-- score of 0-49.
--
-- 'sensitive', 'bucketStatisticsBySensitivity_sensitive' - The aggregated statistical data for all buckets that have a sensitivity
-- score of 51-100.
newBucketStatisticsBySensitivity ::
  BucketStatisticsBySensitivity
newBucketStatisticsBySensitivity :: BucketStatisticsBySensitivity
newBucketStatisticsBySensitivity =
  BucketStatisticsBySensitivity'
    { $sel:classificationError:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
classificationError =
        forall a. Maybe a
Prelude.Nothing,
      $sel:notClassified:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
notClassified = forall a. Maybe a
Prelude.Nothing,
      $sel:notSensitive:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
notSensitive = forall a. Maybe a
Prelude.Nothing,
      $sel:sensitive:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
sensitive = forall a. Maybe a
Prelude.Nothing
    }

-- | The aggregated statistical data for all buckets that have a sensitivity
-- score of -1.
bucketStatisticsBySensitivity_classificationError :: Lens.Lens' BucketStatisticsBySensitivity (Prelude.Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_classificationError :: Lens' BucketStatisticsBySensitivity (Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_classificationError = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BucketStatisticsBySensitivity' {Maybe SensitivityAggregations
classificationError :: Maybe SensitivityAggregations
$sel:classificationError:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
classificationError} -> Maybe SensitivityAggregations
classificationError) (\s :: BucketStatisticsBySensitivity
s@BucketStatisticsBySensitivity' {} Maybe SensitivityAggregations
a -> BucketStatisticsBySensitivity
s {$sel:classificationError:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
classificationError = Maybe SensitivityAggregations
a} :: BucketStatisticsBySensitivity)

-- | The aggregated statistical data for all buckets that have a sensitivity
-- score of 50.
bucketStatisticsBySensitivity_notClassified :: Lens.Lens' BucketStatisticsBySensitivity (Prelude.Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_notClassified :: Lens' BucketStatisticsBySensitivity (Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_notClassified = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BucketStatisticsBySensitivity' {Maybe SensitivityAggregations
notClassified :: Maybe SensitivityAggregations
$sel:notClassified:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
notClassified} -> Maybe SensitivityAggregations
notClassified) (\s :: BucketStatisticsBySensitivity
s@BucketStatisticsBySensitivity' {} Maybe SensitivityAggregations
a -> BucketStatisticsBySensitivity
s {$sel:notClassified:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
notClassified = Maybe SensitivityAggregations
a} :: BucketStatisticsBySensitivity)

-- | The aggregated statistical data for all buckets that have a sensitivity
-- score of 0-49.
bucketStatisticsBySensitivity_notSensitive :: Lens.Lens' BucketStatisticsBySensitivity (Prelude.Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_notSensitive :: Lens' BucketStatisticsBySensitivity (Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_notSensitive = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BucketStatisticsBySensitivity' {Maybe SensitivityAggregations
notSensitive :: Maybe SensitivityAggregations
$sel:notSensitive:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
notSensitive} -> Maybe SensitivityAggregations
notSensitive) (\s :: BucketStatisticsBySensitivity
s@BucketStatisticsBySensitivity' {} Maybe SensitivityAggregations
a -> BucketStatisticsBySensitivity
s {$sel:notSensitive:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
notSensitive = Maybe SensitivityAggregations
a} :: BucketStatisticsBySensitivity)

-- | The aggregated statistical data for all buckets that have a sensitivity
-- score of 51-100.
bucketStatisticsBySensitivity_sensitive :: Lens.Lens' BucketStatisticsBySensitivity (Prelude.Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_sensitive :: Lens' BucketStatisticsBySensitivity (Maybe SensitivityAggregations)
bucketStatisticsBySensitivity_sensitive = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BucketStatisticsBySensitivity' {Maybe SensitivityAggregations
sensitive :: Maybe SensitivityAggregations
$sel:sensitive:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
sensitive} -> Maybe SensitivityAggregations
sensitive) (\s :: BucketStatisticsBySensitivity
s@BucketStatisticsBySensitivity' {} Maybe SensitivityAggregations
a -> BucketStatisticsBySensitivity
s {$sel:sensitive:BucketStatisticsBySensitivity' :: Maybe SensitivityAggregations
sensitive = Maybe SensitivityAggregations
a} :: BucketStatisticsBySensitivity)

instance Data.FromJSON BucketStatisticsBySensitivity where
  parseJSON :: Value -> Parser BucketStatisticsBySensitivity
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"BucketStatisticsBySensitivity"
      ( \Object
x ->
          Maybe SensitivityAggregations
-> Maybe SensitivityAggregations
-> Maybe SensitivityAggregations
-> Maybe SensitivityAggregations
-> BucketStatisticsBySensitivity
BucketStatisticsBySensitivity'
            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
"classificationError")
            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
"notClassified")
            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
"notSensitive")
            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
"sensitive")
      )

instance
  Prelude.Hashable
    BucketStatisticsBySensitivity
  where
  hashWithSalt :: Int -> BucketStatisticsBySensitivity -> Int
hashWithSalt Int
_salt BucketStatisticsBySensitivity' {Maybe SensitivityAggregations
sensitive :: Maybe SensitivityAggregations
notSensitive :: Maybe SensitivityAggregations
notClassified :: Maybe SensitivityAggregations
classificationError :: Maybe SensitivityAggregations
$sel:sensitive:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
$sel:notSensitive:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
$sel:notClassified:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
$sel:classificationError:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SensitivityAggregations
classificationError
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SensitivityAggregations
notClassified
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SensitivityAggregations
notSensitive
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SensitivityAggregations
sensitive

instance Prelude.NFData BucketStatisticsBySensitivity where
  rnf :: BucketStatisticsBySensitivity -> ()
rnf BucketStatisticsBySensitivity' {Maybe SensitivityAggregations
sensitive :: Maybe SensitivityAggregations
notSensitive :: Maybe SensitivityAggregations
notClassified :: Maybe SensitivityAggregations
classificationError :: Maybe SensitivityAggregations
$sel:sensitive:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
$sel:notSensitive:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
$sel:notClassified:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
$sel:classificationError:BucketStatisticsBySensitivity' :: BucketStatisticsBySensitivity -> Maybe SensitivityAggregations
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe SensitivityAggregations
classificationError
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SensitivityAggregations
notClassified
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SensitivityAggregations
notSensitive
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SensitivityAggregations
sensitive