{-# 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.WellArchitected.GetLensReview
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Get lens review.
module Amazonka.WellArchitected.GetLensReview
  ( -- * Creating a Request
    GetLensReview (..),
    newGetLensReview,

    -- * Request Lenses
    getLensReview_milestoneNumber,
    getLensReview_workloadId,
    getLensReview_lensAlias,

    -- * Destructuring the Response
    GetLensReviewResponse (..),
    newGetLensReviewResponse,

    -- * Response Lenses
    getLensReviewResponse_lensReview,
    getLensReviewResponse_milestoneNumber,
    getLensReviewResponse_workloadId,
    getLensReviewResponse_httpStatus,
  )
where

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
import Amazonka.WellArchitected.Types

-- | Input to get lens review.
--
-- /See:/ 'newGetLensReview' smart constructor.
data GetLensReview = GetLensReview'
  { GetLensReview -> Maybe Natural
milestoneNumber :: Prelude.Maybe Prelude.Natural,
    GetLensReview -> Text
workloadId :: Prelude.Text,
    GetLensReview -> Text
lensAlias :: Prelude.Text
  }
  deriving (GetLensReview -> GetLensReview -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLensReview -> GetLensReview -> Bool
$c/= :: GetLensReview -> GetLensReview -> Bool
== :: GetLensReview -> GetLensReview -> Bool
$c== :: GetLensReview -> GetLensReview -> Bool
Prelude.Eq, ReadPrec [GetLensReview]
ReadPrec GetLensReview
Int -> ReadS GetLensReview
ReadS [GetLensReview]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLensReview]
$creadListPrec :: ReadPrec [GetLensReview]
readPrec :: ReadPrec GetLensReview
$creadPrec :: ReadPrec GetLensReview
readList :: ReadS [GetLensReview]
$creadList :: ReadS [GetLensReview]
readsPrec :: Int -> ReadS GetLensReview
$creadsPrec :: Int -> ReadS GetLensReview
Prelude.Read, Int -> GetLensReview -> ShowS
[GetLensReview] -> ShowS
GetLensReview -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLensReview] -> ShowS
$cshowList :: [GetLensReview] -> ShowS
show :: GetLensReview -> String
$cshow :: GetLensReview -> String
showsPrec :: Int -> GetLensReview -> ShowS
$cshowsPrec :: Int -> GetLensReview -> ShowS
Prelude.Show, forall x. Rep GetLensReview x -> GetLensReview
forall x. GetLensReview -> Rep GetLensReview x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetLensReview x -> GetLensReview
$cfrom :: forall x. GetLensReview -> Rep GetLensReview x
Prelude.Generic)

-- |
-- Create a value of 'GetLensReview' 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:
--
-- 'milestoneNumber', 'getLensReview_milestoneNumber' - Undocumented member.
--
-- 'workloadId', 'getLensReview_workloadId' - Undocumented member.
--
-- 'lensAlias', 'getLensReview_lensAlias' - Undocumented member.
newGetLensReview ::
  -- | 'workloadId'
  Prelude.Text ->
  -- | 'lensAlias'
  Prelude.Text ->
  GetLensReview
newGetLensReview :: Text -> Text -> GetLensReview
newGetLensReview Text
pWorkloadId_ Text
pLensAlias_ =
  GetLensReview'
    { $sel:milestoneNumber:GetLensReview' :: Maybe Natural
milestoneNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:workloadId:GetLensReview' :: Text
workloadId = Text
pWorkloadId_,
      $sel:lensAlias:GetLensReview' :: Text
lensAlias = Text
pLensAlias_
    }

-- | Undocumented member.
getLensReview_milestoneNumber :: Lens.Lens' GetLensReview (Prelude.Maybe Prelude.Natural)
getLensReview_milestoneNumber :: Lens' GetLensReview (Maybe Natural)
getLensReview_milestoneNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLensReview' {Maybe Natural
milestoneNumber :: Maybe Natural
$sel:milestoneNumber:GetLensReview' :: GetLensReview -> Maybe Natural
milestoneNumber} -> Maybe Natural
milestoneNumber) (\s :: GetLensReview
s@GetLensReview' {} Maybe Natural
a -> GetLensReview
s {$sel:milestoneNumber:GetLensReview' :: Maybe Natural
milestoneNumber = Maybe Natural
a} :: GetLensReview)

-- | Undocumented member.
getLensReview_workloadId :: Lens.Lens' GetLensReview Prelude.Text
getLensReview_workloadId :: Lens' GetLensReview Text
getLensReview_workloadId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLensReview' {Text
workloadId :: Text
$sel:workloadId:GetLensReview' :: GetLensReview -> Text
workloadId} -> Text
workloadId) (\s :: GetLensReview
s@GetLensReview' {} Text
a -> GetLensReview
s {$sel:workloadId:GetLensReview' :: Text
workloadId = Text
a} :: GetLensReview)

-- | Undocumented member.
getLensReview_lensAlias :: Lens.Lens' GetLensReview Prelude.Text
getLensReview_lensAlias :: Lens' GetLensReview Text
getLensReview_lensAlias = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLensReview' {Text
lensAlias :: Text
$sel:lensAlias:GetLensReview' :: GetLensReview -> Text
lensAlias} -> Text
lensAlias) (\s :: GetLensReview
s@GetLensReview' {} Text
a -> GetLensReview
s {$sel:lensAlias:GetLensReview' :: Text
lensAlias = Text
a} :: GetLensReview)

instance Core.AWSRequest GetLensReview where
  type
    AWSResponse GetLensReview =
      GetLensReviewResponse
  request :: (Service -> Service) -> GetLensReview -> Request GetLensReview
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 GetLensReview
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetLensReview)))
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 LensReview
-> Maybe Natural -> Maybe Text -> Int -> GetLensReviewResponse
GetLensReviewResponse'
            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
"LensReview")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"MilestoneNumber")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"WorkloadId")
            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 GetLensReview where
  hashWithSalt :: Int -> GetLensReview -> Int
hashWithSalt Int
_salt GetLensReview' {Maybe Natural
Text
lensAlias :: Text
workloadId :: Text
milestoneNumber :: Maybe Natural
$sel:lensAlias:GetLensReview' :: GetLensReview -> Text
$sel:workloadId:GetLensReview' :: GetLensReview -> Text
$sel:milestoneNumber:GetLensReview' :: GetLensReview -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
milestoneNumber
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
workloadId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
lensAlias

instance Prelude.NFData GetLensReview where
  rnf :: GetLensReview -> ()
rnf GetLensReview' {Maybe Natural
Text
lensAlias :: Text
workloadId :: Text
milestoneNumber :: Maybe Natural
$sel:lensAlias:GetLensReview' :: GetLensReview -> Text
$sel:workloadId:GetLensReview' :: GetLensReview -> Text
$sel:milestoneNumber:GetLensReview' :: GetLensReview -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
milestoneNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
workloadId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
lensAlias

instance Data.ToHeaders GetLensReview where
  toHeaders :: GetLensReview -> 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 GetLensReview where
  toPath :: GetLensReview -> ByteString
toPath GetLensReview' {Maybe Natural
Text
lensAlias :: Text
workloadId :: Text
milestoneNumber :: Maybe Natural
$sel:lensAlias:GetLensReview' :: GetLensReview -> Text
$sel:workloadId:GetLensReview' :: GetLensReview -> Text
$sel:milestoneNumber:GetLensReview' :: GetLensReview -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/workloads/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
workloadId,
        ByteString
"/lensReviews/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
lensAlias
      ]

instance Data.ToQuery GetLensReview where
  toQuery :: GetLensReview -> QueryString
toQuery GetLensReview' {Maybe Natural
Text
lensAlias :: Text
workloadId :: Text
milestoneNumber :: Maybe Natural
$sel:lensAlias:GetLensReview' :: GetLensReview -> Text
$sel:workloadId:GetLensReview' :: GetLensReview -> Text
$sel:milestoneNumber:GetLensReview' :: GetLensReview -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"MilestoneNumber" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
milestoneNumber]

-- | Output of a get lens review call.
--
-- /See:/ 'newGetLensReviewResponse' smart constructor.
data GetLensReviewResponse = GetLensReviewResponse'
  { GetLensReviewResponse -> Maybe LensReview
lensReview :: Prelude.Maybe LensReview,
    GetLensReviewResponse -> Maybe Natural
milestoneNumber :: Prelude.Maybe Prelude.Natural,
    GetLensReviewResponse -> Maybe Text
workloadId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetLensReviewResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetLensReviewResponse -> GetLensReviewResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLensReviewResponse -> GetLensReviewResponse -> Bool
$c/= :: GetLensReviewResponse -> GetLensReviewResponse -> Bool
== :: GetLensReviewResponse -> GetLensReviewResponse -> Bool
$c== :: GetLensReviewResponse -> GetLensReviewResponse -> Bool
Prelude.Eq, ReadPrec [GetLensReviewResponse]
ReadPrec GetLensReviewResponse
Int -> ReadS GetLensReviewResponse
ReadS [GetLensReviewResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLensReviewResponse]
$creadListPrec :: ReadPrec [GetLensReviewResponse]
readPrec :: ReadPrec GetLensReviewResponse
$creadPrec :: ReadPrec GetLensReviewResponse
readList :: ReadS [GetLensReviewResponse]
$creadList :: ReadS [GetLensReviewResponse]
readsPrec :: Int -> ReadS GetLensReviewResponse
$creadsPrec :: Int -> ReadS GetLensReviewResponse
Prelude.Read, Int -> GetLensReviewResponse -> ShowS
[GetLensReviewResponse] -> ShowS
GetLensReviewResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLensReviewResponse] -> ShowS
$cshowList :: [GetLensReviewResponse] -> ShowS
show :: GetLensReviewResponse -> String
$cshow :: GetLensReviewResponse -> String
showsPrec :: Int -> GetLensReviewResponse -> ShowS
$cshowsPrec :: Int -> GetLensReviewResponse -> ShowS
Prelude.Show, forall x. Rep GetLensReviewResponse x -> GetLensReviewResponse
forall x. GetLensReviewResponse -> Rep GetLensReviewResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetLensReviewResponse x -> GetLensReviewResponse
$cfrom :: forall x. GetLensReviewResponse -> Rep GetLensReviewResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetLensReviewResponse' 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:
--
-- 'lensReview', 'getLensReviewResponse_lensReview' - Undocumented member.
--
-- 'milestoneNumber', 'getLensReviewResponse_milestoneNumber' - Undocumented member.
--
-- 'workloadId', 'getLensReviewResponse_workloadId' - Undocumented member.
--
-- 'httpStatus', 'getLensReviewResponse_httpStatus' - The response's http status code.
newGetLensReviewResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetLensReviewResponse
newGetLensReviewResponse :: Int -> GetLensReviewResponse
newGetLensReviewResponse Int
pHttpStatus_ =
  GetLensReviewResponse'
    { $sel:lensReview:GetLensReviewResponse' :: Maybe LensReview
lensReview =
        forall a. Maybe a
Prelude.Nothing,
      $sel:milestoneNumber:GetLensReviewResponse' :: Maybe Natural
milestoneNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:workloadId:GetLensReviewResponse' :: Maybe Text
workloadId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetLensReviewResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
getLensReviewResponse_lensReview :: Lens.Lens' GetLensReviewResponse (Prelude.Maybe LensReview)
getLensReviewResponse_lensReview :: Lens' GetLensReviewResponse (Maybe LensReview)
getLensReviewResponse_lensReview = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLensReviewResponse' {Maybe LensReview
lensReview :: Maybe LensReview
$sel:lensReview:GetLensReviewResponse' :: GetLensReviewResponse -> Maybe LensReview
lensReview} -> Maybe LensReview
lensReview) (\s :: GetLensReviewResponse
s@GetLensReviewResponse' {} Maybe LensReview
a -> GetLensReviewResponse
s {$sel:lensReview:GetLensReviewResponse' :: Maybe LensReview
lensReview = Maybe LensReview
a} :: GetLensReviewResponse)

-- | Undocumented member.
getLensReviewResponse_milestoneNumber :: Lens.Lens' GetLensReviewResponse (Prelude.Maybe Prelude.Natural)
getLensReviewResponse_milestoneNumber :: Lens' GetLensReviewResponse (Maybe Natural)
getLensReviewResponse_milestoneNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLensReviewResponse' {Maybe Natural
milestoneNumber :: Maybe Natural
$sel:milestoneNumber:GetLensReviewResponse' :: GetLensReviewResponse -> Maybe Natural
milestoneNumber} -> Maybe Natural
milestoneNumber) (\s :: GetLensReviewResponse
s@GetLensReviewResponse' {} Maybe Natural
a -> GetLensReviewResponse
s {$sel:milestoneNumber:GetLensReviewResponse' :: Maybe Natural
milestoneNumber = Maybe Natural
a} :: GetLensReviewResponse)

-- | Undocumented member.
getLensReviewResponse_workloadId :: Lens.Lens' GetLensReviewResponse (Prelude.Maybe Prelude.Text)
getLensReviewResponse_workloadId :: Lens' GetLensReviewResponse (Maybe Text)
getLensReviewResponse_workloadId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLensReviewResponse' {Maybe Text
workloadId :: Maybe Text
$sel:workloadId:GetLensReviewResponse' :: GetLensReviewResponse -> Maybe Text
workloadId} -> Maybe Text
workloadId) (\s :: GetLensReviewResponse
s@GetLensReviewResponse' {} Maybe Text
a -> GetLensReviewResponse
s {$sel:workloadId:GetLensReviewResponse' :: Maybe Text
workloadId = Maybe Text
a} :: GetLensReviewResponse)

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

instance Prelude.NFData GetLensReviewResponse where
  rnf :: GetLensReviewResponse -> ()
rnf GetLensReviewResponse' {Int
Maybe Natural
Maybe Text
Maybe LensReview
httpStatus :: Int
workloadId :: Maybe Text
milestoneNumber :: Maybe Natural
lensReview :: Maybe LensReview
$sel:httpStatus:GetLensReviewResponse' :: GetLensReviewResponse -> Int
$sel:workloadId:GetLensReviewResponse' :: GetLensReviewResponse -> Maybe Text
$sel:milestoneNumber:GetLensReviewResponse' :: GetLensReviewResponse -> Maybe Natural
$sel:lensReview:GetLensReviewResponse' :: GetLensReviewResponse -> Maybe LensReview
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe LensReview
lensReview
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
milestoneNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
workloadId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus