packages feed

amazonka-cloudfront-2.0: gen/Amazonka/CloudFront/ListInvalidations.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.CloudFront.ListInvalidations
-- 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 invalidation batches.
--
-- This operation returns paginated results.
module Amazonka.CloudFront.ListInvalidations
  ( -- * Creating a Request
    ListInvalidations (..),
    newListInvalidations,

    -- * Request Lenses
    listInvalidations_marker,
    listInvalidations_maxItems,
    listInvalidations_distributionId,

    -- * Destructuring the Response
    ListInvalidationsResponse (..),
    newListInvalidationsResponse,

    -- * Response Lenses
    listInvalidationsResponse_httpStatus,
    listInvalidationsResponse_invalidationList,
  )
where

import Amazonka.CloudFront.Types
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

-- | The request to list invalidations.
--
-- /See:/ 'newListInvalidations' smart constructor.
data ListInvalidations = ListInvalidations'
  { -- | Use this parameter when paginating results to indicate where to begin in
    -- your list of invalidation batches. Because the results are returned in
    -- decreasing order from most recent to oldest, the most recent results are
    -- on the first page, the second page will contain earlier results, and so
    -- on. To get the next page of results, set @Marker@ to the value of the
    -- @NextMarker@ from the current page\'s response. This value is the same
    -- as the ID of the last invalidation batch on that page.
    marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of invalidation batches that you want in the response
    -- body.
    maxItems :: Prelude.Maybe Prelude.Text,
    -- | The distribution\'s ID.
    distributionId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListInvalidations' 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:
--
-- 'marker', 'listInvalidations_marker' - Use this parameter when paginating results to indicate where to begin in
-- your list of invalidation batches. Because the results are returned in
-- decreasing order from most recent to oldest, the most recent results are
-- on the first page, the second page will contain earlier results, and so
-- on. To get the next page of results, set @Marker@ to the value of the
-- @NextMarker@ from the current page\'s response. This value is the same
-- as the ID of the last invalidation batch on that page.
--
-- 'maxItems', 'listInvalidations_maxItems' - The maximum number of invalidation batches that you want in the response
-- body.
--
-- 'distributionId', 'listInvalidations_distributionId' - The distribution\'s ID.
newListInvalidations ::
  -- | 'distributionId'
  Prelude.Text ->
  ListInvalidations
newListInvalidations pDistributionId_ =
  ListInvalidations'
    { marker = Prelude.Nothing,
      maxItems = Prelude.Nothing,
      distributionId = pDistributionId_
    }

-- | Use this parameter when paginating results to indicate where to begin in
-- your list of invalidation batches. Because the results are returned in
-- decreasing order from most recent to oldest, the most recent results are
-- on the first page, the second page will contain earlier results, and so
-- on. To get the next page of results, set @Marker@ to the value of the
-- @NextMarker@ from the current page\'s response. This value is the same
-- as the ID of the last invalidation batch on that page.
listInvalidations_marker :: Lens.Lens' ListInvalidations (Prelude.Maybe Prelude.Text)
listInvalidations_marker = Lens.lens (\ListInvalidations' {marker} -> marker) (\s@ListInvalidations' {} a -> s {marker = a} :: ListInvalidations)

-- | The maximum number of invalidation batches that you want in the response
-- body.
listInvalidations_maxItems :: Lens.Lens' ListInvalidations (Prelude.Maybe Prelude.Text)
listInvalidations_maxItems = Lens.lens (\ListInvalidations' {maxItems} -> maxItems) (\s@ListInvalidations' {} a -> s {maxItems = a} :: ListInvalidations)

-- | The distribution\'s ID.
listInvalidations_distributionId :: Lens.Lens' ListInvalidations Prelude.Text
listInvalidations_distributionId = Lens.lens (\ListInvalidations' {distributionId} -> distributionId) (\s@ListInvalidations' {} a -> s {distributionId = a} :: ListInvalidations)

instance Core.AWSPager ListInvalidations where
  page rq rs
    | Core.stop
        ( rs
            Lens.^. listInvalidationsResponse_invalidationList
            Prelude.. invalidationList_isTruncated
        ) =
        Prelude.Nothing
    | Prelude.isNothing
        ( rs
            Lens.^? listInvalidationsResponse_invalidationList
            Prelude.. invalidationList_nextMarker
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Prelude.otherwise =
        Prelude.Just
          Prelude.$ rq
          Prelude.& listInvalidations_marker
          Lens..~ rs
          Lens.^? listInvalidationsResponse_invalidationList
          Prelude.. invalidationList_nextMarker
          Prelude.. Lens._Just

instance Core.AWSRequest ListInvalidations where
  type
    AWSResponse ListInvalidations =
      ListInvalidationsResponse
  request overrides =
    Request.get (overrides defaultService)
  response =
    Response.receiveXML
      ( \s h x ->
          ListInvalidationsResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (Data.parseXML x)
      )

instance Prelude.Hashable ListInvalidations where
  hashWithSalt _salt ListInvalidations' {..} =
    _salt
      `Prelude.hashWithSalt` marker
      `Prelude.hashWithSalt` maxItems
      `Prelude.hashWithSalt` distributionId

instance Prelude.NFData ListInvalidations where
  rnf ListInvalidations' {..} =
    Prelude.rnf marker
      `Prelude.seq` Prelude.rnf maxItems
      `Prelude.seq` Prelude.rnf distributionId

instance Data.ToHeaders ListInvalidations where
  toHeaders = Prelude.const Prelude.mempty

instance Data.ToPath ListInvalidations where
  toPath ListInvalidations' {..} =
    Prelude.mconcat
      [ "/2020-05-31/distribution/",
        Data.toBS distributionId,
        "/invalidation"
      ]

instance Data.ToQuery ListInvalidations where
  toQuery ListInvalidations' {..} =
    Prelude.mconcat
      [ "Marker" Data.=: marker,
        "MaxItems" Data.=: maxItems
      ]

-- | The returned result of the corresponding request.
--
-- /See:/ 'newListInvalidationsResponse' smart constructor.
data ListInvalidationsResponse = ListInvalidationsResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | Information about invalidation batches.
    invalidationList :: InvalidationList
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListInvalidationsResponse' 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', 'listInvalidationsResponse_httpStatus' - The response's http status code.
--
-- 'invalidationList', 'listInvalidationsResponse_invalidationList' - Information about invalidation batches.
newListInvalidationsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'invalidationList'
  InvalidationList ->
  ListInvalidationsResponse
newListInvalidationsResponse
  pHttpStatus_
  pInvalidationList_ =
    ListInvalidationsResponse'
      { httpStatus =
          pHttpStatus_,
        invalidationList = pInvalidationList_
      }

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

-- | Information about invalidation batches.
listInvalidationsResponse_invalidationList :: Lens.Lens' ListInvalidationsResponse InvalidationList
listInvalidationsResponse_invalidationList = Lens.lens (\ListInvalidationsResponse' {invalidationList} -> invalidationList) (\s@ListInvalidationsResponse' {} a -> s {invalidationList = a} :: ListInvalidationsResponse)

instance Prelude.NFData ListInvalidationsResponse where
  rnf ListInvalidationsResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf invalidationList