{-# 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.AppStream.DescribeSessions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves a list that describes the streaming sessions for a specified
-- stack and fleet. If a UserId is provided for the stack and fleet, only
-- streaming sessions for that user are described. If an authentication
-- type is not provided, the default is to authenticate users using a
-- streaming URL.
--
-- This operation returns paginated results.
module Amazonka.AppStream.DescribeSessions
  ( -- * Creating a Request
    DescribeSessions (..),
    newDescribeSessions,

    -- * Request Lenses
    describeSessions_authenticationType,
    describeSessions_limit,
    describeSessions_nextToken,
    describeSessions_userId,
    describeSessions_stackName,
    describeSessions_fleetName,

    -- * Destructuring the Response
    DescribeSessionsResponse (..),
    newDescribeSessionsResponse,

    -- * Response Lenses
    describeSessionsResponse_nextToken,
    describeSessionsResponse_sessions,
    describeSessionsResponse_httpStatus,
  )
where

import Amazonka.AppStream.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

-- | /See:/ 'newDescribeSessions' smart constructor.
data DescribeSessions = DescribeSessions'
  { -- | The authentication method. Specify @API@ for a user authenticated using
    -- a streaming URL or @SAML@ for a SAML federated user. The default is to
    -- authenticate users using a streaming URL.
    DescribeSessions -> Maybe AuthenticationType
authenticationType :: Prelude.Maybe AuthenticationType,
    -- | The size of each page of results. The default value is 20 and the
    -- maximum value is 50.
    DescribeSessions -> Maybe Int
limit :: Prelude.Maybe Prelude.Int,
    -- | The pagination token to use to retrieve the next page of results for
    -- this operation. If this value is null, it retrieves the first page.
    DescribeSessions -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The user identifier (ID). If you specify a user ID, you must also
    -- specify the authentication type.
    DescribeSessions -> Maybe Text
userId :: Prelude.Maybe Prelude.Text,
    -- | The name of the stack. This value is case-sensitive.
    DescribeSessions -> Text
stackName :: Prelude.Text,
    -- | The name of the fleet. This value is case-sensitive.
    DescribeSessions -> Text
fleetName :: Prelude.Text
  }
  deriving (DescribeSessions -> DescribeSessions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSessions -> DescribeSessions -> Bool
$c/= :: DescribeSessions -> DescribeSessions -> Bool
== :: DescribeSessions -> DescribeSessions -> Bool
$c== :: DescribeSessions -> DescribeSessions -> Bool
Prelude.Eq, ReadPrec [DescribeSessions]
ReadPrec DescribeSessions
Int -> ReadS DescribeSessions
ReadS [DescribeSessions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSessions]
$creadListPrec :: ReadPrec [DescribeSessions]
readPrec :: ReadPrec DescribeSessions
$creadPrec :: ReadPrec DescribeSessions
readList :: ReadS [DescribeSessions]
$creadList :: ReadS [DescribeSessions]
readsPrec :: Int -> ReadS DescribeSessions
$creadsPrec :: Int -> ReadS DescribeSessions
Prelude.Read, Int -> DescribeSessions -> ShowS
[DescribeSessions] -> ShowS
DescribeSessions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSessions] -> ShowS
$cshowList :: [DescribeSessions] -> ShowS
show :: DescribeSessions -> String
$cshow :: DescribeSessions -> String
showsPrec :: Int -> DescribeSessions -> ShowS
$cshowsPrec :: Int -> DescribeSessions -> ShowS
Prelude.Show, forall x. Rep DescribeSessions x -> DescribeSessions
forall x. DescribeSessions -> Rep DescribeSessions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeSessions x -> DescribeSessions
$cfrom :: forall x. DescribeSessions -> Rep DescribeSessions x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSessions' 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:
--
-- 'authenticationType', 'describeSessions_authenticationType' - The authentication method. Specify @API@ for a user authenticated using
-- a streaming URL or @SAML@ for a SAML federated user. The default is to
-- authenticate users using a streaming URL.
--
-- 'limit', 'describeSessions_limit' - The size of each page of results. The default value is 20 and the
-- maximum value is 50.
--
-- 'nextToken', 'describeSessions_nextToken' - The pagination token to use to retrieve the next page of results for
-- this operation. If this value is null, it retrieves the first page.
--
-- 'userId', 'describeSessions_userId' - The user identifier (ID). If you specify a user ID, you must also
-- specify the authentication type.
--
-- 'stackName', 'describeSessions_stackName' - The name of the stack. This value is case-sensitive.
--
-- 'fleetName', 'describeSessions_fleetName' - The name of the fleet. This value is case-sensitive.
newDescribeSessions ::
  -- | 'stackName'
  Prelude.Text ->
  -- | 'fleetName'
  Prelude.Text ->
  DescribeSessions
newDescribeSessions :: Text -> Text -> DescribeSessions
newDescribeSessions Text
pStackName_ Text
pFleetName_ =
  DescribeSessions'
    { $sel:authenticationType:DescribeSessions' :: Maybe AuthenticationType
authenticationType =
        forall a. Maybe a
Prelude.Nothing,
      $sel:limit:DescribeSessions' :: Maybe Int
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeSessions' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:userId:DescribeSessions' :: Maybe Text
userId = forall a. Maybe a
Prelude.Nothing,
      $sel:stackName:DescribeSessions' :: Text
stackName = Text
pStackName_,
      $sel:fleetName:DescribeSessions' :: Text
fleetName = Text
pFleetName_
    }

-- | The authentication method. Specify @API@ for a user authenticated using
-- a streaming URL or @SAML@ for a SAML federated user. The default is to
-- authenticate users using a streaming URL.
describeSessions_authenticationType :: Lens.Lens' DescribeSessions (Prelude.Maybe AuthenticationType)
describeSessions_authenticationType :: Lens' DescribeSessions (Maybe AuthenticationType)
describeSessions_authenticationType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessions' {Maybe AuthenticationType
authenticationType :: Maybe AuthenticationType
$sel:authenticationType:DescribeSessions' :: DescribeSessions -> Maybe AuthenticationType
authenticationType} -> Maybe AuthenticationType
authenticationType) (\s :: DescribeSessions
s@DescribeSessions' {} Maybe AuthenticationType
a -> DescribeSessions
s {$sel:authenticationType:DescribeSessions' :: Maybe AuthenticationType
authenticationType = Maybe AuthenticationType
a} :: DescribeSessions)

-- | The size of each page of results. The default value is 20 and the
-- maximum value is 50.
describeSessions_limit :: Lens.Lens' DescribeSessions (Prelude.Maybe Prelude.Int)
describeSessions_limit :: Lens' DescribeSessions (Maybe Int)
describeSessions_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessions' {Maybe Int
limit :: Maybe Int
$sel:limit:DescribeSessions' :: DescribeSessions -> Maybe Int
limit} -> Maybe Int
limit) (\s :: DescribeSessions
s@DescribeSessions' {} Maybe Int
a -> DescribeSessions
s {$sel:limit:DescribeSessions' :: Maybe Int
limit = Maybe Int
a} :: DescribeSessions)

-- | The pagination token to use to retrieve the next page of results for
-- this operation. If this value is null, it retrieves the first page.
describeSessions_nextToken :: Lens.Lens' DescribeSessions (Prelude.Maybe Prelude.Text)
describeSessions_nextToken :: Lens' DescribeSessions (Maybe Text)
describeSessions_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessions' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeSessions' :: DescribeSessions -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeSessions
s@DescribeSessions' {} Maybe Text
a -> DescribeSessions
s {$sel:nextToken:DescribeSessions' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeSessions)

-- | The user identifier (ID). If you specify a user ID, you must also
-- specify the authentication type.
describeSessions_userId :: Lens.Lens' DescribeSessions (Prelude.Maybe Prelude.Text)
describeSessions_userId :: Lens' DescribeSessions (Maybe Text)
describeSessions_userId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessions' {Maybe Text
userId :: Maybe Text
$sel:userId:DescribeSessions' :: DescribeSessions -> Maybe Text
userId} -> Maybe Text
userId) (\s :: DescribeSessions
s@DescribeSessions' {} Maybe Text
a -> DescribeSessions
s {$sel:userId:DescribeSessions' :: Maybe Text
userId = Maybe Text
a} :: DescribeSessions)

-- | The name of the stack. This value is case-sensitive.
describeSessions_stackName :: Lens.Lens' DescribeSessions Prelude.Text
describeSessions_stackName :: Lens' DescribeSessions Text
describeSessions_stackName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessions' {Text
stackName :: Text
$sel:stackName:DescribeSessions' :: DescribeSessions -> Text
stackName} -> Text
stackName) (\s :: DescribeSessions
s@DescribeSessions' {} Text
a -> DescribeSessions
s {$sel:stackName:DescribeSessions' :: Text
stackName = Text
a} :: DescribeSessions)

-- | The name of the fleet. This value is case-sensitive.
describeSessions_fleetName :: Lens.Lens' DescribeSessions Prelude.Text
describeSessions_fleetName :: Lens' DescribeSessions Text
describeSessions_fleetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessions' {Text
fleetName :: Text
$sel:fleetName:DescribeSessions' :: DescribeSessions -> Text
fleetName} -> Text
fleetName) (\s :: DescribeSessions
s@DescribeSessions' {} Text
a -> DescribeSessions
s {$sel:fleetName:DescribeSessions' :: Text
fleetName = Text
a} :: DescribeSessions)

instance Core.AWSPager DescribeSessions where
  page :: DescribeSessions
-> AWSResponse DescribeSessions -> Maybe DescribeSessions
page DescribeSessions
rq AWSResponse DescribeSessions
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeSessions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSessionsResponse (Maybe Text)
describeSessionsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeSessions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSessionsResponse (Maybe [Session])
describeSessionsResponse_sessions
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeSessions
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeSessions (Maybe Text)
describeSessions_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeSessions
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSessionsResponse (Maybe Text)
describeSessionsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeSessions where
  type
    AWSResponse DescribeSessions =
      DescribeSessionsResponse
  request :: (Service -> Service)
-> DescribeSessions -> Request DescribeSessions
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeSessions
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeSessions)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Maybe [Session] -> Int -> DescribeSessionsResponse
DescribeSessionsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Sessions" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeSessions where
  hashWithSalt :: Int -> DescribeSessions -> Int
hashWithSalt Int
_salt DescribeSessions' {Maybe Int
Maybe Text
Maybe AuthenticationType
Text
fleetName :: Text
stackName :: Text
userId :: Maybe Text
nextToken :: Maybe Text
limit :: Maybe Int
authenticationType :: Maybe AuthenticationType
$sel:fleetName:DescribeSessions' :: DescribeSessions -> Text
$sel:stackName:DescribeSessions' :: DescribeSessions -> Text
$sel:userId:DescribeSessions' :: DescribeSessions -> Maybe Text
$sel:nextToken:DescribeSessions' :: DescribeSessions -> Maybe Text
$sel:limit:DescribeSessions' :: DescribeSessions -> Maybe Int
$sel:authenticationType:DescribeSessions' :: DescribeSessions -> Maybe AuthenticationType
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AuthenticationType
authenticationType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
userId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
stackName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
fleetName

instance Prelude.NFData DescribeSessions where
  rnf :: DescribeSessions -> ()
rnf DescribeSessions' {Maybe Int
Maybe Text
Maybe AuthenticationType
Text
fleetName :: Text
stackName :: Text
userId :: Maybe Text
nextToken :: Maybe Text
limit :: Maybe Int
authenticationType :: Maybe AuthenticationType
$sel:fleetName:DescribeSessions' :: DescribeSessions -> Text
$sel:stackName:DescribeSessions' :: DescribeSessions -> Text
$sel:userId:DescribeSessions' :: DescribeSessions -> Maybe Text
$sel:nextToken:DescribeSessions' :: DescribeSessions -> Maybe Text
$sel:limit:DescribeSessions' :: DescribeSessions -> Maybe Int
$sel:authenticationType:DescribeSessions' :: DescribeSessions -> Maybe AuthenticationType
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AuthenticationType
authenticationType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
limit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
userId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
stackName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
fleetName

instance Data.ToHeaders DescribeSessions where
  toHeaders :: DescribeSessions -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"PhotonAdminProxyService.DescribeSessions" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeSessions where
  toJSON :: DescribeSessions -> Value
toJSON DescribeSessions' {Maybe Int
Maybe Text
Maybe AuthenticationType
Text
fleetName :: Text
stackName :: Text
userId :: Maybe Text
nextToken :: Maybe Text
limit :: Maybe Int
authenticationType :: Maybe AuthenticationType
$sel:fleetName:DescribeSessions' :: DescribeSessions -> Text
$sel:stackName:DescribeSessions' :: DescribeSessions -> Text
$sel:userId:DescribeSessions' :: DescribeSessions -> Maybe Text
$sel:nextToken:DescribeSessions' :: DescribeSessions -> Maybe Text
$sel:limit:DescribeSessions' :: DescribeSessions -> Maybe Int
$sel:authenticationType:DescribeSessions' :: DescribeSessions -> Maybe AuthenticationType
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AuthenticationType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AuthenticationType
authenticationType,
            (Key
"Limit" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
limit,
            (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"UserId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
userId,
            forall a. a -> Maybe a
Prelude.Just (Key
"StackName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
stackName),
            forall a. a -> Maybe a
Prelude.Just (Key
"FleetName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
fleetName)
          ]
      )

instance Data.ToPath DescribeSessions where
  toPath :: DescribeSessions -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeSessions where
  toQuery :: DescribeSessions -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeSessionsResponse' smart constructor.
data DescribeSessionsResponse = DescribeSessionsResponse'
  { -- | The pagination token to use to retrieve the next page of results for
    -- this operation. If there are no more pages, this value is null.
    DescribeSessionsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Information about the streaming sessions.
    DescribeSessionsResponse -> Maybe [Session]
sessions :: Prelude.Maybe [Session],
    -- | The response's http status code.
    DescribeSessionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeSessionsResponse -> DescribeSessionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSessionsResponse -> DescribeSessionsResponse -> Bool
$c/= :: DescribeSessionsResponse -> DescribeSessionsResponse -> Bool
== :: DescribeSessionsResponse -> DescribeSessionsResponse -> Bool
$c== :: DescribeSessionsResponse -> DescribeSessionsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeSessionsResponse]
ReadPrec DescribeSessionsResponse
Int -> ReadS DescribeSessionsResponse
ReadS [DescribeSessionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSessionsResponse]
$creadListPrec :: ReadPrec [DescribeSessionsResponse]
readPrec :: ReadPrec DescribeSessionsResponse
$creadPrec :: ReadPrec DescribeSessionsResponse
readList :: ReadS [DescribeSessionsResponse]
$creadList :: ReadS [DescribeSessionsResponse]
readsPrec :: Int -> ReadS DescribeSessionsResponse
$creadsPrec :: Int -> ReadS DescribeSessionsResponse
Prelude.Read, Int -> DescribeSessionsResponse -> ShowS
[DescribeSessionsResponse] -> ShowS
DescribeSessionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSessionsResponse] -> ShowS
$cshowList :: [DescribeSessionsResponse] -> ShowS
show :: DescribeSessionsResponse -> String
$cshow :: DescribeSessionsResponse -> String
showsPrec :: Int -> DescribeSessionsResponse -> ShowS
$cshowsPrec :: Int -> DescribeSessionsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeSessionsResponse x -> DescribeSessionsResponse
forall x.
DescribeSessionsResponse -> Rep DescribeSessionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSessionsResponse x -> DescribeSessionsResponse
$cfrom :: forall x.
DescribeSessionsResponse -> Rep DescribeSessionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSessionsResponse' 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', 'describeSessionsResponse_nextToken' - The pagination token to use to retrieve the next page of results for
-- this operation. If there are no more pages, this value is null.
--
-- 'sessions', 'describeSessionsResponse_sessions' - Information about the streaming sessions.
--
-- 'httpStatus', 'describeSessionsResponse_httpStatus' - The response's http status code.
newDescribeSessionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeSessionsResponse
newDescribeSessionsResponse :: Int -> DescribeSessionsResponse
newDescribeSessionsResponse Int
pHttpStatus_ =
  DescribeSessionsResponse'
    { $sel:nextToken:DescribeSessionsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:sessions:DescribeSessionsResponse' :: Maybe [Session]
sessions = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeSessionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The pagination token to use to retrieve the next page of results for
-- this operation. If there are no more pages, this value is null.
describeSessionsResponse_nextToken :: Lens.Lens' DescribeSessionsResponse (Prelude.Maybe Prelude.Text)
describeSessionsResponse_nextToken :: Lens' DescribeSessionsResponse (Maybe Text)
describeSessionsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessionsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeSessionsResponse' :: DescribeSessionsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeSessionsResponse
s@DescribeSessionsResponse' {} Maybe Text
a -> DescribeSessionsResponse
s {$sel:nextToken:DescribeSessionsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeSessionsResponse)

-- | Information about the streaming sessions.
describeSessionsResponse_sessions :: Lens.Lens' DescribeSessionsResponse (Prelude.Maybe [Session])
describeSessionsResponse_sessions :: Lens' DescribeSessionsResponse (Maybe [Session])
describeSessionsResponse_sessions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessionsResponse' {Maybe [Session]
sessions :: Maybe [Session]
$sel:sessions:DescribeSessionsResponse' :: DescribeSessionsResponse -> Maybe [Session]
sessions} -> Maybe [Session]
sessions) (\s :: DescribeSessionsResponse
s@DescribeSessionsResponse' {} Maybe [Session]
a -> DescribeSessionsResponse
s {$sel:sessions:DescribeSessionsResponse' :: Maybe [Session]
sessions = Maybe [Session]
a} :: DescribeSessionsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
describeSessionsResponse_httpStatus :: Lens.Lens' DescribeSessionsResponse Prelude.Int
describeSessionsResponse_httpStatus :: Lens' DescribeSessionsResponse Int
describeSessionsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSessionsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeSessionsResponse' :: DescribeSessionsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeSessionsResponse
s@DescribeSessionsResponse' {} Int
a -> DescribeSessionsResponse
s {$sel:httpStatus:DescribeSessionsResponse' :: Int
httpStatus = Int
a} :: DescribeSessionsResponse)

instance Prelude.NFData DescribeSessionsResponse where
  rnf :: DescribeSessionsResponse -> ()
rnf DescribeSessionsResponse' {Int
Maybe [Session]
Maybe Text
httpStatus :: Int
sessions :: Maybe [Session]
nextToken :: Maybe Text
$sel:httpStatus:DescribeSessionsResponse' :: DescribeSessionsResponse -> Int
$sel:sessions:DescribeSessionsResponse' :: DescribeSessionsResponse -> Maybe [Session]
$sel:nextToken:DescribeSessionsResponse' :: DescribeSessionsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Session]
sessions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus