{-# 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.GuardDuty.Types.Resource 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.AccessKeyDetails
import Amazonka.GuardDuty.Types.Container
import Amazonka.GuardDuty.Types.EbsVolumeDetails
import Amazonka.GuardDuty.Types.EcsClusterDetails
import Amazonka.GuardDuty.Types.EksClusterDetails
import Amazonka.GuardDuty.Types.InstanceDetails
import Amazonka.GuardDuty.Types.KubernetesDetails
import Amazonka.GuardDuty.Types.S3BucketDetail
import qualified Amazonka.Prelude as Prelude
data Resource = Resource'
{
Resource -> Maybe AccessKeyDetails
accessKeyDetails :: Prelude.Maybe AccessKeyDetails,
Resource -> Maybe Container
containerDetails :: Prelude.Maybe Container,
Resource -> Maybe EbsVolumeDetails
ebsVolumeDetails :: Prelude.Maybe EbsVolumeDetails,
Resource -> Maybe EcsClusterDetails
ecsClusterDetails :: Prelude.Maybe EcsClusterDetails,
Resource -> Maybe EksClusterDetails
eksClusterDetails :: Prelude.Maybe EksClusterDetails,
Resource -> Maybe InstanceDetails
instanceDetails :: Prelude.Maybe InstanceDetails,
Resource -> Maybe KubernetesDetails
kubernetesDetails :: Prelude.Maybe KubernetesDetails,
Resource -> Maybe Text
resourceType :: Prelude.Maybe Prelude.Text,
Resource -> Maybe [S3BucketDetail]
s3BucketDetails :: Prelude.Maybe [S3BucketDetail]
}
deriving (Resource -> Resource -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Resource -> Resource -> Bool
$c/= :: Resource -> Resource -> Bool
== :: Resource -> Resource -> Bool
$c== :: Resource -> Resource -> Bool
Prelude.Eq, ReadPrec [Resource]
ReadPrec Resource
Int -> ReadS Resource
ReadS [Resource]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Resource]
$creadListPrec :: ReadPrec [Resource]
readPrec :: ReadPrec Resource
$creadPrec :: ReadPrec Resource
readList :: ReadS [Resource]
$creadList :: ReadS [Resource]
readsPrec :: Int -> ReadS Resource
$creadsPrec :: Int -> ReadS Resource
Prelude.Read, Int -> Resource -> ShowS
[Resource] -> ShowS
Resource -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Resource] -> ShowS
$cshowList :: [Resource] -> ShowS
show :: Resource -> String
$cshow :: Resource -> String
showsPrec :: Int -> Resource -> ShowS
$cshowsPrec :: Int -> Resource -> ShowS
Prelude.Show, forall x. Rep Resource x -> Resource
forall x. Resource -> Rep Resource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Resource x -> Resource
$cfrom :: forall x. Resource -> Rep Resource x
Prelude.Generic)
newResource ::
Resource
newResource :: Resource
newResource =
Resource'
{ $sel:accessKeyDetails:Resource' :: Maybe AccessKeyDetails
accessKeyDetails = forall a. Maybe a
Prelude.Nothing,
$sel:containerDetails:Resource' :: Maybe Container
containerDetails = forall a. Maybe a
Prelude.Nothing,
$sel:ebsVolumeDetails:Resource' :: Maybe EbsVolumeDetails
ebsVolumeDetails = forall a. Maybe a
Prelude.Nothing,
$sel:ecsClusterDetails:Resource' :: Maybe EcsClusterDetails
ecsClusterDetails = forall a. Maybe a
Prelude.Nothing,
$sel:eksClusterDetails:Resource' :: Maybe EksClusterDetails
eksClusterDetails = forall a. Maybe a
Prelude.Nothing,
$sel:instanceDetails:Resource' :: Maybe InstanceDetails
instanceDetails = forall a. Maybe a
Prelude.Nothing,
$sel:kubernetesDetails:Resource' :: Maybe KubernetesDetails
kubernetesDetails = forall a. Maybe a
Prelude.Nothing,
$sel:resourceType:Resource' :: Maybe Text
resourceType = forall a. Maybe a
Prelude.Nothing,
$sel:s3BucketDetails:Resource' :: Maybe [S3BucketDetail]
s3BucketDetails = forall a. Maybe a
Prelude.Nothing
}
resource_accessKeyDetails :: Lens.Lens' Resource (Prelude.Maybe AccessKeyDetails)
resource_accessKeyDetails :: Lens' Resource (Maybe AccessKeyDetails)
resource_accessKeyDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe AccessKeyDetails
accessKeyDetails :: Maybe AccessKeyDetails
$sel:accessKeyDetails:Resource' :: Resource -> Maybe AccessKeyDetails
accessKeyDetails} -> Maybe AccessKeyDetails
accessKeyDetails) (\s :: Resource
s@Resource' {} Maybe AccessKeyDetails
a -> Resource
s {$sel:accessKeyDetails:Resource' :: Maybe AccessKeyDetails
accessKeyDetails = Maybe AccessKeyDetails
a} :: Resource)
resource_containerDetails :: Lens.Lens' Resource (Prelude.Maybe Container)
resource_containerDetails :: Lens' Resource (Maybe Container)
resource_containerDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe Container
containerDetails :: Maybe Container
$sel:containerDetails:Resource' :: Resource -> Maybe Container
containerDetails} -> Maybe Container
containerDetails) (\s :: Resource
s@Resource' {} Maybe Container
a -> Resource
s {$sel:containerDetails:Resource' :: Maybe Container
containerDetails = Maybe Container
a} :: Resource)
resource_ebsVolumeDetails :: Lens.Lens' Resource (Prelude.Maybe EbsVolumeDetails)
resource_ebsVolumeDetails :: Lens' Resource (Maybe EbsVolumeDetails)
resource_ebsVolumeDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe EbsVolumeDetails
ebsVolumeDetails :: Maybe EbsVolumeDetails
$sel:ebsVolumeDetails:Resource' :: Resource -> Maybe EbsVolumeDetails
ebsVolumeDetails} -> Maybe EbsVolumeDetails
ebsVolumeDetails) (\s :: Resource
s@Resource' {} Maybe EbsVolumeDetails
a -> Resource
s {$sel:ebsVolumeDetails:Resource' :: Maybe EbsVolumeDetails
ebsVolumeDetails = Maybe EbsVolumeDetails
a} :: Resource)
resource_ecsClusterDetails :: Lens.Lens' Resource (Prelude.Maybe EcsClusterDetails)
resource_ecsClusterDetails :: Lens' Resource (Maybe EcsClusterDetails)
resource_ecsClusterDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe EcsClusterDetails
ecsClusterDetails :: Maybe EcsClusterDetails
$sel:ecsClusterDetails:Resource' :: Resource -> Maybe EcsClusterDetails
ecsClusterDetails} -> Maybe EcsClusterDetails
ecsClusterDetails) (\s :: Resource
s@Resource' {} Maybe EcsClusterDetails
a -> Resource
s {$sel:ecsClusterDetails:Resource' :: Maybe EcsClusterDetails
ecsClusterDetails = Maybe EcsClusterDetails
a} :: Resource)
resource_eksClusterDetails :: Lens.Lens' Resource (Prelude.Maybe EksClusterDetails)
resource_eksClusterDetails :: Lens' Resource (Maybe EksClusterDetails)
resource_eksClusterDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe EksClusterDetails
eksClusterDetails :: Maybe EksClusterDetails
$sel:eksClusterDetails:Resource' :: Resource -> Maybe EksClusterDetails
eksClusterDetails} -> Maybe EksClusterDetails
eksClusterDetails) (\s :: Resource
s@Resource' {} Maybe EksClusterDetails
a -> Resource
s {$sel:eksClusterDetails:Resource' :: Maybe EksClusterDetails
eksClusterDetails = Maybe EksClusterDetails
a} :: Resource)
resource_instanceDetails :: Lens.Lens' Resource (Prelude.Maybe InstanceDetails)
resource_instanceDetails :: Lens' Resource (Maybe InstanceDetails)
resource_instanceDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe InstanceDetails
instanceDetails :: Maybe InstanceDetails
$sel:instanceDetails:Resource' :: Resource -> Maybe InstanceDetails
instanceDetails} -> Maybe InstanceDetails
instanceDetails) (\s :: Resource
s@Resource' {} Maybe InstanceDetails
a -> Resource
s {$sel:instanceDetails:Resource' :: Maybe InstanceDetails
instanceDetails = Maybe InstanceDetails
a} :: Resource)
resource_kubernetesDetails :: Lens.Lens' Resource (Prelude.Maybe KubernetesDetails)
resource_kubernetesDetails :: Lens' Resource (Maybe KubernetesDetails)
resource_kubernetesDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe KubernetesDetails
kubernetesDetails :: Maybe KubernetesDetails
$sel:kubernetesDetails:Resource' :: Resource -> Maybe KubernetesDetails
kubernetesDetails} -> Maybe KubernetesDetails
kubernetesDetails) (\s :: Resource
s@Resource' {} Maybe KubernetesDetails
a -> Resource
s {$sel:kubernetesDetails:Resource' :: Maybe KubernetesDetails
kubernetesDetails = Maybe KubernetesDetails
a} :: Resource)
resource_resourceType :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text)
resource_resourceType :: Lens' Resource (Maybe Text)
resource_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe Text
resourceType :: Maybe Text
$sel:resourceType:Resource' :: Resource -> Maybe Text
resourceType} -> Maybe Text
resourceType) (\s :: Resource
s@Resource' {} Maybe Text
a -> Resource
s {$sel:resourceType:Resource' :: Maybe Text
resourceType = Maybe Text
a} :: Resource)
resource_s3BucketDetails :: Lens.Lens' Resource (Prelude.Maybe [S3BucketDetail])
resource_s3BucketDetails :: Lens' Resource (Maybe [S3BucketDetail])
resource_s3BucketDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe [S3BucketDetail]
s3BucketDetails :: Maybe [S3BucketDetail]
$sel:s3BucketDetails:Resource' :: Resource -> Maybe [S3BucketDetail]
s3BucketDetails} -> Maybe [S3BucketDetail]
s3BucketDetails) (\s :: Resource
s@Resource' {} Maybe [S3BucketDetail]
a -> Resource
s {$sel:s3BucketDetails:Resource' :: Maybe [S3BucketDetail]
s3BucketDetails = Maybe [S3BucketDetail]
a} :: Resource) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
instance Data.FromJSON Resource where
parseJSON :: Value -> Parser Resource
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Resource"
( \Object
x ->
Maybe AccessKeyDetails
-> Maybe Container
-> Maybe EbsVolumeDetails
-> Maybe EcsClusterDetails
-> Maybe EksClusterDetails
-> Maybe InstanceDetails
-> Maybe KubernetesDetails
-> Maybe Text
-> Maybe [S3BucketDetail]
-> Resource
Resource'
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
"accessKeyDetails")
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
"containerDetails")
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
"ebsVolumeDetails")
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
"ecsClusterDetails")
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
"eksClusterDetails")
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
"instanceDetails")
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
"kubernetesDetails")
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
"resourceType")
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
"s3BucketDetails"
forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
)
)
instance Prelude.Hashable Resource where
hashWithSalt :: Int -> Resource -> Int
hashWithSalt Int
_salt Resource' {Maybe [S3BucketDetail]
Maybe Text
Maybe AccessKeyDetails
Maybe InstanceDetails
Maybe EksClusterDetails
Maybe EbsVolumeDetails
Maybe Container
Maybe KubernetesDetails
Maybe EcsClusterDetails
s3BucketDetails :: Maybe [S3BucketDetail]
resourceType :: Maybe Text
kubernetesDetails :: Maybe KubernetesDetails
instanceDetails :: Maybe InstanceDetails
eksClusterDetails :: Maybe EksClusterDetails
ecsClusterDetails :: Maybe EcsClusterDetails
ebsVolumeDetails :: Maybe EbsVolumeDetails
containerDetails :: Maybe Container
accessKeyDetails :: Maybe AccessKeyDetails
$sel:s3BucketDetails:Resource' :: Resource -> Maybe [S3BucketDetail]
$sel:resourceType:Resource' :: Resource -> Maybe Text
$sel:kubernetesDetails:Resource' :: Resource -> Maybe KubernetesDetails
$sel:instanceDetails:Resource' :: Resource -> Maybe InstanceDetails
$sel:eksClusterDetails:Resource' :: Resource -> Maybe EksClusterDetails
$sel:ecsClusterDetails:Resource' :: Resource -> Maybe EcsClusterDetails
$sel:ebsVolumeDetails:Resource' :: Resource -> Maybe EbsVolumeDetails
$sel:containerDetails:Resource' :: Resource -> Maybe Container
$sel:accessKeyDetails:Resource' :: Resource -> Maybe AccessKeyDetails
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessKeyDetails
accessKeyDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Container
containerDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EbsVolumeDetails
ebsVolumeDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EcsClusterDetails
ecsClusterDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EksClusterDetails
eksClusterDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceDetails
instanceDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KubernetesDetails
kubernetesDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceType
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [S3BucketDetail]
s3BucketDetails
instance Prelude.NFData Resource where
rnf :: Resource -> ()
rnf Resource' {Maybe [S3BucketDetail]
Maybe Text
Maybe AccessKeyDetails
Maybe InstanceDetails
Maybe EksClusterDetails
Maybe EbsVolumeDetails
Maybe Container
Maybe KubernetesDetails
Maybe EcsClusterDetails
s3BucketDetails :: Maybe [S3BucketDetail]
resourceType :: Maybe Text
kubernetesDetails :: Maybe KubernetesDetails
instanceDetails :: Maybe InstanceDetails
eksClusterDetails :: Maybe EksClusterDetails
ecsClusterDetails :: Maybe EcsClusterDetails
ebsVolumeDetails :: Maybe EbsVolumeDetails
containerDetails :: Maybe Container
accessKeyDetails :: Maybe AccessKeyDetails
$sel:s3BucketDetails:Resource' :: Resource -> Maybe [S3BucketDetail]
$sel:resourceType:Resource' :: Resource -> Maybe Text
$sel:kubernetesDetails:Resource' :: Resource -> Maybe KubernetesDetails
$sel:instanceDetails:Resource' :: Resource -> Maybe InstanceDetails
$sel:eksClusterDetails:Resource' :: Resource -> Maybe EksClusterDetails
$sel:ecsClusterDetails:Resource' :: Resource -> Maybe EcsClusterDetails
$sel:ebsVolumeDetails:Resource' :: Resource -> Maybe EbsVolumeDetails
$sel:containerDetails:Resource' :: Resource -> Maybe Container
$sel:accessKeyDetails:Resource' :: Resource -> Maybe AccessKeyDetails
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessKeyDetails
accessKeyDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Container
containerDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EbsVolumeDetails
ebsVolumeDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EcsClusterDetails
ecsClusterDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EksClusterDetails
eksClusterDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceDetails
instanceDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KubernetesDetails
kubernetesDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceType
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [S3BucketDetail]
s3BucketDetails