packages feed

amazonka-transfer-2.0: gen/Amazonka/Transfer/ListServers.hs

{-# 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.ListServers
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists the file transfer protocol-enabled servers that are associated
-- with your Amazon Web Services account.
--
-- This operation returns paginated results.
module Amazonka.Transfer.ListServers
  ( -- * Creating a Request
    ListServers (..),
    newListServers,

    -- * Request Lenses
    listServers_maxResults,
    listServers_nextToken,

    -- * Destructuring the Response
    ListServersResponse (..),
    newListServersResponse,

    -- * Response Lenses
    listServersResponse_nextToken,
    listServersResponse_httpStatus,
    listServersResponse_servers,
  )
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:/ 'newListServers' smart constructor.
data ListServers = ListServers'
  { -- | Specifies the number of servers to return as a response to the
    -- @ListServers@ query.
    maxResults :: Prelude.Maybe Prelude.Natural,
    -- | When additional results are obtained from the @ListServers@ command, a
    -- @NextToken@ parameter is returned in the output. You can then pass the
    -- @NextToken@ parameter in a subsequent command to continue listing
    -- additional servers.
    nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListServers' 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', 'listServers_maxResults' - Specifies the number of servers to return as a response to the
-- @ListServers@ query.
--
-- 'nextToken', 'listServers_nextToken' - When additional results are obtained from the @ListServers@ command, a
-- @NextToken@ parameter is returned in the output. You can then pass the
-- @NextToken@ parameter in a subsequent command to continue listing
-- additional servers.
newListServers ::
  ListServers
newListServers =
  ListServers'
    { maxResults = Prelude.Nothing,
      nextToken = Prelude.Nothing
    }

-- | Specifies the number of servers to return as a response to the
-- @ListServers@ query.
listServers_maxResults :: Lens.Lens' ListServers (Prelude.Maybe Prelude.Natural)
listServers_maxResults = Lens.lens (\ListServers' {maxResults} -> maxResults) (\s@ListServers' {} a -> s {maxResults = a} :: ListServers)

-- | When additional results are obtained from the @ListServers@ command, a
-- @NextToken@ parameter is returned in the output. You can then pass the
-- @NextToken@ parameter in a subsequent command to continue listing
-- additional servers.
listServers_nextToken :: Lens.Lens' ListServers (Prelude.Maybe Prelude.Text)
listServers_nextToken = Lens.lens (\ListServers' {nextToken} -> nextToken) (\s@ListServers' {} a -> s {nextToken = a} :: ListServers)

instance Core.AWSPager ListServers where
  page rq rs
    | Core.stop
        ( rs
            Lens.^? listServersResponse_nextToken
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Core.stop (rs Lens.^. listServersResponse_servers) =
        Prelude.Nothing
    | Prelude.otherwise =
        Prelude.Just
          Prelude.$ rq
          Prelude.& listServers_nextToken
          Lens..~ rs
          Lens.^? listServersResponse_nextToken
          Prelude.. Lens._Just

instance Core.AWSRequest ListServers where
  type AWSResponse ListServers = ListServersResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          ListServersResponse'
            Prelude.<$> (x Data..?> "NextToken")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..?> "Servers" Core..!@ Prelude.mempty)
      )

instance Prelude.Hashable ListServers where
  hashWithSalt _salt ListServers' {..} =
    _salt
      `Prelude.hashWithSalt` maxResults
      `Prelude.hashWithSalt` nextToken

instance Prelude.NFData ListServers where
  rnf ListServers' {..} =
    Prelude.rnf maxResults
      `Prelude.seq` Prelude.rnf nextToken

instance Data.ToHeaders ListServers where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "TransferService.ListServers" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON ListServers where
  toJSON ListServers' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("MaxResults" Data..=) Prelude.<$> maxResults,
            ("NextToken" Data..=) Prelude.<$> nextToken
          ]
      )

instance Data.ToPath ListServers where
  toPath = Prelude.const "/"

instance Data.ToQuery ListServers where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newListServersResponse' smart constructor.
data ListServersResponse = ListServersResponse'
  { -- | When you can get additional results from the @ListServers@ operation, a
    -- @NextToken@ parameter is returned in the output. In a following command,
    -- you can pass in the @NextToken@ parameter to continue listing additional
    -- servers.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | An array of servers that were listed.
    servers :: [ListedServer]
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListServersResponse' 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:
--
-- 'nextToken', 'listServersResponse_nextToken' - When you can get additional results from the @ListServers@ operation, a
-- @NextToken@ parameter is returned in the output. In a following command,
-- you can pass in the @NextToken@ parameter to continue listing additional
-- servers.
--
-- 'httpStatus', 'listServersResponse_httpStatus' - The response's http status code.
--
-- 'servers', 'listServersResponse_servers' - An array of servers that were listed.
newListServersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListServersResponse
newListServersResponse pHttpStatus_ =
  ListServersResponse'
    { nextToken = Prelude.Nothing,
      httpStatus = pHttpStatus_,
      servers = Prelude.mempty
    }

-- | When you can get additional results from the @ListServers@ operation, a
-- @NextToken@ parameter is returned in the output. In a following command,
-- you can pass in the @NextToken@ parameter to continue listing additional
-- servers.
listServersResponse_nextToken :: Lens.Lens' ListServersResponse (Prelude.Maybe Prelude.Text)
listServersResponse_nextToken = Lens.lens (\ListServersResponse' {nextToken} -> nextToken) (\s@ListServersResponse' {} a -> s {nextToken = a} :: ListServersResponse)

-- | The response's http status code.
listServersResponse_httpStatus :: Lens.Lens' ListServersResponse Prelude.Int
listServersResponse_httpStatus = Lens.lens (\ListServersResponse' {httpStatus} -> httpStatus) (\s@ListServersResponse' {} a -> s {httpStatus = a} :: ListServersResponse)

-- | An array of servers that were listed.
listServersResponse_servers :: Lens.Lens' ListServersResponse [ListedServer]
listServersResponse_servers = Lens.lens (\ListServersResponse' {servers} -> servers) (\s@ListServersResponse' {} a -> s {servers = a} :: ListServersResponse) Prelude.. Lens.coerced

instance Prelude.NFData ListServersResponse where
  rnf ListServersResponse' {..} =
    Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf servers