{-# 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.SMS.GetConnectors
-- 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 connectors registered with the Server Migration Service.
--
-- This operation returns paginated results.
module Amazonka.SMS.GetConnectors
  ( -- * Creating a Request
    GetConnectors (..),
    newGetConnectors,

    -- * Request Lenses
    getConnectors_maxResults,
    getConnectors_nextToken,

    -- * Destructuring the Response
    GetConnectorsResponse (..),
    newGetConnectorsResponse,

    -- * Response Lenses
    getConnectorsResponse_connectorList,
    getConnectorsResponse_nextToken,
    getConnectorsResponse_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.SMS.Types

-- | /See:/ 'newGetConnectors' smart constructor.
data GetConnectors = GetConnectors'
  { -- | The maximum number of results to return in a single call. The default
    -- value is 50. To retrieve the remaining results, make another call with
    -- the returned @NextToken@ value.
    GetConnectors -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | The token for the next set of results.
    GetConnectors -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (GetConnectors -> GetConnectors -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetConnectors -> GetConnectors -> Bool
$c/= :: GetConnectors -> GetConnectors -> Bool
== :: GetConnectors -> GetConnectors -> Bool
$c== :: GetConnectors -> GetConnectors -> Bool
Prelude.Eq, ReadPrec [GetConnectors]
ReadPrec GetConnectors
Int -> ReadS GetConnectors
ReadS [GetConnectors]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetConnectors]
$creadListPrec :: ReadPrec [GetConnectors]
readPrec :: ReadPrec GetConnectors
$creadPrec :: ReadPrec GetConnectors
readList :: ReadS [GetConnectors]
$creadList :: ReadS [GetConnectors]
readsPrec :: Int -> ReadS GetConnectors
$creadsPrec :: Int -> ReadS GetConnectors
Prelude.Read, Int -> GetConnectors -> ShowS
[GetConnectors] -> ShowS
GetConnectors -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetConnectors] -> ShowS
$cshowList :: [GetConnectors] -> ShowS
show :: GetConnectors -> String
$cshow :: GetConnectors -> String
showsPrec :: Int -> GetConnectors -> ShowS
$cshowsPrec :: Int -> GetConnectors -> ShowS
Prelude.Show, forall x. Rep GetConnectors x -> GetConnectors
forall x. GetConnectors -> Rep GetConnectors x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetConnectors x -> GetConnectors
$cfrom :: forall x. GetConnectors -> Rep GetConnectors x
Prelude.Generic)

-- |
-- Create a value of 'GetConnectors' 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:
--
-- 'maxResults', 'getConnectors_maxResults' - The maximum number of results to return in a single call. The default
-- value is 50. To retrieve the remaining results, make another call with
-- the returned @NextToken@ value.
--
-- 'nextToken', 'getConnectors_nextToken' - The token for the next set of results.
newGetConnectors ::
  GetConnectors
newGetConnectors :: GetConnectors
newGetConnectors =
  GetConnectors'
    { $sel:maxResults:GetConnectors' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:GetConnectors' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | The maximum number of results to return in a single call. The default
-- value is 50. To retrieve the remaining results, make another call with
-- the returned @NextToken@ value.
getConnectors_maxResults :: Lens.Lens' GetConnectors (Prelude.Maybe Prelude.Int)
getConnectors_maxResults :: Lens' GetConnectors (Maybe Int)
getConnectors_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConnectors' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:GetConnectors' :: GetConnectors -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: GetConnectors
s@GetConnectors' {} Maybe Int
a -> GetConnectors
s {$sel:maxResults:GetConnectors' :: Maybe Int
maxResults = Maybe Int
a} :: GetConnectors)

-- | The token for the next set of results.
getConnectors_nextToken :: Lens.Lens' GetConnectors (Prelude.Maybe Prelude.Text)
getConnectors_nextToken :: Lens' GetConnectors (Maybe Text)
getConnectors_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConnectors' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetConnectors' :: GetConnectors -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetConnectors
s@GetConnectors' {} Maybe Text
a -> GetConnectors
s {$sel:nextToken:GetConnectors' :: Maybe Text
nextToken = Maybe Text
a} :: GetConnectors)

instance Core.AWSPager GetConnectors where
  page :: GetConnectors -> AWSResponse GetConnectors -> Maybe GetConnectors
page GetConnectors
rq AWSResponse GetConnectors
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetConnectors
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetConnectorsResponse (Maybe Text)
getConnectorsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetConnectors
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetConnectorsResponse (Maybe [Connector])
getConnectorsResponse_connectorList
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ GetConnectors
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' GetConnectors (Maybe Text)
getConnectors_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetConnectors
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetConnectorsResponse (Maybe Text)
getConnectorsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest GetConnectors where
  type
    AWSResponse GetConnectors =
      GetConnectorsResponse
  request :: (Service -> Service) -> GetConnectors -> Request GetConnectors
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 GetConnectors
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetConnectors)))
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 [Connector] -> Maybe Text -> Int -> GetConnectorsResponse
GetConnectorsResponse'
            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
"connectorList" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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
"nextToken")
            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 GetConnectors where
  hashWithSalt :: Int -> GetConnectors -> Int
hashWithSalt Int
_salt GetConnectors' {Maybe Int
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:nextToken:GetConnectors' :: GetConnectors -> Maybe Text
$sel:maxResults:GetConnectors' :: GetConnectors -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

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

instance Data.ToHeaders GetConnectors where
  toHeaders :: GetConnectors -> 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
"AWSServerMigrationService_V2016_10_24.GetConnectors" ::
                          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 GetConnectors where
  toJSON :: GetConnectors -> Value
toJSON GetConnectors' {Maybe Int
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:nextToken:GetConnectors' :: GetConnectors -> Maybe Text
$sel:maxResults:GetConnectors' :: GetConnectors -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"maxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxResults,
            (Key
"nextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken
          ]
      )

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

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

-- | /See:/ 'newGetConnectorsResponse' smart constructor.
data GetConnectorsResponse = GetConnectorsResponse'
  { -- | Information about the registered connectors.
    GetConnectorsResponse -> Maybe [Connector]
connectorList :: Prelude.Maybe [Connector],
    -- | The token required to retrieve the next set of results. This value is
    -- null when there are no more results to return.
    GetConnectorsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetConnectorsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetConnectorsResponse -> GetConnectorsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetConnectorsResponse -> GetConnectorsResponse -> Bool
$c/= :: GetConnectorsResponse -> GetConnectorsResponse -> Bool
== :: GetConnectorsResponse -> GetConnectorsResponse -> Bool
$c== :: GetConnectorsResponse -> GetConnectorsResponse -> Bool
Prelude.Eq, ReadPrec [GetConnectorsResponse]
ReadPrec GetConnectorsResponse
Int -> ReadS GetConnectorsResponse
ReadS [GetConnectorsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetConnectorsResponse]
$creadListPrec :: ReadPrec [GetConnectorsResponse]
readPrec :: ReadPrec GetConnectorsResponse
$creadPrec :: ReadPrec GetConnectorsResponse
readList :: ReadS [GetConnectorsResponse]
$creadList :: ReadS [GetConnectorsResponse]
readsPrec :: Int -> ReadS GetConnectorsResponse
$creadsPrec :: Int -> ReadS GetConnectorsResponse
Prelude.Read, Int -> GetConnectorsResponse -> ShowS
[GetConnectorsResponse] -> ShowS
GetConnectorsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetConnectorsResponse] -> ShowS
$cshowList :: [GetConnectorsResponse] -> ShowS
show :: GetConnectorsResponse -> String
$cshow :: GetConnectorsResponse -> String
showsPrec :: Int -> GetConnectorsResponse -> ShowS
$cshowsPrec :: Int -> GetConnectorsResponse -> ShowS
Prelude.Show, forall x. Rep GetConnectorsResponse x -> GetConnectorsResponse
forall x. GetConnectorsResponse -> Rep GetConnectorsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetConnectorsResponse x -> GetConnectorsResponse
$cfrom :: forall x. GetConnectorsResponse -> Rep GetConnectorsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetConnectorsResponse' 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:
--
-- 'connectorList', 'getConnectorsResponse_connectorList' - Information about the registered connectors.
--
-- 'nextToken', 'getConnectorsResponse_nextToken' - The token required to retrieve the next set of results. This value is
-- null when there are no more results to return.
--
-- 'httpStatus', 'getConnectorsResponse_httpStatus' - The response's http status code.
newGetConnectorsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetConnectorsResponse
newGetConnectorsResponse :: Int -> GetConnectorsResponse
newGetConnectorsResponse Int
pHttpStatus_ =
  GetConnectorsResponse'
    { $sel:connectorList:GetConnectorsResponse' :: Maybe [Connector]
connectorList =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:GetConnectorsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetConnectorsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the registered connectors.
getConnectorsResponse_connectorList :: Lens.Lens' GetConnectorsResponse (Prelude.Maybe [Connector])
getConnectorsResponse_connectorList :: Lens' GetConnectorsResponse (Maybe [Connector])
getConnectorsResponse_connectorList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConnectorsResponse' {Maybe [Connector]
connectorList :: Maybe [Connector]
$sel:connectorList:GetConnectorsResponse' :: GetConnectorsResponse -> Maybe [Connector]
connectorList} -> Maybe [Connector]
connectorList) (\s :: GetConnectorsResponse
s@GetConnectorsResponse' {} Maybe [Connector]
a -> GetConnectorsResponse
s {$sel:connectorList:GetConnectorsResponse' :: Maybe [Connector]
connectorList = Maybe [Connector]
a} :: GetConnectorsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The token required to retrieve the next set of results. This value is
-- null when there are no more results to return.
getConnectorsResponse_nextToken :: Lens.Lens' GetConnectorsResponse (Prelude.Maybe Prelude.Text)
getConnectorsResponse_nextToken :: Lens' GetConnectorsResponse (Maybe Text)
getConnectorsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConnectorsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetConnectorsResponse' :: GetConnectorsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetConnectorsResponse
s@GetConnectorsResponse' {} Maybe Text
a -> GetConnectorsResponse
s {$sel:nextToken:GetConnectorsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetConnectorsResponse)

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

instance Prelude.NFData GetConnectorsResponse where
  rnf :: GetConnectorsResponse -> ()
rnf GetConnectorsResponse' {Int
Maybe [Connector]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
connectorList :: Maybe [Connector]
$sel:httpStatus:GetConnectorsResponse' :: GetConnectorsResponse -> Int
$sel:nextToken:GetConnectorsResponse' :: GetConnectorsResponse -> Maybe Text
$sel:connectorList:GetConnectorsResponse' :: GetConnectorsResponse -> Maybe [Connector]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Connector]
connectorList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus