packages feed

amazonka-managedblockchain-2.0: gen/Amazonka/ManagedBlockChain/ListProposals.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.ManagedBlockChain.ListProposals
-- 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 a list of proposals for the network.
--
-- Applies only to Hyperledger Fabric.
module Amazonka.ManagedBlockChain.ListProposals
  ( -- * Creating a Request
    ListProposals (..),
    newListProposals,

    -- * Request Lenses
    listProposals_maxResults,
    listProposals_nextToken,
    listProposals_networkId,

    -- * Destructuring the Response
    ListProposalsResponse (..),
    newListProposalsResponse,

    -- * Response Lenses
    listProposalsResponse_nextToken,
    listProposalsResponse_proposals,
    listProposalsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListProposals' smart constructor.
data ListProposals = ListProposals'
  { -- | The maximum number of proposals to return.
    maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The pagination token that indicates the next set of results to retrieve.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier of the network.
    networkId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListProposals' 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', 'listProposals_maxResults' - The maximum number of proposals to return.
--
-- 'nextToken', 'listProposals_nextToken' - The pagination token that indicates the next set of results to retrieve.
--
-- 'networkId', 'listProposals_networkId' - The unique identifier of the network.
newListProposals ::
  -- | 'networkId'
  Prelude.Text ->
  ListProposals
newListProposals pNetworkId_ =
  ListProposals'
    { maxResults = Prelude.Nothing,
      nextToken = Prelude.Nothing,
      networkId = pNetworkId_
    }

-- | The maximum number of proposals to return.
listProposals_maxResults :: Lens.Lens' ListProposals (Prelude.Maybe Prelude.Natural)
listProposals_maxResults = Lens.lens (\ListProposals' {maxResults} -> maxResults) (\s@ListProposals' {} a -> s {maxResults = a} :: ListProposals)

-- | The pagination token that indicates the next set of results to retrieve.
listProposals_nextToken :: Lens.Lens' ListProposals (Prelude.Maybe Prelude.Text)
listProposals_nextToken = Lens.lens (\ListProposals' {nextToken} -> nextToken) (\s@ListProposals' {} a -> s {nextToken = a} :: ListProposals)

-- | The unique identifier of the network.
listProposals_networkId :: Lens.Lens' ListProposals Prelude.Text
listProposals_networkId = Lens.lens (\ListProposals' {networkId} -> networkId) (\s@ListProposals' {} a -> s {networkId = a} :: ListProposals)

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

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

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

instance Data.ToHeaders ListProposals where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath ListProposals where
  toPath ListProposals' {..} =
    Prelude.mconcat
      ["/networks/", Data.toBS networkId, "/proposals"]

instance Data.ToQuery ListProposals where
  toQuery ListProposals' {..} =
    Prelude.mconcat
      [ "maxResults" Data.=: maxResults,
        "nextToken" Data.=: nextToken
      ]

-- | /See:/ 'newListProposalsResponse' smart constructor.
data ListProposalsResponse = ListProposalsResponse'
  { -- | The pagination token that indicates the next set of results to retrieve.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The summary of each proposal made on the network.
    proposals :: Prelude.Maybe [ProposalSummary],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListProposalsResponse' 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', 'listProposalsResponse_nextToken' - The pagination token that indicates the next set of results to retrieve.
--
-- 'proposals', 'listProposalsResponse_proposals' - The summary of each proposal made on the network.
--
-- 'httpStatus', 'listProposalsResponse_httpStatus' - The response's http status code.
newListProposalsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListProposalsResponse
newListProposalsResponse pHttpStatus_ =
  ListProposalsResponse'
    { nextToken = Prelude.Nothing,
      proposals = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The pagination token that indicates the next set of results to retrieve.
listProposalsResponse_nextToken :: Lens.Lens' ListProposalsResponse (Prelude.Maybe Prelude.Text)
listProposalsResponse_nextToken = Lens.lens (\ListProposalsResponse' {nextToken} -> nextToken) (\s@ListProposalsResponse' {} a -> s {nextToken = a} :: ListProposalsResponse)

-- | The summary of each proposal made on the network.
listProposalsResponse_proposals :: Lens.Lens' ListProposalsResponse (Prelude.Maybe [ProposalSummary])
listProposalsResponse_proposals = Lens.lens (\ListProposalsResponse' {proposals} -> proposals) (\s@ListProposalsResponse' {} a -> s {proposals = a} :: ListProposalsResponse) Prelude.. Lens.mapping Lens.coerced

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

instance Prelude.NFData ListProposalsResponse where
  rnf ListProposalsResponse' {..} =
    Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf proposals
      `Prelude.seq` Prelude.rnf httpStatus