{-# 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.MigrationHubStrategy.GetLatestAssessmentId
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieve the latest ID of a specific assessment task.
module Amazonka.MigrationHubStrategy.GetLatestAssessmentId
  ( -- * Creating a Request
    GetLatestAssessmentId (..),
    newGetLatestAssessmentId,

    -- * Destructuring the Response
    GetLatestAssessmentIdResponse (..),
    newGetLatestAssessmentIdResponse,

    -- * Response Lenses
    getLatestAssessmentIdResponse_id,
    getLatestAssessmentIdResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MigrationHubStrategy.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

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

-- |
-- Create a value of 'GetLatestAssessmentId' 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.
newGetLatestAssessmentId ::
  GetLatestAssessmentId
newGetLatestAssessmentId :: GetLatestAssessmentId
newGetLatestAssessmentId = GetLatestAssessmentId
GetLatestAssessmentId'

instance Core.AWSRequest GetLatestAssessmentId where
  type
    AWSResponse GetLatestAssessmentId =
      GetLatestAssessmentIdResponse
  request :: (Service -> Service)
-> GetLatestAssessmentId -> Request GetLatestAssessmentId
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 GetLatestAssessmentId
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetLatestAssessmentId)))
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 Text -> Int -> GetLatestAssessmentIdResponse
GetLatestAssessmentIdResponse'
            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
"id")
            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 GetLatestAssessmentId where
  hashWithSalt :: Int -> GetLatestAssessmentId -> Int
hashWithSalt Int
_salt GetLatestAssessmentId
_ =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ()

instance Prelude.NFData GetLatestAssessmentId where
  rnf :: GetLatestAssessmentId -> ()
rnf GetLatestAssessmentId
_ = ()

instance Data.ToHeaders GetLatestAssessmentId where
  toHeaders :: GetLatestAssessmentId -> 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 GetLatestAssessmentId where
  toPath :: GetLatestAssessmentId -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/get-latest-assessment-id"

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

-- | /See:/ 'newGetLatestAssessmentIdResponse' smart constructor.
data GetLatestAssessmentIdResponse = GetLatestAssessmentIdResponse'
  { -- | The latest ID for the specific assessment task.
    GetLatestAssessmentIdResponse -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetLatestAssessmentIdResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetLatestAssessmentIdResponse
-> GetLatestAssessmentIdResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLatestAssessmentIdResponse
-> GetLatestAssessmentIdResponse -> Bool
$c/= :: GetLatestAssessmentIdResponse
-> GetLatestAssessmentIdResponse -> Bool
== :: GetLatestAssessmentIdResponse
-> GetLatestAssessmentIdResponse -> Bool
$c== :: GetLatestAssessmentIdResponse
-> GetLatestAssessmentIdResponse -> Bool
Prelude.Eq, ReadPrec [GetLatestAssessmentIdResponse]
ReadPrec GetLatestAssessmentIdResponse
Int -> ReadS GetLatestAssessmentIdResponse
ReadS [GetLatestAssessmentIdResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLatestAssessmentIdResponse]
$creadListPrec :: ReadPrec [GetLatestAssessmentIdResponse]
readPrec :: ReadPrec GetLatestAssessmentIdResponse
$creadPrec :: ReadPrec GetLatestAssessmentIdResponse
readList :: ReadS [GetLatestAssessmentIdResponse]
$creadList :: ReadS [GetLatestAssessmentIdResponse]
readsPrec :: Int -> ReadS GetLatestAssessmentIdResponse
$creadsPrec :: Int -> ReadS GetLatestAssessmentIdResponse
Prelude.Read, Int -> GetLatestAssessmentIdResponse -> ShowS
[GetLatestAssessmentIdResponse] -> ShowS
GetLatestAssessmentIdResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLatestAssessmentIdResponse] -> ShowS
$cshowList :: [GetLatestAssessmentIdResponse] -> ShowS
show :: GetLatestAssessmentIdResponse -> String
$cshow :: GetLatestAssessmentIdResponse -> String
showsPrec :: Int -> GetLatestAssessmentIdResponse -> ShowS
$cshowsPrec :: Int -> GetLatestAssessmentIdResponse -> ShowS
Prelude.Show, forall x.
Rep GetLatestAssessmentIdResponse x
-> GetLatestAssessmentIdResponse
forall x.
GetLatestAssessmentIdResponse
-> Rep GetLatestAssessmentIdResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetLatestAssessmentIdResponse x
-> GetLatestAssessmentIdResponse
$cfrom :: forall x.
GetLatestAssessmentIdResponse
-> Rep GetLatestAssessmentIdResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetLatestAssessmentIdResponse' 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:
--
-- 'id', 'getLatestAssessmentIdResponse_id' - The latest ID for the specific assessment task.
--
-- 'httpStatus', 'getLatestAssessmentIdResponse_httpStatus' - The response's http status code.
newGetLatestAssessmentIdResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetLatestAssessmentIdResponse
newGetLatestAssessmentIdResponse :: Int -> GetLatestAssessmentIdResponse
newGetLatestAssessmentIdResponse Int
pHttpStatus_ =
  GetLatestAssessmentIdResponse'
    { $sel:id:GetLatestAssessmentIdResponse' :: Maybe Text
id =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetLatestAssessmentIdResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The latest ID for the specific assessment task.
getLatestAssessmentIdResponse_id :: Lens.Lens' GetLatestAssessmentIdResponse (Prelude.Maybe Prelude.Text)
getLatestAssessmentIdResponse_id :: Lens' GetLatestAssessmentIdResponse (Maybe Text)
getLatestAssessmentIdResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLatestAssessmentIdResponse' {Maybe Text
id :: Maybe Text
$sel:id:GetLatestAssessmentIdResponse' :: GetLatestAssessmentIdResponse -> Maybe Text
id} -> Maybe Text
id) (\s :: GetLatestAssessmentIdResponse
s@GetLatestAssessmentIdResponse' {} Maybe Text
a -> GetLatestAssessmentIdResponse
s {$sel:id:GetLatestAssessmentIdResponse' :: Maybe Text
id = Maybe Text
a} :: GetLatestAssessmentIdResponse)

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

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