{-# 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.DataSourcesFreeTrial
-- 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.DataSourcesFreeTrial 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.DataSourceFreeTrial
import Amazonka.GuardDuty.Types.KubernetesDataSourceFreeTrial
import Amazonka.GuardDuty.Types.MalwareProtectionDataSourceFreeTrial
import qualified Amazonka.Prelude as Prelude

-- | Contains information about which data sources are enabled for the
-- GuardDuty member account.
--
-- /See:/ 'newDataSourcesFreeTrial' smart constructor.
data DataSourcesFreeTrial = DataSourcesFreeTrial'
  { -- | Describes whether any Amazon Web Services CloudTrail management event
    -- logs are enabled as data sources.
    DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
cloudTrail :: Prelude.Maybe DataSourceFreeTrial,
    -- | Describes whether any DNS logs are enabled as data sources.
    DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
dnsLogs :: Prelude.Maybe DataSourceFreeTrial,
    -- | Describes whether any VPC Flow logs are enabled as data sources.
    DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
flowLogs :: Prelude.Maybe DataSourceFreeTrial,
    -- | Describes whether any Kubernetes logs are enabled as data sources.
    DataSourcesFreeTrial -> Maybe KubernetesDataSourceFreeTrial
kubernetes :: Prelude.Maybe KubernetesDataSourceFreeTrial,
    -- | Describes whether Malware Protection is enabled as a data source.
    DataSourcesFreeTrial -> Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection :: Prelude.Maybe MalwareProtectionDataSourceFreeTrial,
    -- | Describes whether any S3 data event logs are enabled as data sources.
    DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
s3Logs :: Prelude.Maybe DataSourceFreeTrial
  }
  deriving (DataSourcesFreeTrial -> DataSourcesFreeTrial -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DataSourcesFreeTrial -> DataSourcesFreeTrial -> Bool
$c/= :: DataSourcesFreeTrial -> DataSourcesFreeTrial -> Bool
== :: DataSourcesFreeTrial -> DataSourcesFreeTrial -> Bool
$c== :: DataSourcesFreeTrial -> DataSourcesFreeTrial -> Bool
Prelude.Eq, ReadPrec [DataSourcesFreeTrial]
ReadPrec DataSourcesFreeTrial
Int -> ReadS DataSourcesFreeTrial
ReadS [DataSourcesFreeTrial]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DataSourcesFreeTrial]
$creadListPrec :: ReadPrec [DataSourcesFreeTrial]
readPrec :: ReadPrec DataSourcesFreeTrial
$creadPrec :: ReadPrec DataSourcesFreeTrial
readList :: ReadS [DataSourcesFreeTrial]
$creadList :: ReadS [DataSourcesFreeTrial]
readsPrec :: Int -> ReadS DataSourcesFreeTrial
$creadsPrec :: Int -> ReadS DataSourcesFreeTrial
Prelude.Read, Int -> DataSourcesFreeTrial -> ShowS
[DataSourcesFreeTrial] -> ShowS
DataSourcesFreeTrial -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DataSourcesFreeTrial] -> ShowS
$cshowList :: [DataSourcesFreeTrial] -> ShowS
show :: DataSourcesFreeTrial -> String
$cshow :: DataSourcesFreeTrial -> String
showsPrec :: Int -> DataSourcesFreeTrial -> ShowS
$cshowsPrec :: Int -> DataSourcesFreeTrial -> ShowS
Prelude.Show, forall x. Rep DataSourcesFreeTrial x -> DataSourcesFreeTrial
forall x. DataSourcesFreeTrial -> Rep DataSourcesFreeTrial x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DataSourcesFreeTrial x -> DataSourcesFreeTrial
$cfrom :: forall x. DataSourcesFreeTrial -> Rep DataSourcesFreeTrial x
Prelude.Generic)

-- |
-- Create a value of 'DataSourcesFreeTrial' 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:
--
-- 'cloudTrail', 'dataSourcesFreeTrial_cloudTrail' - Describes whether any Amazon Web Services CloudTrail management event
-- logs are enabled as data sources.
--
-- 'dnsLogs', 'dataSourcesFreeTrial_dnsLogs' - Describes whether any DNS logs are enabled as data sources.
--
-- 'flowLogs', 'dataSourcesFreeTrial_flowLogs' - Describes whether any VPC Flow logs are enabled as data sources.
--
-- 'kubernetes', 'dataSourcesFreeTrial_kubernetes' - Describes whether any Kubernetes logs are enabled as data sources.
--
-- 'malwareProtection', 'dataSourcesFreeTrial_malwareProtection' - Describes whether Malware Protection is enabled as a data source.
--
-- 's3Logs', 'dataSourcesFreeTrial_s3Logs' - Describes whether any S3 data event logs are enabled as data sources.
newDataSourcesFreeTrial ::
  DataSourcesFreeTrial
newDataSourcesFreeTrial :: DataSourcesFreeTrial
newDataSourcesFreeTrial =
  DataSourcesFreeTrial'
    { $sel:cloudTrail:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
cloudTrail = forall a. Maybe a
Prelude.Nothing,
      $sel:dnsLogs:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
dnsLogs = forall a. Maybe a
Prelude.Nothing,
      $sel:flowLogs:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
flowLogs = forall a. Maybe a
Prelude.Nothing,
      $sel:kubernetes:DataSourcesFreeTrial' :: Maybe KubernetesDataSourceFreeTrial
kubernetes = forall a. Maybe a
Prelude.Nothing,
      $sel:malwareProtection:DataSourcesFreeTrial' :: Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection = forall a. Maybe a
Prelude.Nothing,
      $sel:s3Logs:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
s3Logs = forall a. Maybe a
Prelude.Nothing
    }

-- | Describes whether any Amazon Web Services CloudTrail management event
-- logs are enabled as data sources.
dataSourcesFreeTrial_cloudTrail :: Lens.Lens' DataSourcesFreeTrial (Prelude.Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_cloudTrail :: Lens' DataSourcesFreeTrial (Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_cloudTrail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataSourcesFreeTrial' {Maybe DataSourceFreeTrial
cloudTrail :: Maybe DataSourceFreeTrial
$sel:cloudTrail:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
cloudTrail} -> Maybe DataSourceFreeTrial
cloudTrail) (\s :: DataSourcesFreeTrial
s@DataSourcesFreeTrial' {} Maybe DataSourceFreeTrial
a -> DataSourcesFreeTrial
s {$sel:cloudTrail:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
cloudTrail = Maybe DataSourceFreeTrial
a} :: DataSourcesFreeTrial)

-- | Describes whether any DNS logs are enabled as data sources.
dataSourcesFreeTrial_dnsLogs :: Lens.Lens' DataSourcesFreeTrial (Prelude.Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_dnsLogs :: Lens' DataSourcesFreeTrial (Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_dnsLogs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataSourcesFreeTrial' {Maybe DataSourceFreeTrial
dnsLogs :: Maybe DataSourceFreeTrial
$sel:dnsLogs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
dnsLogs} -> Maybe DataSourceFreeTrial
dnsLogs) (\s :: DataSourcesFreeTrial
s@DataSourcesFreeTrial' {} Maybe DataSourceFreeTrial
a -> DataSourcesFreeTrial
s {$sel:dnsLogs:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
dnsLogs = Maybe DataSourceFreeTrial
a} :: DataSourcesFreeTrial)

-- | Describes whether any VPC Flow logs are enabled as data sources.
dataSourcesFreeTrial_flowLogs :: Lens.Lens' DataSourcesFreeTrial (Prelude.Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_flowLogs :: Lens' DataSourcesFreeTrial (Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_flowLogs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataSourcesFreeTrial' {Maybe DataSourceFreeTrial
flowLogs :: Maybe DataSourceFreeTrial
$sel:flowLogs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
flowLogs} -> Maybe DataSourceFreeTrial
flowLogs) (\s :: DataSourcesFreeTrial
s@DataSourcesFreeTrial' {} Maybe DataSourceFreeTrial
a -> DataSourcesFreeTrial
s {$sel:flowLogs:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
flowLogs = Maybe DataSourceFreeTrial
a} :: DataSourcesFreeTrial)

-- | Describes whether any Kubernetes logs are enabled as data sources.
dataSourcesFreeTrial_kubernetes :: Lens.Lens' DataSourcesFreeTrial (Prelude.Maybe KubernetesDataSourceFreeTrial)
dataSourcesFreeTrial_kubernetes :: Lens' DataSourcesFreeTrial (Maybe KubernetesDataSourceFreeTrial)
dataSourcesFreeTrial_kubernetes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataSourcesFreeTrial' {Maybe KubernetesDataSourceFreeTrial
kubernetes :: Maybe KubernetesDataSourceFreeTrial
$sel:kubernetes:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe KubernetesDataSourceFreeTrial
kubernetes} -> Maybe KubernetesDataSourceFreeTrial
kubernetes) (\s :: DataSourcesFreeTrial
s@DataSourcesFreeTrial' {} Maybe KubernetesDataSourceFreeTrial
a -> DataSourcesFreeTrial
s {$sel:kubernetes:DataSourcesFreeTrial' :: Maybe KubernetesDataSourceFreeTrial
kubernetes = Maybe KubernetesDataSourceFreeTrial
a} :: DataSourcesFreeTrial)

-- | Describes whether Malware Protection is enabled as a data source.
dataSourcesFreeTrial_malwareProtection :: Lens.Lens' DataSourcesFreeTrial (Prelude.Maybe MalwareProtectionDataSourceFreeTrial)
dataSourcesFreeTrial_malwareProtection :: Lens'
  DataSourcesFreeTrial (Maybe MalwareProtectionDataSourceFreeTrial)
dataSourcesFreeTrial_malwareProtection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataSourcesFreeTrial' {Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection :: Maybe MalwareProtectionDataSourceFreeTrial
$sel:malwareProtection:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection} -> Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection) (\s :: DataSourcesFreeTrial
s@DataSourcesFreeTrial' {} Maybe MalwareProtectionDataSourceFreeTrial
a -> DataSourcesFreeTrial
s {$sel:malwareProtection:DataSourcesFreeTrial' :: Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection = Maybe MalwareProtectionDataSourceFreeTrial
a} :: DataSourcesFreeTrial)

-- | Describes whether any S3 data event logs are enabled as data sources.
dataSourcesFreeTrial_s3Logs :: Lens.Lens' DataSourcesFreeTrial (Prelude.Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_s3Logs :: Lens' DataSourcesFreeTrial (Maybe DataSourceFreeTrial)
dataSourcesFreeTrial_s3Logs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataSourcesFreeTrial' {Maybe DataSourceFreeTrial
s3Logs :: Maybe DataSourceFreeTrial
$sel:s3Logs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
s3Logs} -> Maybe DataSourceFreeTrial
s3Logs) (\s :: DataSourcesFreeTrial
s@DataSourcesFreeTrial' {} Maybe DataSourceFreeTrial
a -> DataSourcesFreeTrial
s {$sel:s3Logs:DataSourcesFreeTrial' :: Maybe DataSourceFreeTrial
s3Logs = Maybe DataSourceFreeTrial
a} :: DataSourcesFreeTrial)

instance Data.FromJSON DataSourcesFreeTrial where
  parseJSON :: Value -> Parser DataSourcesFreeTrial
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DataSourcesFreeTrial"
      ( \Object
x ->
          Maybe DataSourceFreeTrial
-> Maybe DataSourceFreeTrial
-> Maybe DataSourceFreeTrial
-> Maybe KubernetesDataSourceFreeTrial
-> Maybe MalwareProtectionDataSourceFreeTrial
-> Maybe DataSourceFreeTrial
-> DataSourcesFreeTrial
DataSourcesFreeTrial'
            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
"cloudTrail")
            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
"dnsLogs")
            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
"flowLogs")
            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
"kubernetes")
            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
"malwareProtection")
            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
"s3Logs")
      )

instance Prelude.Hashable DataSourcesFreeTrial where
  hashWithSalt :: Int -> DataSourcesFreeTrial -> Int
hashWithSalt Int
_salt DataSourcesFreeTrial' {Maybe DataSourceFreeTrial
Maybe KubernetesDataSourceFreeTrial
Maybe MalwareProtectionDataSourceFreeTrial
s3Logs :: Maybe DataSourceFreeTrial
malwareProtection :: Maybe MalwareProtectionDataSourceFreeTrial
kubernetes :: Maybe KubernetesDataSourceFreeTrial
flowLogs :: Maybe DataSourceFreeTrial
dnsLogs :: Maybe DataSourceFreeTrial
cloudTrail :: Maybe DataSourceFreeTrial
$sel:s3Logs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
$sel:malwareProtection:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe MalwareProtectionDataSourceFreeTrial
$sel:kubernetes:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe KubernetesDataSourceFreeTrial
$sel:flowLogs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
$sel:dnsLogs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
$sel:cloudTrail:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataSourceFreeTrial
cloudTrail
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataSourceFreeTrial
dnsLogs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataSourceFreeTrial
flowLogs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KubernetesDataSourceFreeTrial
kubernetes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataSourceFreeTrial
s3Logs

instance Prelude.NFData DataSourcesFreeTrial where
  rnf :: DataSourcesFreeTrial -> ()
rnf DataSourcesFreeTrial' {Maybe DataSourceFreeTrial
Maybe KubernetesDataSourceFreeTrial
Maybe MalwareProtectionDataSourceFreeTrial
s3Logs :: Maybe DataSourceFreeTrial
malwareProtection :: Maybe MalwareProtectionDataSourceFreeTrial
kubernetes :: Maybe KubernetesDataSourceFreeTrial
flowLogs :: Maybe DataSourceFreeTrial
dnsLogs :: Maybe DataSourceFreeTrial
cloudTrail :: Maybe DataSourceFreeTrial
$sel:s3Logs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
$sel:malwareProtection:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe MalwareProtectionDataSourceFreeTrial
$sel:kubernetes:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe KubernetesDataSourceFreeTrial
$sel:flowLogs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
$sel:dnsLogs:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
$sel:cloudTrail:DataSourcesFreeTrial' :: DataSourcesFreeTrial -> Maybe DataSourceFreeTrial
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DataSourceFreeTrial
cloudTrail
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataSourceFreeTrial
dnsLogs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataSourceFreeTrial
flowLogs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KubernetesDataSourceFreeTrial
kubernetes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MalwareProtectionDataSourceFreeTrial
malwareProtection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataSourceFreeTrial
s3Logs