{-# 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.Transfer.DescribeConnector
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the connector that\'s identified by the @ConnectorId.@
module Amazonka.Transfer.DescribeConnector
  ( -- * Creating a Request
    DescribeConnector (..),
    newDescribeConnector,

    -- * Request Lenses
    describeConnector_connectorId,

    -- * Destructuring the Response
    DescribeConnectorResponse (..),
    newDescribeConnectorResponse,

    -- * Response Lenses
    describeConnectorResponse_httpStatus,
    describeConnectorResponse_connector,
  )
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.Transfer.Types

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

-- |
-- Create a value of 'DescribeConnector' 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:
--
-- 'connectorId', 'describeConnector_connectorId' - The unique identifier for the connector.
newDescribeConnector ::
  -- | 'connectorId'
  Prelude.Text ->
  DescribeConnector
newDescribeConnector :: Text -> DescribeConnector
newDescribeConnector Text
pConnectorId_ =
  DescribeConnector' {$sel:connectorId:DescribeConnector' :: Text
connectorId = Text
pConnectorId_}

-- | The unique identifier for the connector.
describeConnector_connectorId :: Lens.Lens' DescribeConnector Prelude.Text
describeConnector_connectorId :: Lens' DescribeConnector Text
describeConnector_connectorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConnector' {Text
connectorId :: Text
$sel:connectorId:DescribeConnector' :: DescribeConnector -> Text
connectorId} -> Text
connectorId) (\s :: DescribeConnector
s@DescribeConnector' {} Text
a -> DescribeConnector
s {$sel:connectorId:DescribeConnector' :: Text
connectorId = Text
a} :: DescribeConnector)

instance Core.AWSRequest DescribeConnector where
  type
    AWSResponse DescribeConnector =
      DescribeConnectorResponse
  request :: (Service -> Service)
-> DescribeConnector -> Request DescribeConnector
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeConnector
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeConnector)))
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 ->
          Int -> DescribedConnector -> DescribeConnectorResponse
DescribeConnectorResponse'
            forall (f :: * -> *) a b. Functor 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
"Connector")
      )

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

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

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

instance Data.ToJSON DescribeConnector where
  toJSON :: DescribeConnector -> Value
toJSON DescribeConnector' {Text
connectorId :: Text
$sel:connectorId:DescribeConnector' :: DescribeConnector -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"ConnectorId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
connectorId)]
      )

instance Data.ToPath DescribeConnector where
  toPath :: DescribeConnector -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newDescribeConnectorResponse' smart constructor.
data DescribeConnectorResponse = DescribeConnectorResponse'
  { -- | The response's http status code.
    DescribeConnectorResponse -> Int
httpStatus :: Prelude.Int,
    -- | The structure that contains the details of the connector.
    DescribeConnectorResponse -> DescribedConnector
connector :: DescribedConnector
  }
  deriving (DescribeConnectorResponse -> DescribeConnectorResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeConnectorResponse -> DescribeConnectorResponse -> Bool
$c/= :: DescribeConnectorResponse -> DescribeConnectorResponse -> Bool
== :: DescribeConnectorResponse -> DescribeConnectorResponse -> Bool
$c== :: DescribeConnectorResponse -> DescribeConnectorResponse -> Bool
Prelude.Eq, ReadPrec [DescribeConnectorResponse]
ReadPrec DescribeConnectorResponse
Int -> ReadS DescribeConnectorResponse
ReadS [DescribeConnectorResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeConnectorResponse]
$creadListPrec :: ReadPrec [DescribeConnectorResponse]
readPrec :: ReadPrec DescribeConnectorResponse
$creadPrec :: ReadPrec DescribeConnectorResponse
readList :: ReadS [DescribeConnectorResponse]
$creadList :: ReadS [DescribeConnectorResponse]
readsPrec :: Int -> ReadS DescribeConnectorResponse
$creadsPrec :: Int -> ReadS DescribeConnectorResponse
Prelude.Read, Int -> DescribeConnectorResponse -> ShowS
[DescribeConnectorResponse] -> ShowS
DescribeConnectorResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeConnectorResponse] -> ShowS
$cshowList :: [DescribeConnectorResponse] -> ShowS
show :: DescribeConnectorResponse -> String
$cshow :: DescribeConnectorResponse -> String
showsPrec :: Int -> DescribeConnectorResponse -> ShowS
$cshowsPrec :: Int -> DescribeConnectorResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeConnectorResponse x -> DescribeConnectorResponse
forall x.
DescribeConnectorResponse -> Rep DescribeConnectorResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeConnectorResponse x -> DescribeConnectorResponse
$cfrom :: forall x.
DescribeConnectorResponse -> Rep DescribeConnectorResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeConnectorResponse' 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:
--
-- 'httpStatus', 'describeConnectorResponse_httpStatus' - The response's http status code.
--
-- 'connector', 'describeConnectorResponse_connector' - The structure that contains the details of the connector.
newDescribeConnectorResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'connector'
  DescribedConnector ->
  DescribeConnectorResponse
newDescribeConnectorResponse :: Int -> DescribedConnector -> DescribeConnectorResponse
newDescribeConnectorResponse Int
pHttpStatus_ DescribedConnector
pConnector_ =
  DescribeConnectorResponse'
    { $sel:httpStatus:DescribeConnectorResponse' :: Int
httpStatus =
        Int
pHttpStatus_,
      $sel:connector:DescribeConnectorResponse' :: DescribedConnector
connector = DescribedConnector
pConnector_
    }

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

-- | The structure that contains the details of the connector.
describeConnectorResponse_connector :: Lens.Lens' DescribeConnectorResponse DescribedConnector
describeConnectorResponse_connector :: Lens' DescribeConnectorResponse DescribedConnector
describeConnectorResponse_connector = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeConnectorResponse' {DescribedConnector
connector :: DescribedConnector
$sel:connector:DescribeConnectorResponse' :: DescribeConnectorResponse -> DescribedConnector
connector} -> DescribedConnector
connector) (\s :: DescribeConnectorResponse
s@DescribeConnectorResponse' {} DescribedConnector
a -> DescribeConnectorResponse
s {$sel:connector:DescribeConnectorResponse' :: DescribedConnector
connector = DescribedConnector
a} :: DescribeConnectorResponse)

instance Prelude.NFData DescribeConnectorResponse where
  rnf :: DescribeConnectorResponse -> ()
rnf DescribeConnectorResponse' {Int
DescribedConnector
connector :: DescribedConnector
httpStatus :: Int
$sel:connector:DescribeConnectorResponse' :: DescribeConnectorResponse -> DescribedConnector
$sel:httpStatus:DescribeConnectorResponse' :: DescribeConnectorResponse -> Int
..} =
    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 DescribedConnector
connector