{-# 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.IoTRoboRunner.GetSite
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Grants permission to get a site
module Amazonka.IoTRoboRunner.GetSite
  ( -- * Creating a Request
    GetSite (..),
    newGetSite,

    -- * Request Lenses
    getSite_id,

    -- * Destructuring the Response
    GetSiteResponse (..),
    newGetSiteResponse,

    -- * Response Lenses
    getSiteResponse_description,
    getSiteResponse_httpStatus,
    getSiteResponse_arn,
    getSiteResponse_id,
    getSiteResponse_name,
    getSiteResponse_countryCode,
    getSiteResponse_createdAt,
    getSiteResponse_updatedAt,
  )
where

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

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

-- |
-- Create a value of 'GetSite' 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', 'getSite_id' - Undocumented member.
newGetSite ::
  -- | 'id'
  Prelude.Text ->
  GetSite
newGetSite :: Text -> GetSite
newGetSite Text
pId_ = GetSite' {$sel:id:GetSite' :: Text
id = Text
pId_}

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

instance Core.AWSRequest GetSite where
  type AWSResponse GetSite = GetSiteResponse
  request :: (Service -> Service) -> GetSite -> Request GetSite
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 GetSite
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetSite)))
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
-> Text
-> Text
-> Text
-> Text
-> POSIX
-> POSIX
-> GetSiteResponse
GetSiteResponse'
            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
"description")
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String 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 -> Either String a
Data..:> Key
"id")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"countryCode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"createdAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"updatedAt")
      )

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

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

instance Data.ToHeaders GetSite where
  toHeaders :: GetSite -> 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 GetSite where
  toPath :: GetSite -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/getSite"

instance Data.ToQuery GetSite where
  toQuery :: GetSite -> QueryString
toQuery GetSite' {Text
id :: Text
$sel:id:GetSite' :: GetSite -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"id" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
id]

-- | /See:/ 'newGetSiteResponse' smart constructor.
data GetSiteResponse = GetSiteResponse'
  { GetSiteResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetSiteResponse -> Int
httpStatus :: Prelude.Int,
    GetSiteResponse -> Text
arn :: Prelude.Text,
    GetSiteResponse -> Text
id :: Prelude.Text,
    GetSiteResponse -> Text
name :: Prelude.Text,
    GetSiteResponse -> Text
countryCode :: Prelude.Text,
    GetSiteResponse -> POSIX
createdAt :: Data.POSIX,
    GetSiteResponse -> POSIX
updatedAt :: Data.POSIX
  }
  deriving (GetSiteResponse -> GetSiteResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetSiteResponse -> GetSiteResponse -> Bool
$c/= :: GetSiteResponse -> GetSiteResponse -> Bool
== :: GetSiteResponse -> GetSiteResponse -> Bool
$c== :: GetSiteResponse -> GetSiteResponse -> Bool
Prelude.Eq, ReadPrec [GetSiteResponse]
ReadPrec GetSiteResponse
Int -> ReadS GetSiteResponse
ReadS [GetSiteResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetSiteResponse]
$creadListPrec :: ReadPrec [GetSiteResponse]
readPrec :: ReadPrec GetSiteResponse
$creadPrec :: ReadPrec GetSiteResponse
readList :: ReadS [GetSiteResponse]
$creadList :: ReadS [GetSiteResponse]
readsPrec :: Int -> ReadS GetSiteResponse
$creadsPrec :: Int -> ReadS GetSiteResponse
Prelude.Read, Int -> GetSiteResponse -> ShowS
[GetSiteResponse] -> ShowS
GetSiteResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetSiteResponse] -> ShowS
$cshowList :: [GetSiteResponse] -> ShowS
show :: GetSiteResponse -> String
$cshow :: GetSiteResponse -> String
showsPrec :: Int -> GetSiteResponse -> ShowS
$cshowsPrec :: Int -> GetSiteResponse -> ShowS
Prelude.Show, forall x. Rep GetSiteResponse x -> GetSiteResponse
forall x. GetSiteResponse -> Rep GetSiteResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetSiteResponse x -> GetSiteResponse
$cfrom :: forall x. GetSiteResponse -> Rep GetSiteResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetSiteResponse' 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:
--
-- 'description', 'getSiteResponse_description' - Undocumented member.
--
-- 'httpStatus', 'getSiteResponse_httpStatus' - The response's http status code.
--
-- 'arn', 'getSiteResponse_arn' - Undocumented member.
--
-- 'id', 'getSiteResponse_id' - Undocumented member.
--
-- 'name', 'getSiteResponse_name' - Undocumented member.
--
-- 'countryCode', 'getSiteResponse_countryCode' - Undocumented member.
--
-- 'createdAt', 'getSiteResponse_createdAt' - Undocumented member.
--
-- 'updatedAt', 'getSiteResponse_updatedAt' - Undocumented member.
newGetSiteResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'arn'
  Prelude.Text ->
  -- | 'id'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'countryCode'
  Prelude.Text ->
  -- | 'createdAt'
  Prelude.UTCTime ->
  -- | 'updatedAt'
  Prelude.UTCTime ->
  GetSiteResponse
newGetSiteResponse :: Int
-> Text
-> Text
-> Text
-> Text
-> UTCTime
-> UTCTime
-> GetSiteResponse
newGetSiteResponse
  Int
pHttpStatus_
  Text
pArn_
  Text
pId_
  Text
pName_
  Text
pCountryCode_
  UTCTime
pCreatedAt_
  UTCTime
pUpdatedAt_ =
    GetSiteResponse'
      { $sel:description:GetSiteResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetSiteResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:arn:GetSiteResponse' :: Text
arn = Text
pArn_,
        $sel:id:GetSiteResponse' :: Text
id = Text
pId_,
        $sel:name:GetSiteResponse' :: Text
name = Text
pName_,
        $sel:countryCode:GetSiteResponse' :: Text
countryCode = Text
pCountryCode_,
        $sel:createdAt:GetSiteResponse' :: POSIX
createdAt = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreatedAt_,
        $sel:updatedAt:GetSiteResponse' :: POSIX
updatedAt = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pUpdatedAt_
      }

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

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

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

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

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

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

-- | Undocumented member.
getSiteResponse_createdAt :: Lens.Lens' GetSiteResponse Prelude.UTCTime
getSiteResponse_createdAt :: Lens' GetSiteResponse UTCTime
getSiteResponse_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSiteResponse' {POSIX
createdAt :: POSIX
$sel:createdAt:GetSiteResponse' :: GetSiteResponse -> POSIX
createdAt} -> POSIX
createdAt) (\s :: GetSiteResponse
s@GetSiteResponse' {} POSIX
a -> GetSiteResponse
s {$sel:createdAt:GetSiteResponse' :: POSIX
createdAt = POSIX
a} :: GetSiteResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Undocumented member.
getSiteResponse_updatedAt :: Lens.Lens' GetSiteResponse Prelude.UTCTime
getSiteResponse_updatedAt :: Lens' GetSiteResponse UTCTime
getSiteResponse_updatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSiteResponse' {POSIX
updatedAt :: POSIX
$sel:updatedAt:GetSiteResponse' :: GetSiteResponse -> POSIX
updatedAt} -> POSIX
updatedAt) (\s :: GetSiteResponse
s@GetSiteResponse' {} POSIX
a -> GetSiteResponse
s {$sel:updatedAt:GetSiteResponse' :: POSIX
updatedAt = POSIX
a} :: GetSiteResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Prelude.NFData GetSiteResponse where
  rnf :: GetSiteResponse -> ()
rnf GetSiteResponse' {Int
Maybe Text
Text
POSIX
updatedAt :: POSIX
createdAt :: POSIX
countryCode :: Text
name :: Text
id :: Text
arn :: Text
httpStatus :: Int
description :: Maybe Text
$sel:updatedAt:GetSiteResponse' :: GetSiteResponse -> POSIX
$sel:createdAt:GetSiteResponse' :: GetSiteResponse -> POSIX
$sel:countryCode:GetSiteResponse' :: GetSiteResponse -> Text
$sel:name:GetSiteResponse' :: GetSiteResponse -> Text
$sel:id:GetSiteResponse' :: GetSiteResponse -> Text
$sel:arn:GetSiteResponse' :: GetSiteResponse -> Text
$sel:httpStatus:GetSiteResponse' :: GetSiteResponse -> Int
$sel:description:GetSiteResponse' :: GetSiteResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
countryCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
updatedAt