{-# 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.ListAssociatedFleets
-- 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 the name of the fleet that is associated with the specified
-- stack.
--
-- This operation returns paginated results.
module Amazonka.AppStream.ListAssociatedFleets
  ( -- * Creating a Request
    ListAssociatedFleets (..),
    newListAssociatedFleets,

    -- * Request Lenses
    listAssociatedFleets_nextToken,
    listAssociatedFleets_stackName,

    -- * Destructuring the Response
    ListAssociatedFleetsResponse (..),
    newListAssociatedFleetsResponse,

    -- * Response Lenses
    listAssociatedFleetsResponse_names,
    listAssociatedFleetsResponse_nextToken,
    listAssociatedFleetsResponse_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:/ 'newListAssociatedFleets' smart constructor.
data ListAssociatedFleets = ListAssociatedFleets'
  { -- | 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.
    ListAssociatedFleets -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The name of the stack.
    ListAssociatedFleets -> Text
stackName :: Prelude.Text
  }
  deriving (ListAssociatedFleets -> ListAssociatedFleets -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAssociatedFleets -> ListAssociatedFleets -> Bool
$c/= :: ListAssociatedFleets -> ListAssociatedFleets -> Bool
== :: ListAssociatedFleets -> ListAssociatedFleets -> Bool
$c== :: ListAssociatedFleets -> ListAssociatedFleets -> Bool
Prelude.Eq, ReadPrec [ListAssociatedFleets]
ReadPrec ListAssociatedFleets
Int -> ReadS ListAssociatedFleets
ReadS [ListAssociatedFleets]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAssociatedFleets]
$creadListPrec :: ReadPrec [ListAssociatedFleets]
readPrec :: ReadPrec ListAssociatedFleets
$creadPrec :: ReadPrec ListAssociatedFleets
readList :: ReadS [ListAssociatedFleets]
$creadList :: ReadS [ListAssociatedFleets]
readsPrec :: Int -> ReadS ListAssociatedFleets
$creadsPrec :: Int -> ReadS ListAssociatedFleets
Prelude.Read, Int -> ListAssociatedFleets -> ShowS
[ListAssociatedFleets] -> ShowS
ListAssociatedFleets -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAssociatedFleets] -> ShowS
$cshowList :: [ListAssociatedFleets] -> ShowS
show :: ListAssociatedFleets -> String
$cshow :: ListAssociatedFleets -> String
showsPrec :: Int -> ListAssociatedFleets -> ShowS
$cshowsPrec :: Int -> ListAssociatedFleets -> ShowS
Prelude.Show, forall x. Rep ListAssociatedFleets x -> ListAssociatedFleets
forall x. ListAssociatedFleets -> Rep ListAssociatedFleets x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListAssociatedFleets x -> ListAssociatedFleets
$cfrom :: forall x. ListAssociatedFleets -> Rep ListAssociatedFleets x
Prelude.Generic)

-- |
-- Create a value of 'ListAssociatedFleets' 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', 'listAssociatedFleets_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.
--
-- 'stackName', 'listAssociatedFleets_stackName' - The name of the stack.
newListAssociatedFleets ::
  -- | 'stackName'
  Prelude.Text ->
  ListAssociatedFleets
newListAssociatedFleets :: Text -> ListAssociatedFleets
newListAssociatedFleets Text
pStackName_ =
  ListAssociatedFleets'
    { $sel:nextToken:ListAssociatedFleets' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:stackName:ListAssociatedFleets' :: Text
stackName = Text
pStackName_
    }

-- | 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.
listAssociatedFleets_nextToken :: Lens.Lens' ListAssociatedFleets (Prelude.Maybe Prelude.Text)
listAssociatedFleets_nextToken :: Lens' ListAssociatedFleets (Maybe Text)
listAssociatedFleets_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssociatedFleets' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAssociatedFleets' :: ListAssociatedFleets -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAssociatedFleets
s@ListAssociatedFleets' {} Maybe Text
a -> ListAssociatedFleets
s {$sel:nextToken:ListAssociatedFleets' :: Maybe Text
nextToken = Maybe Text
a} :: ListAssociatedFleets)

-- | The name of the stack.
listAssociatedFleets_stackName :: Lens.Lens' ListAssociatedFleets Prelude.Text
listAssociatedFleets_stackName :: Lens' ListAssociatedFleets Text
listAssociatedFleets_stackName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssociatedFleets' {Text
stackName :: Text
$sel:stackName:ListAssociatedFleets' :: ListAssociatedFleets -> Text
stackName} -> Text
stackName) (\s :: ListAssociatedFleets
s@ListAssociatedFleets' {} Text
a -> ListAssociatedFleets
s {$sel:stackName:ListAssociatedFleets' :: Text
stackName = Text
a} :: ListAssociatedFleets)

instance Core.AWSPager ListAssociatedFleets where
  page :: ListAssociatedFleets
-> AWSResponse ListAssociatedFleets -> Maybe ListAssociatedFleets
page ListAssociatedFleets
rq AWSResponse ListAssociatedFleets
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListAssociatedFleets
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListAssociatedFleetsResponse (Maybe Text)
listAssociatedFleetsResponse_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 ListAssociatedFleets
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListAssociatedFleetsResponse (Maybe [Text])
listAssociatedFleetsResponse_names
            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.$ ListAssociatedFleets
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListAssociatedFleets (Maybe Text)
listAssociatedFleets_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListAssociatedFleets
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListAssociatedFleetsResponse (Maybe Text)
listAssociatedFleetsResponse_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 ListAssociatedFleets where
  type
    AWSResponse ListAssociatedFleets =
      ListAssociatedFleetsResponse
  request :: (Service -> Service)
-> ListAssociatedFleets -> Request ListAssociatedFleets
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 ListAssociatedFleets
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListAssociatedFleets)))
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 Text -> Int -> ListAssociatedFleetsResponse
ListAssociatedFleetsResponse'
            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
"Names" 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.<*> (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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ListAssociatedFleets where
  hashWithSalt :: Int -> ListAssociatedFleets -> Int
hashWithSalt Int
_salt ListAssociatedFleets' {Maybe Text
Text
stackName :: Text
nextToken :: Maybe Text
$sel:stackName:ListAssociatedFleets' :: ListAssociatedFleets -> Text
$sel:nextToken:ListAssociatedFleets' :: ListAssociatedFleets -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
stackName

instance Prelude.NFData ListAssociatedFleets where
  rnf :: ListAssociatedFleets -> ()
rnf ListAssociatedFleets' {Maybe Text
Text
stackName :: Text
nextToken :: Maybe Text
$sel:stackName:ListAssociatedFleets' :: ListAssociatedFleets -> Text
$sel:nextToken:ListAssociatedFleets' :: ListAssociatedFleets -> 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 Text
stackName

instance Data.ToHeaders ListAssociatedFleets where
  toHeaders :: ListAssociatedFleets -> 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.ListAssociatedFleets" ::
                          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 ListAssociatedFleets where
  toJSON :: ListAssociatedFleets -> Value
toJSON ListAssociatedFleets' {Maybe Text
Text
stackName :: Text
nextToken :: Maybe Text
$sel:stackName:ListAssociatedFleets' :: ListAssociatedFleets -> Text
$sel:nextToken:ListAssociatedFleets' :: ListAssociatedFleets -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (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,
            forall a. a -> Maybe a
Prelude.Just (Key
"StackName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
stackName)
          ]
      )

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

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

-- | /See:/ 'newListAssociatedFleetsResponse' smart constructor.
data ListAssociatedFleetsResponse = ListAssociatedFleetsResponse'
  { -- | The name of the fleet.
    ListAssociatedFleetsResponse -> Maybe [Text]
names :: Prelude.Maybe [Prelude.Text],
    -- | 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.
    ListAssociatedFleetsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListAssociatedFleetsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListAssociatedFleetsResponse
-> ListAssociatedFleetsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAssociatedFleetsResponse
-> ListAssociatedFleetsResponse -> Bool
$c/= :: ListAssociatedFleetsResponse
-> ListAssociatedFleetsResponse -> Bool
== :: ListAssociatedFleetsResponse
-> ListAssociatedFleetsResponse -> Bool
$c== :: ListAssociatedFleetsResponse
-> ListAssociatedFleetsResponse -> Bool
Prelude.Eq, ReadPrec [ListAssociatedFleetsResponse]
ReadPrec ListAssociatedFleetsResponse
Int -> ReadS ListAssociatedFleetsResponse
ReadS [ListAssociatedFleetsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAssociatedFleetsResponse]
$creadListPrec :: ReadPrec [ListAssociatedFleetsResponse]
readPrec :: ReadPrec ListAssociatedFleetsResponse
$creadPrec :: ReadPrec ListAssociatedFleetsResponse
readList :: ReadS [ListAssociatedFleetsResponse]
$creadList :: ReadS [ListAssociatedFleetsResponse]
readsPrec :: Int -> ReadS ListAssociatedFleetsResponse
$creadsPrec :: Int -> ReadS ListAssociatedFleetsResponse
Prelude.Read, Int -> ListAssociatedFleetsResponse -> ShowS
[ListAssociatedFleetsResponse] -> ShowS
ListAssociatedFleetsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAssociatedFleetsResponse] -> ShowS
$cshowList :: [ListAssociatedFleetsResponse] -> ShowS
show :: ListAssociatedFleetsResponse -> String
$cshow :: ListAssociatedFleetsResponse -> String
showsPrec :: Int -> ListAssociatedFleetsResponse -> ShowS
$cshowsPrec :: Int -> ListAssociatedFleetsResponse -> ShowS
Prelude.Show, forall x.
Rep ListAssociatedFleetsResponse x -> ListAssociatedFleetsResponse
forall x.
ListAssociatedFleetsResponse -> Rep ListAssociatedFleetsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListAssociatedFleetsResponse x -> ListAssociatedFleetsResponse
$cfrom :: forall x.
ListAssociatedFleetsResponse -> Rep ListAssociatedFleetsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListAssociatedFleetsResponse' 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:
--
-- 'names', 'listAssociatedFleetsResponse_names' - The name of the fleet.
--
-- 'nextToken', 'listAssociatedFleetsResponse_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.
--
-- 'httpStatus', 'listAssociatedFleetsResponse_httpStatus' - The response's http status code.
newListAssociatedFleetsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListAssociatedFleetsResponse
newListAssociatedFleetsResponse :: Int -> ListAssociatedFleetsResponse
newListAssociatedFleetsResponse Int
pHttpStatus_ =
  ListAssociatedFleetsResponse'
    { $sel:names:ListAssociatedFleetsResponse' :: Maybe [Text]
names =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListAssociatedFleetsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListAssociatedFleetsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The name of the fleet.
listAssociatedFleetsResponse_names :: Lens.Lens' ListAssociatedFleetsResponse (Prelude.Maybe [Prelude.Text])
listAssociatedFleetsResponse_names :: Lens' ListAssociatedFleetsResponse (Maybe [Text])
listAssociatedFleetsResponse_names = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssociatedFleetsResponse' {Maybe [Text]
names :: Maybe [Text]
$sel:names:ListAssociatedFleetsResponse' :: ListAssociatedFleetsResponse -> Maybe [Text]
names} -> Maybe [Text]
names) (\s :: ListAssociatedFleetsResponse
s@ListAssociatedFleetsResponse' {} Maybe [Text]
a -> ListAssociatedFleetsResponse
s {$sel:names:ListAssociatedFleetsResponse' :: Maybe [Text]
names = Maybe [Text]
a} :: ListAssociatedFleetsResponse) 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 pagination token to use to retrieve the next page of results for
-- this operation. If there are no more pages, this value is null.
listAssociatedFleetsResponse_nextToken :: Lens.Lens' ListAssociatedFleetsResponse (Prelude.Maybe Prelude.Text)
listAssociatedFleetsResponse_nextToken :: Lens' ListAssociatedFleetsResponse (Maybe Text)
listAssociatedFleetsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssociatedFleetsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAssociatedFleetsResponse' :: ListAssociatedFleetsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAssociatedFleetsResponse
s@ListAssociatedFleetsResponse' {} Maybe Text
a -> ListAssociatedFleetsResponse
s {$sel:nextToken:ListAssociatedFleetsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListAssociatedFleetsResponse)

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

instance Prelude.NFData ListAssociatedFleetsResponse where
  rnf :: ListAssociatedFleetsResponse -> ()
rnf ListAssociatedFleetsResponse' {Int
Maybe [Text]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
names :: Maybe [Text]
$sel:httpStatus:ListAssociatedFleetsResponse' :: ListAssociatedFleetsResponse -> Int
$sel:nextToken:ListAssociatedFleetsResponse' :: ListAssociatedFleetsResponse -> Maybe Text
$sel:names:ListAssociatedFleetsResponse' :: ListAssociatedFleetsResponse -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
names
      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 Int
httpStatus