{-# 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.WorkSpaces.DescribeIpGroups
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes one or more of your IP access control groups.
--
-- This operation returns paginated results.
module Amazonka.WorkSpaces.DescribeIpGroups
  ( -- * Creating a Request
    DescribeIpGroups (..),
    newDescribeIpGroups,

    -- * Request Lenses
    describeIpGroups_groupIds,
    describeIpGroups_maxResults,
    describeIpGroups_nextToken,

    -- * Destructuring the Response
    DescribeIpGroupsResponse (..),
    newDescribeIpGroupsResponse,

    -- * Response Lenses
    describeIpGroupsResponse_nextToken,
    describeIpGroupsResponse_result,
    describeIpGroupsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeIpGroups' smart constructor.
data DescribeIpGroups = DescribeIpGroups'
  { -- | The identifiers of one or more IP access control groups.
    DescribeIpGroups -> Maybe [Text]
groupIds :: Prelude.Maybe [Prelude.Text],
    -- | The maximum number of items to return.
    DescribeIpGroups -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | If you received a @NextToken@ from a previous call that was paginated,
    -- provide this token to receive the next set of results.
    DescribeIpGroups -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeIpGroups -> DescribeIpGroups -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeIpGroups -> DescribeIpGroups -> Bool
$c/= :: DescribeIpGroups -> DescribeIpGroups -> Bool
== :: DescribeIpGroups -> DescribeIpGroups -> Bool
$c== :: DescribeIpGroups -> DescribeIpGroups -> Bool
Prelude.Eq, ReadPrec [DescribeIpGroups]
ReadPrec DescribeIpGroups
Int -> ReadS DescribeIpGroups
ReadS [DescribeIpGroups]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeIpGroups]
$creadListPrec :: ReadPrec [DescribeIpGroups]
readPrec :: ReadPrec DescribeIpGroups
$creadPrec :: ReadPrec DescribeIpGroups
readList :: ReadS [DescribeIpGroups]
$creadList :: ReadS [DescribeIpGroups]
readsPrec :: Int -> ReadS DescribeIpGroups
$creadsPrec :: Int -> ReadS DescribeIpGroups
Prelude.Read, Int -> DescribeIpGroups -> ShowS
[DescribeIpGroups] -> ShowS
DescribeIpGroups -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeIpGroups] -> ShowS
$cshowList :: [DescribeIpGroups] -> ShowS
show :: DescribeIpGroups -> String
$cshow :: DescribeIpGroups -> String
showsPrec :: Int -> DescribeIpGroups -> ShowS
$cshowsPrec :: Int -> DescribeIpGroups -> ShowS
Prelude.Show, forall x. Rep DescribeIpGroups x -> DescribeIpGroups
forall x. DescribeIpGroups -> Rep DescribeIpGroups x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeIpGroups x -> DescribeIpGroups
$cfrom :: forall x. DescribeIpGroups -> Rep DescribeIpGroups x
Prelude.Generic)

-- |
-- Create a value of 'DescribeIpGroups' 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:
--
-- 'groupIds', 'describeIpGroups_groupIds' - The identifiers of one or more IP access control groups.
--
-- 'maxResults', 'describeIpGroups_maxResults' - The maximum number of items to return.
--
-- 'nextToken', 'describeIpGroups_nextToken' - If you received a @NextToken@ from a previous call that was paginated,
-- provide this token to receive the next set of results.
newDescribeIpGroups ::
  DescribeIpGroups
newDescribeIpGroups :: DescribeIpGroups
newDescribeIpGroups =
  DescribeIpGroups'
    { $sel:groupIds:DescribeIpGroups' :: Maybe [Text]
groupIds = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeIpGroups' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeIpGroups' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | The identifiers of one or more IP access control groups.
describeIpGroups_groupIds :: Lens.Lens' DescribeIpGroups (Prelude.Maybe [Prelude.Text])
describeIpGroups_groupIds :: Lens' DescribeIpGroups (Maybe [Text])
describeIpGroups_groupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeIpGroups' {Maybe [Text]
groupIds :: Maybe [Text]
$sel:groupIds:DescribeIpGroups' :: DescribeIpGroups -> Maybe [Text]
groupIds} -> Maybe [Text]
groupIds) (\s :: DescribeIpGroups
s@DescribeIpGroups' {} Maybe [Text]
a -> DescribeIpGroups
s {$sel:groupIds:DescribeIpGroups' :: Maybe [Text]
groupIds = Maybe [Text]
a} :: DescribeIpGroups) 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 maximum number of items to return.
describeIpGroups_maxResults :: Lens.Lens' DescribeIpGroups (Prelude.Maybe Prelude.Natural)
describeIpGroups_maxResults :: Lens' DescribeIpGroups (Maybe Natural)
describeIpGroups_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeIpGroups' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeIpGroups' :: DescribeIpGroups -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeIpGroups
s@DescribeIpGroups' {} Maybe Natural
a -> DescribeIpGroups
s {$sel:maxResults:DescribeIpGroups' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeIpGroups)

-- | If you received a @NextToken@ from a previous call that was paginated,
-- provide this token to receive the next set of results.
describeIpGroups_nextToken :: Lens.Lens' DescribeIpGroups (Prelude.Maybe Prelude.Text)
describeIpGroups_nextToken :: Lens' DescribeIpGroups (Maybe Text)
describeIpGroups_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeIpGroups' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeIpGroups' :: DescribeIpGroups -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeIpGroups
s@DescribeIpGroups' {} Maybe Text
a -> DescribeIpGroups
s {$sel:nextToken:DescribeIpGroups' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeIpGroups)

instance Core.AWSPager DescribeIpGroups where
  page :: DescribeIpGroups
-> AWSResponse DescribeIpGroups -> Maybe DescribeIpGroups
page DescribeIpGroups
rq AWSResponse DescribeIpGroups
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeIpGroups
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeIpGroupsResponse (Maybe Text)
describeIpGroupsResponse_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 DescribeIpGroups
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeIpGroupsResponse (Maybe [WorkspacesIpGroup])
describeIpGroupsResponse_result
            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.$ DescribeIpGroups
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeIpGroups (Maybe Text)
describeIpGroups_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeIpGroups
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeIpGroupsResponse (Maybe Text)
describeIpGroupsResponse_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 DescribeIpGroups where
  type
    AWSResponse DescribeIpGroups =
      DescribeIpGroupsResponse
  request :: (Service -> Service)
-> DescribeIpGroups -> Request DescribeIpGroups
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 DescribeIpGroups
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeIpGroups)))
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 [WorkspacesIpGroup] -> Int -> DescribeIpGroupsResponse
DescribeIpGroupsResponse'
            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
"Result" 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 DescribeIpGroups where
  hashWithSalt :: Int -> DescribeIpGroups -> Int
hashWithSalt Int
_salt DescribeIpGroups' {Maybe Natural
Maybe [Text]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
groupIds :: Maybe [Text]
$sel:nextToken:DescribeIpGroups' :: DescribeIpGroups -> Maybe Text
$sel:maxResults:DescribeIpGroups' :: DescribeIpGroups -> Maybe Natural
$sel:groupIds:DescribeIpGroups' :: DescribeIpGroups -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
groupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance Prelude.NFData DescribeIpGroups where
  rnf :: DescribeIpGroups -> ()
rnf DescribeIpGroups' {Maybe Natural
Maybe [Text]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
groupIds :: Maybe [Text]
$sel:nextToken:DescribeIpGroups' :: DescribeIpGroups -> Maybe Text
$sel:maxResults:DescribeIpGroups' :: DescribeIpGroups -> Maybe Natural
$sel:groupIds:DescribeIpGroups' :: DescribeIpGroups -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
groupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

instance Data.ToHeaders DescribeIpGroups where
  toHeaders :: DescribeIpGroups -> 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
"WorkspacesService.DescribeIpGroups" ::
                          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 DescribeIpGroups where
  toJSON :: DescribeIpGroups -> Value
toJSON DescribeIpGroups' {Maybe Natural
Maybe [Text]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
groupIds :: Maybe [Text]
$sel:nextToken:DescribeIpGroups' :: DescribeIpGroups -> Maybe Text
$sel:maxResults:DescribeIpGroups' :: DescribeIpGroups -> Maybe Natural
$sel:groupIds:DescribeIpGroups' :: DescribeIpGroups -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"GroupIds" 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]
groupIds,
            (Key
"MaxResults" 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 Natural
maxResults,
            (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
          ]
      )

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

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

-- | /See:/ 'newDescribeIpGroupsResponse' smart constructor.
data DescribeIpGroupsResponse = DescribeIpGroupsResponse'
  { -- | The token to use to retrieve the next page of results. This value is
    -- null when there are no more results to return.
    DescribeIpGroupsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Information about the IP access control groups.
    DescribeIpGroupsResponse -> Maybe [WorkspacesIpGroup]
result :: Prelude.Maybe [WorkspacesIpGroup],
    -- | The response's http status code.
    DescribeIpGroupsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeIpGroupsResponse -> DescribeIpGroupsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeIpGroupsResponse -> DescribeIpGroupsResponse -> Bool
$c/= :: DescribeIpGroupsResponse -> DescribeIpGroupsResponse -> Bool
== :: DescribeIpGroupsResponse -> DescribeIpGroupsResponse -> Bool
$c== :: DescribeIpGroupsResponse -> DescribeIpGroupsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeIpGroupsResponse]
ReadPrec DescribeIpGroupsResponse
Int -> ReadS DescribeIpGroupsResponse
ReadS [DescribeIpGroupsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeIpGroupsResponse]
$creadListPrec :: ReadPrec [DescribeIpGroupsResponse]
readPrec :: ReadPrec DescribeIpGroupsResponse
$creadPrec :: ReadPrec DescribeIpGroupsResponse
readList :: ReadS [DescribeIpGroupsResponse]
$creadList :: ReadS [DescribeIpGroupsResponse]
readsPrec :: Int -> ReadS DescribeIpGroupsResponse
$creadsPrec :: Int -> ReadS DescribeIpGroupsResponse
Prelude.Read, Int -> DescribeIpGroupsResponse -> ShowS
[DescribeIpGroupsResponse] -> ShowS
DescribeIpGroupsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeIpGroupsResponse] -> ShowS
$cshowList :: [DescribeIpGroupsResponse] -> ShowS
show :: DescribeIpGroupsResponse -> String
$cshow :: DescribeIpGroupsResponse -> String
showsPrec :: Int -> DescribeIpGroupsResponse -> ShowS
$cshowsPrec :: Int -> DescribeIpGroupsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeIpGroupsResponse x -> DescribeIpGroupsResponse
forall x.
DescribeIpGroupsResponse -> Rep DescribeIpGroupsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeIpGroupsResponse x -> DescribeIpGroupsResponse
$cfrom :: forall x.
DescribeIpGroupsResponse -> Rep DescribeIpGroupsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeIpGroupsResponse' 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', 'describeIpGroupsResponse_nextToken' - The token to use to retrieve the next page of results. This value is
-- null when there are no more results to return.
--
-- 'result', 'describeIpGroupsResponse_result' - Information about the IP access control groups.
--
-- 'httpStatus', 'describeIpGroupsResponse_httpStatus' - The response's http status code.
newDescribeIpGroupsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeIpGroupsResponse
newDescribeIpGroupsResponse :: Int -> DescribeIpGroupsResponse
newDescribeIpGroupsResponse Int
pHttpStatus_ =
  DescribeIpGroupsResponse'
    { $sel:nextToken:DescribeIpGroupsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:result:DescribeIpGroupsResponse' :: Maybe [WorkspacesIpGroup]
result = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeIpGroupsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The token to use to retrieve the next page of results. This value is
-- null when there are no more results to return.
describeIpGroupsResponse_nextToken :: Lens.Lens' DescribeIpGroupsResponse (Prelude.Maybe Prelude.Text)
describeIpGroupsResponse_nextToken :: Lens' DescribeIpGroupsResponse (Maybe Text)
describeIpGroupsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeIpGroupsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeIpGroupsResponse' :: DescribeIpGroupsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeIpGroupsResponse
s@DescribeIpGroupsResponse' {} Maybe Text
a -> DescribeIpGroupsResponse
s {$sel:nextToken:DescribeIpGroupsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeIpGroupsResponse)

-- | Information about the IP access control groups.
describeIpGroupsResponse_result :: Lens.Lens' DescribeIpGroupsResponse (Prelude.Maybe [WorkspacesIpGroup])
describeIpGroupsResponse_result :: Lens' DescribeIpGroupsResponse (Maybe [WorkspacesIpGroup])
describeIpGroupsResponse_result = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeIpGroupsResponse' {Maybe [WorkspacesIpGroup]
result :: Maybe [WorkspacesIpGroup]
$sel:result:DescribeIpGroupsResponse' :: DescribeIpGroupsResponse -> Maybe [WorkspacesIpGroup]
result} -> Maybe [WorkspacesIpGroup]
result) (\s :: DescribeIpGroupsResponse
s@DescribeIpGroupsResponse' {} Maybe [WorkspacesIpGroup]
a -> DescribeIpGroupsResponse
s {$sel:result:DescribeIpGroupsResponse' :: Maybe [WorkspacesIpGroup]
result = Maybe [WorkspacesIpGroup]
a} :: DescribeIpGroupsResponse) 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.
describeIpGroupsResponse_httpStatus :: Lens.Lens' DescribeIpGroupsResponse Prelude.Int
describeIpGroupsResponse_httpStatus :: Lens' DescribeIpGroupsResponse Int
describeIpGroupsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeIpGroupsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeIpGroupsResponse' :: DescribeIpGroupsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeIpGroupsResponse
s@DescribeIpGroupsResponse' {} Int
a -> DescribeIpGroupsResponse
s {$sel:httpStatus:DescribeIpGroupsResponse' :: Int
httpStatus = Int
a} :: DescribeIpGroupsResponse)

instance Prelude.NFData DescribeIpGroupsResponse where
  rnf :: DescribeIpGroupsResponse -> ()
rnf DescribeIpGroupsResponse' {Int
Maybe [WorkspacesIpGroup]
Maybe Text
httpStatus :: Int
result :: Maybe [WorkspacesIpGroup]
nextToken :: Maybe Text
$sel:httpStatus:DescribeIpGroupsResponse' :: DescribeIpGroupsResponse -> Int
$sel:result:DescribeIpGroupsResponse' :: DescribeIpGroupsResponse -> Maybe [WorkspacesIpGroup]
$sel:nextToken:DescribeIpGroupsResponse' :: DescribeIpGroupsResponse -> 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 [WorkspacesIpGroup]
result
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus