{-# 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.IVS.ListStreams -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Gets summary information about live streams in your account, in the -- Amazon Web Services region where the API request is processed. -- -- This operation returns paginated results. module Amazonka.IVS.ListStreams ( -- * Creating a Request ListStreams (..), newListStreams, -- * Request Lenses listStreams_filterBy, listStreams_maxResults, listStreams_nextToken, -- * Destructuring the Response ListStreamsResponse (..), newListStreamsResponse, -- * Response Lenses listStreamsResponse_nextToken, listStreamsResponse_httpStatus, listStreamsResponse_streams, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.IVS.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newListStreams' smart constructor. data ListStreams = ListStreams' { -- | Filters the stream list to match the specified criterion. filterBy :: Prelude.Maybe StreamFilters, -- | Maximum number of streams to return. Default: 100. maxResults :: Prelude.Maybe Prelude.Natural, -- | The first stream to retrieve. This is used for pagination; see the -- @nextToken@ response field. nextToken :: Prelude.Maybe Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListStreams' 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: -- -- 'filterBy', 'listStreams_filterBy' - Filters the stream list to match the specified criterion. -- -- 'maxResults', 'listStreams_maxResults' - Maximum number of streams to return. Default: 100. -- -- 'nextToken', 'listStreams_nextToken' - The first stream to retrieve. This is used for pagination; see the -- @nextToken@ response field. newListStreams :: ListStreams newListStreams = ListStreams' { filterBy = Prelude.Nothing, maxResults = Prelude.Nothing, nextToken = Prelude.Nothing } -- | Filters the stream list to match the specified criterion. listStreams_filterBy :: Lens.Lens' ListStreams (Prelude.Maybe StreamFilters) listStreams_filterBy = Lens.lens (\ListStreams' {filterBy} -> filterBy) (\s@ListStreams' {} a -> s {filterBy = a} :: ListStreams) -- | Maximum number of streams to return. Default: 100. listStreams_maxResults :: Lens.Lens' ListStreams (Prelude.Maybe Prelude.Natural) listStreams_maxResults = Lens.lens (\ListStreams' {maxResults} -> maxResults) (\s@ListStreams' {} a -> s {maxResults = a} :: ListStreams) -- | The first stream to retrieve. This is used for pagination; see the -- @nextToken@ response field. listStreams_nextToken :: Lens.Lens' ListStreams (Prelude.Maybe Prelude.Text) listStreams_nextToken = Lens.lens (\ListStreams' {nextToken} -> nextToken) (\s@ListStreams' {} a -> s {nextToken = a} :: ListStreams) instance Core.AWSPager ListStreams where page rq rs | Core.stop ( rs Lens.^? listStreamsResponse_nextToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop (rs Lens.^. listStreamsResponse_streams) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& listStreams_nextToken Lens..~ rs Lens.^? listStreamsResponse_nextToken Prelude.. Lens._Just instance Core.AWSRequest ListStreams where type AWSResponse ListStreams = ListStreamsResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> ListStreamsResponse' Prelude.<$> (x Data..?> "nextToken") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) Prelude.<*> (x Data..?> "streams" Core..!@ Prelude.mempty) ) instance Prelude.Hashable ListStreams where hashWithSalt _salt ListStreams' {..} = _salt `Prelude.hashWithSalt` filterBy `Prelude.hashWithSalt` maxResults `Prelude.hashWithSalt` nextToken instance Prelude.NFData ListStreams where rnf ListStreams' {..} = Prelude.rnf filterBy `Prelude.seq` Prelude.rnf maxResults `Prelude.seq` Prelude.rnf nextToken instance Data.ToHeaders ListStreams where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON ListStreams where toJSON ListStreams' {..} = Data.object ( Prelude.catMaybes [ ("filterBy" Data..=) Prelude.<$> filterBy, ("maxResults" Data..=) Prelude.<$> maxResults, ("nextToken" Data..=) Prelude.<$> nextToken ] ) instance Data.ToPath ListStreams where toPath = Prelude.const "/ListStreams" instance Data.ToQuery ListStreams where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newListStreamsResponse' smart constructor. data ListStreamsResponse = ListStreamsResponse' { -- | If there are more streams than @maxResults@, use @nextToken@ in the -- request to get the next set. nextToken :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int, -- | List of streams. streams :: [StreamSummary] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListStreamsResponse' 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', 'listStreamsResponse_nextToken' - If there are more streams than @maxResults@, use @nextToken@ in the -- request to get the next set. -- -- 'httpStatus', 'listStreamsResponse_httpStatus' - The response's http status code. -- -- 'streams', 'listStreamsResponse_streams' - List of streams. newListStreamsResponse :: -- | 'httpStatus' Prelude.Int -> ListStreamsResponse newListStreamsResponse pHttpStatus_ = ListStreamsResponse' { nextToken = Prelude.Nothing, httpStatus = pHttpStatus_, streams = Prelude.mempty } -- | If there are more streams than @maxResults@, use @nextToken@ in the -- request to get the next set. listStreamsResponse_nextToken :: Lens.Lens' ListStreamsResponse (Prelude.Maybe Prelude.Text) listStreamsResponse_nextToken = Lens.lens (\ListStreamsResponse' {nextToken} -> nextToken) (\s@ListStreamsResponse' {} a -> s {nextToken = a} :: ListStreamsResponse) -- | The response's http status code. listStreamsResponse_httpStatus :: Lens.Lens' ListStreamsResponse Prelude.Int listStreamsResponse_httpStatus = Lens.lens (\ListStreamsResponse' {httpStatus} -> httpStatus) (\s@ListStreamsResponse' {} a -> s {httpStatus = a} :: ListStreamsResponse) -- | List of streams. listStreamsResponse_streams :: Lens.Lens' ListStreamsResponse [StreamSummary] listStreamsResponse_streams = Lens.lens (\ListStreamsResponse' {streams} -> streams) (\s@ListStreamsResponse' {} a -> s {streams = a} :: ListStreamsResponse) Prelude.. Lens.coerced instance Prelude.NFData ListStreamsResponse where rnf ListStreamsResponse' {..} = Prelude.rnf nextToken `Prelude.seq` Prelude.rnf httpStatus `Prelude.seq` Prelude.rnf streams