{-# 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.NetworkManager.GetConnectPeer
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about a core network Connect peer.
module Amazonka.NetworkManager.GetConnectPeer
  ( -- * Creating a Request
    GetConnectPeer (..),
    newGetConnectPeer,

    -- * Request Lenses
    getConnectPeer_connectPeerId,

    -- * Destructuring the Response
    GetConnectPeerResponse (..),
    newGetConnectPeerResponse,

    -- * Response Lenses
    getConnectPeerResponse_connectPeer,
    getConnectPeerResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'GetConnectPeer' 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:
--
-- 'connectPeerId', 'getConnectPeer_connectPeerId' - The ID of the Connect peer.
newGetConnectPeer ::
  -- | 'connectPeerId'
  Prelude.Text ->
  GetConnectPeer
newGetConnectPeer :: Text -> GetConnectPeer
newGetConnectPeer Text
pConnectPeerId_ =
  GetConnectPeer' {$sel:connectPeerId:GetConnectPeer' :: Text
connectPeerId = Text
pConnectPeerId_}

-- | The ID of the Connect peer.
getConnectPeer_connectPeerId :: Lens.Lens' GetConnectPeer Prelude.Text
getConnectPeer_connectPeerId :: Lens' GetConnectPeer Text
getConnectPeer_connectPeerId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConnectPeer' {Text
connectPeerId :: Text
$sel:connectPeerId:GetConnectPeer' :: GetConnectPeer -> Text
connectPeerId} -> Text
connectPeerId) (\s :: GetConnectPeer
s@GetConnectPeer' {} Text
a -> GetConnectPeer
s {$sel:connectPeerId:GetConnectPeer' :: Text
connectPeerId = Text
a} :: GetConnectPeer)

instance Core.AWSRequest GetConnectPeer where
  type
    AWSResponse GetConnectPeer =
      GetConnectPeerResponse
  request :: (Service -> Service) -> GetConnectPeer -> Request GetConnectPeer
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 GetConnectPeer
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetConnectPeer)))
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 ConnectPeer -> Int -> GetConnectPeerResponse
GetConnectPeerResponse'
            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
"ConnectPeer")
            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 GetConnectPeer where
  hashWithSalt :: Int -> GetConnectPeer -> Int
hashWithSalt Int
_salt GetConnectPeer' {Text
connectPeerId :: Text
$sel:connectPeerId:GetConnectPeer' :: GetConnectPeer -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
connectPeerId

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

instance Data.ToHeaders GetConnectPeer where
  toHeaders :: GetConnectPeer -> 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 GetConnectPeer where
  toPath :: GetConnectPeer -> ByteString
toPath GetConnectPeer' {Text
connectPeerId :: Text
$sel:connectPeerId:GetConnectPeer' :: GetConnectPeer -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/connect-peers/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
connectPeerId]

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

-- | /See:/ 'newGetConnectPeerResponse' smart constructor.
data GetConnectPeerResponse = GetConnectPeerResponse'
  { -- | Returns information about a core network Connect peer.
    GetConnectPeerResponse -> Maybe ConnectPeer
connectPeer :: Prelude.Maybe ConnectPeer,
    -- | The response's http status code.
    GetConnectPeerResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetConnectPeerResponse -> GetConnectPeerResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetConnectPeerResponse -> GetConnectPeerResponse -> Bool
$c/= :: GetConnectPeerResponse -> GetConnectPeerResponse -> Bool
== :: GetConnectPeerResponse -> GetConnectPeerResponse -> Bool
$c== :: GetConnectPeerResponse -> GetConnectPeerResponse -> Bool
Prelude.Eq, ReadPrec [GetConnectPeerResponse]
ReadPrec GetConnectPeerResponse
Int -> ReadS GetConnectPeerResponse
ReadS [GetConnectPeerResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetConnectPeerResponse]
$creadListPrec :: ReadPrec [GetConnectPeerResponse]
readPrec :: ReadPrec GetConnectPeerResponse
$creadPrec :: ReadPrec GetConnectPeerResponse
readList :: ReadS [GetConnectPeerResponse]
$creadList :: ReadS [GetConnectPeerResponse]
readsPrec :: Int -> ReadS GetConnectPeerResponse
$creadsPrec :: Int -> ReadS GetConnectPeerResponse
Prelude.Read, Int -> GetConnectPeerResponse -> ShowS
[GetConnectPeerResponse] -> ShowS
GetConnectPeerResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetConnectPeerResponse] -> ShowS
$cshowList :: [GetConnectPeerResponse] -> ShowS
show :: GetConnectPeerResponse -> String
$cshow :: GetConnectPeerResponse -> String
showsPrec :: Int -> GetConnectPeerResponse -> ShowS
$cshowsPrec :: Int -> GetConnectPeerResponse -> ShowS
Prelude.Show, forall x. Rep GetConnectPeerResponse x -> GetConnectPeerResponse
forall x. GetConnectPeerResponse -> Rep GetConnectPeerResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetConnectPeerResponse x -> GetConnectPeerResponse
$cfrom :: forall x. GetConnectPeerResponse -> Rep GetConnectPeerResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetConnectPeerResponse' 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:
--
-- 'connectPeer', 'getConnectPeerResponse_connectPeer' - Returns information about a core network Connect peer.
--
-- 'httpStatus', 'getConnectPeerResponse_httpStatus' - The response's http status code.
newGetConnectPeerResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetConnectPeerResponse
newGetConnectPeerResponse :: Int -> GetConnectPeerResponse
newGetConnectPeerResponse Int
pHttpStatus_ =
  GetConnectPeerResponse'
    { $sel:connectPeer:GetConnectPeerResponse' :: Maybe ConnectPeer
connectPeer =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetConnectPeerResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Returns information about a core network Connect peer.
getConnectPeerResponse_connectPeer :: Lens.Lens' GetConnectPeerResponse (Prelude.Maybe ConnectPeer)
getConnectPeerResponse_connectPeer :: Lens' GetConnectPeerResponse (Maybe ConnectPeer)
getConnectPeerResponse_connectPeer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConnectPeerResponse' {Maybe ConnectPeer
connectPeer :: Maybe ConnectPeer
$sel:connectPeer:GetConnectPeerResponse' :: GetConnectPeerResponse -> Maybe ConnectPeer
connectPeer} -> Maybe ConnectPeer
connectPeer) (\s :: GetConnectPeerResponse
s@GetConnectPeerResponse' {} Maybe ConnectPeer
a -> GetConnectPeerResponse
s {$sel:connectPeer:GetConnectPeerResponse' :: Maybe ConnectPeer
connectPeer = Maybe ConnectPeer
a} :: GetConnectPeerResponse)

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

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