{-# 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.Location.ListGeofences -- 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 geofences stored in a given geofence collection. -- -- This operation returns paginated results. module Amazonka.Location.ListGeofences ( -- * Creating a Request ListGeofences (..), newListGeofences, -- * Request Lenses listGeofences_maxResults, listGeofences_nextToken, listGeofences_collectionName, -- * Destructuring the Response ListGeofencesResponse (..), newListGeofencesResponse, -- * Response Lenses listGeofencesResponse_nextToken, listGeofencesResponse_httpStatus, listGeofencesResponse_entries, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.Location.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newListGeofences' smart constructor. data ListGeofences = ListGeofences' { -- | An optional limit for the number of geofences returned in a single call. -- -- Default value: @100@ maxResults :: Prelude.Maybe Prelude.Natural, -- | The pagination token specifying which page of results to return in the -- response. If no token is provided, the default page is the first page. -- -- Default value: @null@ nextToken :: Prelude.Maybe Prelude.Text, -- | The name of the geofence collection storing the list of geofences. collectionName :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListGeofences' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'maxResults', 'listGeofences_maxResults' - An optional limit for the number of geofences returned in a single call. -- -- Default value: @100@ -- -- 'nextToken', 'listGeofences_nextToken' - The pagination token specifying which page of results to return in the -- response. If no token is provided, the default page is the first page. -- -- Default value: @null@ -- -- 'collectionName', 'listGeofences_collectionName' - The name of the geofence collection storing the list of geofences. newListGeofences :: -- | 'collectionName' Prelude.Text -> ListGeofences newListGeofences pCollectionName_ = ListGeofences' { maxResults = Prelude.Nothing, nextToken = Prelude.Nothing, collectionName = pCollectionName_ } -- | An optional limit for the number of geofences returned in a single call. -- -- Default value: @100@ listGeofences_maxResults :: Lens.Lens' ListGeofences (Prelude.Maybe Prelude.Natural) listGeofences_maxResults = Lens.lens (\ListGeofences' {maxResults} -> maxResults) (\s@ListGeofences' {} a -> s {maxResults = a} :: ListGeofences) -- | The pagination token specifying which page of results to return in the -- response. If no token is provided, the default page is the first page. -- -- Default value: @null@ listGeofences_nextToken :: Lens.Lens' ListGeofences (Prelude.Maybe Prelude.Text) listGeofences_nextToken = Lens.lens (\ListGeofences' {nextToken} -> nextToken) (\s@ListGeofences' {} a -> s {nextToken = a} :: ListGeofences) -- | The name of the geofence collection storing the list of geofences. listGeofences_collectionName :: Lens.Lens' ListGeofences Prelude.Text listGeofences_collectionName = Lens.lens (\ListGeofences' {collectionName} -> collectionName) (\s@ListGeofences' {} a -> s {collectionName = a} :: ListGeofences) instance Core.AWSPager ListGeofences where page rq rs | Core.stop ( rs Lens.^? listGeofencesResponse_nextToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop (rs Lens.^. listGeofencesResponse_entries) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& listGeofences_nextToken Lens..~ rs Lens.^? listGeofencesResponse_nextToken Prelude.. Lens._Just instance Core.AWSRequest ListGeofences where type AWSResponse ListGeofences = ListGeofencesResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> ListGeofencesResponse' Prelude.<$> (x Data..?> "NextToken") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) Prelude.<*> (x Data..?> "Entries" Core..!@ Prelude.mempty) ) instance Prelude.Hashable ListGeofences where hashWithSalt _salt ListGeofences' {..} = _salt `Prelude.hashWithSalt` maxResults `Prelude.hashWithSalt` nextToken `Prelude.hashWithSalt` collectionName instance Prelude.NFData ListGeofences where rnf ListGeofences' {..} = Prelude.rnf maxResults `Prelude.seq` Prelude.rnf nextToken `Prelude.seq` Prelude.rnf collectionName instance Data.ToHeaders ListGeofences where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON ListGeofences where toJSON ListGeofences' {..} = Data.object ( Prelude.catMaybes [ ("MaxResults" Data..=) Prelude.<$> maxResults, ("NextToken" Data..=) Prelude.<$> nextToken ] ) instance Data.ToPath ListGeofences where toPath ListGeofences' {..} = Prelude.mconcat [ "/geofencing/v0/collections/", Data.toBS collectionName, "/list-geofences" ] instance Data.ToQuery ListGeofences where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newListGeofencesResponse' smart constructor. data ListGeofencesResponse = ListGeofencesResponse' { -- | A pagination token indicating there are additional pages available. You -- can use the token in a following request to fetch the next set of -- results. nextToken :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int, -- | Contains a list of geofences stored in the geofence collection. entries :: [ListGeofenceResponseEntry] } deriving (Prelude.Eq, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListGeofencesResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'nextToken', 'listGeofencesResponse_nextToken' - A pagination token indicating there are additional pages available. You -- can use the token in a following request to fetch the next set of -- results. -- -- 'httpStatus', 'listGeofencesResponse_httpStatus' - The response's http status code. -- -- 'entries', 'listGeofencesResponse_entries' - Contains a list of geofences stored in the geofence collection. newListGeofencesResponse :: -- | 'httpStatus' Prelude.Int -> ListGeofencesResponse newListGeofencesResponse pHttpStatus_ = ListGeofencesResponse' { nextToken = Prelude.Nothing, httpStatus = pHttpStatus_, entries = Prelude.mempty } -- | A pagination token indicating there are additional pages available. You -- can use the token in a following request to fetch the next set of -- results. listGeofencesResponse_nextToken :: Lens.Lens' ListGeofencesResponse (Prelude.Maybe Prelude.Text) listGeofencesResponse_nextToken = Lens.lens (\ListGeofencesResponse' {nextToken} -> nextToken) (\s@ListGeofencesResponse' {} a -> s {nextToken = a} :: ListGeofencesResponse) -- | The response's http status code. listGeofencesResponse_httpStatus :: Lens.Lens' ListGeofencesResponse Prelude.Int listGeofencesResponse_httpStatus = Lens.lens (\ListGeofencesResponse' {httpStatus} -> httpStatus) (\s@ListGeofencesResponse' {} a -> s {httpStatus = a} :: ListGeofencesResponse) -- | Contains a list of geofences stored in the geofence collection. listGeofencesResponse_entries :: Lens.Lens' ListGeofencesResponse [ListGeofenceResponseEntry] listGeofencesResponse_entries = Lens.lens (\ListGeofencesResponse' {entries} -> entries) (\s@ListGeofencesResponse' {} a -> s {entries = a} :: ListGeofencesResponse) Prelude.. Lens.coerced instance Prelude.NFData ListGeofencesResponse where rnf ListGeofencesResponse' {..} = Prelude.rnf nextToken `Prelude.seq` Prelude.rnf httpStatus `Prelude.seq` Prelude.rnf entries