{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AuditManager.GetInsightsByAssessment
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the latest analytics data for a specific active assessment.
module Amazonka.AuditManager.GetInsightsByAssessment
  ( -- * Creating a Request
    GetInsightsByAssessment (..),
    newGetInsightsByAssessment,

    -- * Request Lenses
    getInsightsByAssessment_assessmentId,

    -- * Destructuring the Response
    GetInsightsByAssessmentResponse (..),
    newGetInsightsByAssessmentResponse,

    -- * Response Lenses
    getInsightsByAssessmentResponse_insights,
    getInsightsByAssessmentResponse_httpStatus,
  )
where

import Amazonka.AuditManager.Types
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
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newGetInsightsByAssessment' smart constructor.
data GetInsightsByAssessment = GetInsightsByAssessment'
  { -- | The unique identifier for the assessment.
    GetInsightsByAssessment -> Text
assessmentId :: Prelude.Text
  }
  deriving (GetInsightsByAssessment -> GetInsightsByAssessment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetInsightsByAssessment -> GetInsightsByAssessment -> Bool
$c/= :: GetInsightsByAssessment -> GetInsightsByAssessment -> Bool
== :: GetInsightsByAssessment -> GetInsightsByAssessment -> Bool
$c== :: GetInsightsByAssessment -> GetInsightsByAssessment -> Bool
Prelude.Eq, ReadPrec [GetInsightsByAssessment]
ReadPrec GetInsightsByAssessment
Int -> ReadS GetInsightsByAssessment
ReadS [GetInsightsByAssessment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetInsightsByAssessment]
$creadListPrec :: ReadPrec [GetInsightsByAssessment]
readPrec :: ReadPrec GetInsightsByAssessment
$creadPrec :: ReadPrec GetInsightsByAssessment
readList :: ReadS [GetInsightsByAssessment]
$creadList :: ReadS [GetInsightsByAssessment]
readsPrec :: Int -> ReadS GetInsightsByAssessment
$creadsPrec :: Int -> ReadS GetInsightsByAssessment
Prelude.Read, Int -> GetInsightsByAssessment -> ShowS
[GetInsightsByAssessment] -> ShowS
GetInsightsByAssessment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetInsightsByAssessment] -> ShowS
$cshowList :: [GetInsightsByAssessment] -> ShowS
show :: GetInsightsByAssessment -> String
$cshow :: GetInsightsByAssessment -> String
showsPrec :: Int -> GetInsightsByAssessment -> ShowS
$cshowsPrec :: Int -> GetInsightsByAssessment -> ShowS
Prelude.Show, forall x. Rep GetInsightsByAssessment x -> GetInsightsByAssessment
forall x. GetInsightsByAssessment -> Rep GetInsightsByAssessment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetInsightsByAssessment x -> GetInsightsByAssessment
$cfrom :: forall x. GetInsightsByAssessment -> Rep GetInsightsByAssessment x
Prelude.Generic)

-- |
-- Create a value of 'GetInsightsByAssessment' 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:
--
-- 'assessmentId', 'getInsightsByAssessment_assessmentId' - The unique identifier for the assessment.
newGetInsightsByAssessment ::
  -- | 'assessmentId'
  Prelude.Text ->
  GetInsightsByAssessment
newGetInsightsByAssessment :: Text -> GetInsightsByAssessment
newGetInsightsByAssessment Text
pAssessmentId_ =
  GetInsightsByAssessment'
    { $sel:assessmentId:GetInsightsByAssessment' :: Text
assessmentId =
        Text
pAssessmentId_
    }

-- | The unique identifier for the assessment.
getInsightsByAssessment_assessmentId :: Lens.Lens' GetInsightsByAssessment Prelude.Text
getInsightsByAssessment_assessmentId :: Lens' GetInsightsByAssessment Text
getInsightsByAssessment_assessmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInsightsByAssessment' {Text
assessmentId :: Text
$sel:assessmentId:GetInsightsByAssessment' :: GetInsightsByAssessment -> Text
assessmentId} -> Text
assessmentId) (\s :: GetInsightsByAssessment
s@GetInsightsByAssessment' {} Text
a -> GetInsightsByAssessment
s {$sel:assessmentId:GetInsightsByAssessment' :: Text
assessmentId = Text
a} :: GetInsightsByAssessment)

instance Core.AWSRequest GetInsightsByAssessment where
  type
    AWSResponse GetInsightsByAssessment =
      GetInsightsByAssessmentResponse
  request :: (Service -> Service)
-> GetInsightsByAssessment -> Request GetInsightsByAssessment
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetInsightsByAssessment
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetInsightsByAssessment)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe InsightsByAssessment
-> Int -> GetInsightsByAssessmentResponse
GetInsightsByAssessmentResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"insights")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable GetInsightsByAssessment where
  hashWithSalt :: Int -> GetInsightsByAssessment -> Int
hashWithSalt Int
_salt GetInsightsByAssessment' {Text
assessmentId :: Text
$sel:assessmentId:GetInsightsByAssessment' :: GetInsightsByAssessment -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assessmentId

instance Prelude.NFData GetInsightsByAssessment where
  rnf :: GetInsightsByAssessment -> ()
rnf GetInsightsByAssessment' {Text
assessmentId :: Text
$sel:assessmentId:GetInsightsByAssessment' :: GetInsightsByAssessment -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
assessmentId

instance Data.ToHeaders GetInsightsByAssessment where
  toHeaders :: GetInsightsByAssessment -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath GetInsightsByAssessment where
  toPath :: GetInsightsByAssessment -> ByteString
toPath GetInsightsByAssessment' {Text
assessmentId :: Text
$sel:assessmentId:GetInsightsByAssessment' :: GetInsightsByAssessment -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/insights/assessments/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
assessmentId]

instance Data.ToQuery GetInsightsByAssessment where
  toQuery :: GetInsightsByAssessment -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newGetInsightsByAssessmentResponse' smart constructor.
data GetInsightsByAssessmentResponse = GetInsightsByAssessmentResponse'
  { -- | The assessment analytics data that the @GetInsightsByAssessment@ API
    -- returned.
    GetInsightsByAssessmentResponse -> Maybe InsightsByAssessment
insights :: Prelude.Maybe InsightsByAssessment,
    -- | The response's http status code.
    GetInsightsByAssessmentResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetInsightsByAssessmentResponse
-> GetInsightsByAssessmentResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetInsightsByAssessmentResponse
-> GetInsightsByAssessmentResponse -> Bool
$c/= :: GetInsightsByAssessmentResponse
-> GetInsightsByAssessmentResponse -> Bool
== :: GetInsightsByAssessmentResponse
-> GetInsightsByAssessmentResponse -> Bool
$c== :: GetInsightsByAssessmentResponse
-> GetInsightsByAssessmentResponse -> Bool
Prelude.Eq, ReadPrec [GetInsightsByAssessmentResponse]
ReadPrec GetInsightsByAssessmentResponse
Int -> ReadS GetInsightsByAssessmentResponse
ReadS [GetInsightsByAssessmentResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetInsightsByAssessmentResponse]
$creadListPrec :: ReadPrec [GetInsightsByAssessmentResponse]
readPrec :: ReadPrec GetInsightsByAssessmentResponse
$creadPrec :: ReadPrec GetInsightsByAssessmentResponse
readList :: ReadS [GetInsightsByAssessmentResponse]
$creadList :: ReadS [GetInsightsByAssessmentResponse]
readsPrec :: Int -> ReadS GetInsightsByAssessmentResponse
$creadsPrec :: Int -> ReadS GetInsightsByAssessmentResponse
Prelude.Read, Int -> GetInsightsByAssessmentResponse -> ShowS
[GetInsightsByAssessmentResponse] -> ShowS
GetInsightsByAssessmentResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetInsightsByAssessmentResponse] -> ShowS
$cshowList :: [GetInsightsByAssessmentResponse] -> ShowS
show :: GetInsightsByAssessmentResponse -> String
$cshow :: GetInsightsByAssessmentResponse -> String
showsPrec :: Int -> GetInsightsByAssessmentResponse -> ShowS
$cshowsPrec :: Int -> GetInsightsByAssessmentResponse -> ShowS
Prelude.Show, forall x.
Rep GetInsightsByAssessmentResponse x
-> GetInsightsByAssessmentResponse
forall x.
GetInsightsByAssessmentResponse
-> Rep GetInsightsByAssessmentResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetInsightsByAssessmentResponse x
-> GetInsightsByAssessmentResponse
$cfrom :: forall x.
GetInsightsByAssessmentResponse
-> Rep GetInsightsByAssessmentResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetInsightsByAssessmentResponse' 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:
--
-- 'insights', 'getInsightsByAssessmentResponse_insights' - The assessment analytics data that the @GetInsightsByAssessment@ API
-- returned.
--
-- 'httpStatus', 'getInsightsByAssessmentResponse_httpStatus' - The response's http status code.
newGetInsightsByAssessmentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetInsightsByAssessmentResponse
newGetInsightsByAssessmentResponse :: Int -> GetInsightsByAssessmentResponse
newGetInsightsByAssessmentResponse Int
pHttpStatus_ =
  GetInsightsByAssessmentResponse'
    { $sel:insights:GetInsightsByAssessmentResponse' :: Maybe InsightsByAssessment
insights =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetInsightsByAssessmentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The assessment analytics data that the @GetInsightsByAssessment@ API
-- returned.
getInsightsByAssessmentResponse_insights :: Lens.Lens' GetInsightsByAssessmentResponse (Prelude.Maybe InsightsByAssessment)
getInsightsByAssessmentResponse_insights :: Lens' GetInsightsByAssessmentResponse (Maybe InsightsByAssessment)
getInsightsByAssessmentResponse_insights = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInsightsByAssessmentResponse' {Maybe InsightsByAssessment
insights :: Maybe InsightsByAssessment
$sel:insights:GetInsightsByAssessmentResponse' :: GetInsightsByAssessmentResponse -> Maybe InsightsByAssessment
insights} -> Maybe InsightsByAssessment
insights) (\s :: GetInsightsByAssessmentResponse
s@GetInsightsByAssessmentResponse' {} Maybe InsightsByAssessment
a -> GetInsightsByAssessmentResponse
s {$sel:insights:GetInsightsByAssessmentResponse' :: Maybe InsightsByAssessment
insights = Maybe InsightsByAssessment
a} :: GetInsightsByAssessmentResponse)

-- | The response's http status code.
getInsightsByAssessmentResponse_httpStatus :: Lens.Lens' GetInsightsByAssessmentResponse Prelude.Int
getInsightsByAssessmentResponse_httpStatus :: Lens' GetInsightsByAssessmentResponse Int
getInsightsByAssessmentResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInsightsByAssessmentResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetInsightsByAssessmentResponse' :: GetInsightsByAssessmentResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetInsightsByAssessmentResponse
s@GetInsightsByAssessmentResponse' {} Int
a -> GetInsightsByAssessmentResponse
s {$sel:httpStatus:GetInsightsByAssessmentResponse' :: Int
httpStatus = Int
a} :: GetInsightsByAssessmentResponse)

instance
  Prelude.NFData
    GetInsightsByAssessmentResponse
  where
  rnf :: GetInsightsByAssessmentResponse -> ()
rnf GetInsightsByAssessmentResponse' {Int
Maybe InsightsByAssessment
httpStatus :: Int
insights :: Maybe InsightsByAssessment
$sel:httpStatus:GetInsightsByAssessmentResponse' :: GetInsightsByAssessmentResponse -> Int
$sel:insights:GetInsightsByAssessmentResponse' :: GetInsightsByAssessmentResponse -> Maybe InsightsByAssessment
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe InsightsByAssessment
insights
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus