packages feed

amazonka-macie-2.0: gen/Amazonka/Macie/Types/ClassificationType.hs

{-# 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.Macie.Types.ClassificationType
-- 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.Macie.Types.ClassificationType where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Macie.Types.S3ContinuousClassificationType
import Amazonka.Macie.Types.S3OneTimeClassificationType
import qualified Amazonka.Prelude as Prelude

-- | (Discontinued) The classification type that Amazon Macie Classic applies
-- to the associated S3 resources.
--
-- /See:/ 'newClassificationType' smart constructor.
data ClassificationType = ClassificationType'
  { -- | (Discontinued) A one-time classification of all of the existing objects
    -- in a specified S3 bucket.
    oneTime :: S3OneTimeClassificationType,
    -- | (Discontinued) A continuous classification of the objects that are added
    -- to a specified S3 bucket. Amazon Macie Classic begins performing
    -- continuous classification after a bucket is successfully associated with
    -- Macie Classic.
    continuous :: S3ContinuousClassificationType
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ClassificationType' 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:
--
-- 'oneTime', 'classificationType_oneTime' - (Discontinued) A one-time classification of all of the existing objects
-- in a specified S3 bucket.
--
-- 'continuous', 'classificationType_continuous' - (Discontinued) A continuous classification of the objects that are added
-- to a specified S3 bucket. Amazon Macie Classic begins performing
-- continuous classification after a bucket is successfully associated with
-- Macie Classic.
newClassificationType ::
  -- | 'oneTime'
  S3OneTimeClassificationType ->
  -- | 'continuous'
  S3ContinuousClassificationType ->
  ClassificationType
newClassificationType pOneTime_ pContinuous_ =
  ClassificationType'
    { oneTime = pOneTime_,
      continuous = pContinuous_
    }

-- | (Discontinued) A one-time classification of all of the existing objects
-- in a specified S3 bucket.
classificationType_oneTime :: Lens.Lens' ClassificationType S3OneTimeClassificationType
classificationType_oneTime = Lens.lens (\ClassificationType' {oneTime} -> oneTime) (\s@ClassificationType' {} a -> s {oneTime = a} :: ClassificationType)

-- | (Discontinued) A continuous classification of the objects that are added
-- to a specified S3 bucket. Amazon Macie Classic begins performing
-- continuous classification after a bucket is successfully associated with
-- Macie Classic.
classificationType_continuous :: Lens.Lens' ClassificationType S3ContinuousClassificationType
classificationType_continuous = Lens.lens (\ClassificationType' {continuous} -> continuous) (\s@ClassificationType' {} a -> s {continuous = a} :: ClassificationType)

instance Data.FromJSON ClassificationType where
  parseJSON =
    Data.withObject
      "ClassificationType"
      ( \x ->
          ClassificationType'
            Prelude.<$> (x Data..: "oneTime")
            Prelude.<*> (x Data..: "continuous")
      )

instance Prelude.Hashable ClassificationType where
  hashWithSalt _salt ClassificationType' {..} =
    _salt
      `Prelude.hashWithSalt` oneTime
      `Prelude.hashWithSalt` continuous

instance Prelude.NFData ClassificationType where
  rnf ClassificationType' {..} =
    Prelude.rnf oneTime
      `Prelude.seq` Prelude.rnf continuous

instance Data.ToJSON ClassificationType where
  toJSON ClassificationType' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just ("oneTime" Data..= oneTime),
            Prelude.Just ("continuous" Data..= continuous)
          ]
      )