{-# 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.AuditManager.Types.Assessment where
import Amazonka.AuditManager.Types.AWSAccount
import Amazonka.AuditManager.Types.AssessmentFramework
import Amazonka.AuditManager.Types.AssessmentMetadata
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
data Assessment = Assessment'
{
Assessment -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
Assessment -> Maybe AWSAccount
awsAccount :: Prelude.Maybe AWSAccount,
Assessment -> Maybe AssessmentFramework
framework :: Prelude.Maybe AssessmentFramework,
Assessment -> Maybe AssessmentMetadata
metadata :: Prelude.Maybe AssessmentMetadata,
Assessment -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
}
deriving (Assessment -> Assessment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Assessment -> Assessment -> Bool
$c/= :: Assessment -> Assessment -> Bool
== :: Assessment -> Assessment -> Bool
$c== :: Assessment -> Assessment -> Bool
Prelude.Eq, ReadPrec [Assessment]
ReadPrec Assessment
Int -> ReadS Assessment
ReadS [Assessment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Assessment]
$creadListPrec :: ReadPrec [Assessment]
readPrec :: ReadPrec Assessment
$creadPrec :: ReadPrec Assessment
readList :: ReadS [Assessment]
$creadList :: ReadS [Assessment]
readsPrec :: Int -> ReadS Assessment
$creadsPrec :: Int -> ReadS Assessment
Prelude.Read, Int -> Assessment -> ShowS
[Assessment] -> ShowS
Assessment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Assessment] -> ShowS
$cshowList :: [Assessment] -> ShowS
show :: Assessment -> String
$cshow :: Assessment -> String
showsPrec :: Int -> Assessment -> ShowS
$cshowsPrec :: Int -> Assessment -> ShowS
Prelude.Show, forall x. Rep Assessment x -> Assessment
forall x. Assessment -> Rep Assessment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Assessment x -> Assessment
$cfrom :: forall x. Assessment -> Rep Assessment x
Prelude.Generic)
newAssessment ::
Assessment
newAssessment :: Assessment
newAssessment =
Assessment'
{ $sel:arn:Assessment' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
$sel:awsAccount:Assessment' :: Maybe AWSAccount
awsAccount = forall a. Maybe a
Prelude.Nothing,
$sel:framework:Assessment' :: Maybe AssessmentFramework
framework = forall a. Maybe a
Prelude.Nothing,
$sel:metadata:Assessment' :: Maybe AssessmentMetadata
metadata = forall a. Maybe a
Prelude.Nothing,
$sel:tags:Assessment' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing
}
assessment_arn :: Lens.Lens' Assessment (Prelude.Maybe Prelude.Text)
assessment_arn :: Lens' Assessment (Maybe Text)
assessment_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Assessment' {Maybe Text
arn :: Maybe Text
$sel:arn:Assessment' :: Assessment -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Assessment
s@Assessment' {} Maybe Text
a -> Assessment
s {$sel:arn:Assessment' :: Maybe Text
arn = Maybe Text
a} :: Assessment)
assessment_awsAccount :: Lens.Lens' Assessment (Prelude.Maybe AWSAccount)
assessment_awsAccount :: Lens' Assessment (Maybe AWSAccount)
assessment_awsAccount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Assessment' {Maybe AWSAccount
awsAccount :: Maybe AWSAccount
$sel:awsAccount:Assessment' :: Assessment -> Maybe AWSAccount
awsAccount} -> Maybe AWSAccount
awsAccount) (\s :: Assessment
s@Assessment' {} Maybe AWSAccount
a -> Assessment
s {$sel:awsAccount:Assessment' :: Maybe AWSAccount
awsAccount = Maybe AWSAccount
a} :: Assessment)
assessment_framework :: Lens.Lens' Assessment (Prelude.Maybe AssessmentFramework)
assessment_framework :: Lens' Assessment (Maybe AssessmentFramework)
assessment_framework = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Assessment' {Maybe AssessmentFramework
framework :: Maybe AssessmentFramework
$sel:framework:Assessment' :: Assessment -> Maybe AssessmentFramework
framework} -> Maybe AssessmentFramework
framework) (\s :: Assessment
s@Assessment' {} Maybe AssessmentFramework
a -> Assessment
s {$sel:framework:Assessment' :: Maybe AssessmentFramework
framework = Maybe AssessmentFramework
a} :: Assessment)
assessment_metadata :: Lens.Lens' Assessment (Prelude.Maybe AssessmentMetadata)
assessment_metadata :: Lens' Assessment (Maybe AssessmentMetadata)
assessment_metadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Assessment' {Maybe AssessmentMetadata
metadata :: Maybe AssessmentMetadata
$sel:metadata:Assessment' :: Assessment -> Maybe AssessmentMetadata
metadata} -> Maybe AssessmentMetadata
metadata) (\s :: Assessment
s@Assessment' {} Maybe AssessmentMetadata
a -> Assessment
s {$sel:metadata:Assessment' :: Maybe AssessmentMetadata
metadata = Maybe AssessmentMetadata
a} :: Assessment)
assessment_tags :: Lens.Lens' Assessment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
assessment_tags :: Lens' Assessment (Maybe (HashMap Text Text))
assessment_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Assessment' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:Assessment' :: Assessment -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: Assessment
s@Assessment' {} Maybe (HashMap Text Text)
a -> Assessment
s {$sel:tags:Assessment' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: Assessment) 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 Assessment where
parseJSON :: Value -> Parser Assessment
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Assessment"
( \Object
x ->
Maybe Text
-> Maybe AWSAccount
-> Maybe AssessmentFramework
-> Maybe AssessmentMetadata
-> Maybe (HashMap Text Text)
-> Assessment
Assessment'
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
"arn")
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
"awsAccount")
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
"framework")
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
"metadata")
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
"tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
)
instance Prelude.Hashable Assessment where
hashWithSalt :: Int -> Assessment -> Int
hashWithSalt Int
_salt Assessment' {Maybe Text
Maybe (HashMap Text Text)
Maybe AWSAccount
Maybe AssessmentFramework
Maybe AssessmentMetadata
tags :: Maybe (HashMap Text Text)
metadata :: Maybe AssessmentMetadata
framework :: Maybe AssessmentFramework
awsAccount :: Maybe AWSAccount
arn :: Maybe Text
$sel:tags:Assessment' :: Assessment -> Maybe (HashMap Text Text)
$sel:metadata:Assessment' :: Assessment -> Maybe AssessmentMetadata
$sel:framework:Assessment' :: Assessment -> Maybe AssessmentFramework
$sel:awsAccount:Assessment' :: Assessment -> Maybe AWSAccount
$sel:arn:Assessment' :: Assessment -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AWSAccount
awsAccount
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AssessmentFramework
framework
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AssessmentMetadata
metadata
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
instance Prelude.NFData Assessment where
rnf :: Assessment -> ()
rnf Assessment' {Maybe Text
Maybe (HashMap Text Text)
Maybe AWSAccount
Maybe AssessmentFramework
Maybe AssessmentMetadata
tags :: Maybe (HashMap Text Text)
metadata :: Maybe AssessmentMetadata
framework :: Maybe AssessmentFramework
awsAccount :: Maybe AWSAccount
arn :: Maybe Text
$sel:tags:Assessment' :: Assessment -> Maybe (HashMap Text Text)
$sel:metadata:Assessment' :: Assessment -> Maybe AssessmentMetadata
$sel:framework:Assessment' :: Assessment -> Maybe AssessmentFramework
$sel:awsAccount:Assessment' :: Assessment -> Maybe AWSAccount
$sel:arn:Assessment' :: Assessment -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AWSAccount
awsAccount
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AssessmentFramework
framework
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AssessmentMetadata
metadata
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags