{-# 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.Greengrass.ListGroupCertificateAuthorities
-- 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 current CAs for a group.
module Amazonka.Greengrass.ListGroupCertificateAuthorities
  ( -- * Creating a Request
    ListGroupCertificateAuthorities (..),
    newListGroupCertificateAuthorities,

    -- * Request Lenses
    listGroupCertificateAuthorities_groupId,

    -- * Destructuring the Response
    ListGroupCertificateAuthoritiesResponse (..),
    newListGroupCertificateAuthoritiesResponse,

    -- * Response Lenses
    listGroupCertificateAuthoritiesResponse_groupCertificateAuthorities,
    listGroupCertificateAuthoritiesResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Greengrass.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newListGroupCertificateAuthorities' smart constructor.
data ListGroupCertificateAuthorities = ListGroupCertificateAuthorities'
  { -- | The ID of the Greengrass group.
    ListGroupCertificateAuthorities -> Text
groupId :: Prelude.Text
  }
  deriving (ListGroupCertificateAuthorities
-> ListGroupCertificateAuthorities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListGroupCertificateAuthorities
-> ListGroupCertificateAuthorities -> Bool
$c/= :: ListGroupCertificateAuthorities
-> ListGroupCertificateAuthorities -> Bool
== :: ListGroupCertificateAuthorities
-> ListGroupCertificateAuthorities -> Bool
$c== :: ListGroupCertificateAuthorities
-> ListGroupCertificateAuthorities -> Bool
Prelude.Eq, ReadPrec [ListGroupCertificateAuthorities]
ReadPrec ListGroupCertificateAuthorities
Int -> ReadS ListGroupCertificateAuthorities
ReadS [ListGroupCertificateAuthorities]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListGroupCertificateAuthorities]
$creadListPrec :: ReadPrec [ListGroupCertificateAuthorities]
readPrec :: ReadPrec ListGroupCertificateAuthorities
$creadPrec :: ReadPrec ListGroupCertificateAuthorities
readList :: ReadS [ListGroupCertificateAuthorities]
$creadList :: ReadS [ListGroupCertificateAuthorities]
readsPrec :: Int -> ReadS ListGroupCertificateAuthorities
$creadsPrec :: Int -> ReadS ListGroupCertificateAuthorities
Prelude.Read, Int -> ListGroupCertificateAuthorities -> ShowS
[ListGroupCertificateAuthorities] -> ShowS
ListGroupCertificateAuthorities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListGroupCertificateAuthorities] -> ShowS
$cshowList :: [ListGroupCertificateAuthorities] -> ShowS
show :: ListGroupCertificateAuthorities -> String
$cshow :: ListGroupCertificateAuthorities -> String
showsPrec :: Int -> ListGroupCertificateAuthorities -> ShowS
$cshowsPrec :: Int -> ListGroupCertificateAuthorities -> ShowS
Prelude.Show, forall x.
Rep ListGroupCertificateAuthorities x
-> ListGroupCertificateAuthorities
forall x.
ListGroupCertificateAuthorities
-> Rep ListGroupCertificateAuthorities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListGroupCertificateAuthorities x
-> ListGroupCertificateAuthorities
$cfrom :: forall x.
ListGroupCertificateAuthorities
-> Rep ListGroupCertificateAuthorities x
Prelude.Generic)

-- |
-- Create a value of 'ListGroupCertificateAuthorities' 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:
--
-- 'groupId', 'listGroupCertificateAuthorities_groupId' - The ID of the Greengrass group.
newListGroupCertificateAuthorities ::
  -- | 'groupId'
  Prelude.Text ->
  ListGroupCertificateAuthorities
newListGroupCertificateAuthorities :: Text -> ListGroupCertificateAuthorities
newListGroupCertificateAuthorities Text
pGroupId_ =
  ListGroupCertificateAuthorities'
    { $sel:groupId:ListGroupCertificateAuthorities' :: Text
groupId =
        Text
pGroupId_
    }

-- | The ID of the Greengrass group.
listGroupCertificateAuthorities_groupId :: Lens.Lens' ListGroupCertificateAuthorities Prelude.Text
listGroupCertificateAuthorities_groupId :: Lens' ListGroupCertificateAuthorities Text
listGroupCertificateAuthorities_groupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListGroupCertificateAuthorities' {Text
groupId :: Text
$sel:groupId:ListGroupCertificateAuthorities' :: ListGroupCertificateAuthorities -> Text
groupId} -> Text
groupId) (\s :: ListGroupCertificateAuthorities
s@ListGroupCertificateAuthorities' {} Text
a -> ListGroupCertificateAuthorities
s {$sel:groupId:ListGroupCertificateAuthorities' :: Text
groupId = Text
a} :: ListGroupCertificateAuthorities)

instance
  Core.AWSRequest
    ListGroupCertificateAuthorities
  where
  type
    AWSResponse ListGroupCertificateAuthorities =
      ListGroupCertificateAuthoritiesResponse
  request :: (Service -> Service)
-> ListGroupCertificateAuthorities
-> Request ListGroupCertificateAuthorities
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListGroupCertificateAuthorities
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ListGroupCertificateAuthorities)))
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 [GroupCertificateAuthorityProperties]
-> Int -> ListGroupCertificateAuthoritiesResponse
ListGroupCertificateAuthoritiesResponse'
            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
"GroupCertificateAuthorities"
                            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
    ListGroupCertificateAuthorities
  where
  hashWithSalt :: Int -> ListGroupCertificateAuthorities -> Int
hashWithSalt
    Int
_salt
    ListGroupCertificateAuthorities' {Text
groupId :: Text
$sel:groupId:ListGroupCertificateAuthorities' :: ListGroupCertificateAuthorities -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
groupId

instance
  Prelude.NFData
    ListGroupCertificateAuthorities
  where
  rnf :: ListGroupCertificateAuthorities -> ()
rnf ListGroupCertificateAuthorities' {Text
groupId :: Text
$sel:groupId:ListGroupCertificateAuthorities' :: ListGroupCertificateAuthorities -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
groupId

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

instance Data.ToPath ListGroupCertificateAuthorities where
  toPath :: ListGroupCertificateAuthorities -> ByteString
toPath ListGroupCertificateAuthorities' {Text
groupId :: Text
$sel:groupId:ListGroupCertificateAuthorities' :: ListGroupCertificateAuthorities -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/greengrass/groups/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
groupId,
        ByteString
"/certificateauthorities"
      ]

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

-- | /See:/ 'newListGroupCertificateAuthoritiesResponse' smart constructor.
data ListGroupCertificateAuthoritiesResponse = ListGroupCertificateAuthoritiesResponse'
  { -- | A list of certificate authorities associated with the group.
    ListGroupCertificateAuthoritiesResponse
-> Maybe [GroupCertificateAuthorityProperties]
groupCertificateAuthorities :: Prelude.Maybe [GroupCertificateAuthorityProperties],
    -- | The response's http status code.
    ListGroupCertificateAuthoritiesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListGroupCertificateAuthoritiesResponse
-> ListGroupCertificateAuthoritiesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListGroupCertificateAuthoritiesResponse
-> ListGroupCertificateAuthoritiesResponse -> Bool
$c/= :: ListGroupCertificateAuthoritiesResponse
-> ListGroupCertificateAuthoritiesResponse -> Bool
== :: ListGroupCertificateAuthoritiesResponse
-> ListGroupCertificateAuthoritiesResponse -> Bool
$c== :: ListGroupCertificateAuthoritiesResponse
-> ListGroupCertificateAuthoritiesResponse -> Bool
Prelude.Eq, ReadPrec [ListGroupCertificateAuthoritiesResponse]
ReadPrec ListGroupCertificateAuthoritiesResponse
Int -> ReadS ListGroupCertificateAuthoritiesResponse
ReadS [ListGroupCertificateAuthoritiesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListGroupCertificateAuthoritiesResponse]
$creadListPrec :: ReadPrec [ListGroupCertificateAuthoritiesResponse]
readPrec :: ReadPrec ListGroupCertificateAuthoritiesResponse
$creadPrec :: ReadPrec ListGroupCertificateAuthoritiesResponse
readList :: ReadS [ListGroupCertificateAuthoritiesResponse]
$creadList :: ReadS [ListGroupCertificateAuthoritiesResponse]
readsPrec :: Int -> ReadS ListGroupCertificateAuthoritiesResponse
$creadsPrec :: Int -> ReadS ListGroupCertificateAuthoritiesResponse
Prelude.Read, Int -> ListGroupCertificateAuthoritiesResponse -> ShowS
[ListGroupCertificateAuthoritiesResponse] -> ShowS
ListGroupCertificateAuthoritiesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListGroupCertificateAuthoritiesResponse] -> ShowS
$cshowList :: [ListGroupCertificateAuthoritiesResponse] -> ShowS
show :: ListGroupCertificateAuthoritiesResponse -> String
$cshow :: ListGroupCertificateAuthoritiesResponse -> String
showsPrec :: Int -> ListGroupCertificateAuthoritiesResponse -> ShowS
$cshowsPrec :: Int -> ListGroupCertificateAuthoritiesResponse -> ShowS
Prelude.Show, forall x.
Rep ListGroupCertificateAuthoritiesResponse x
-> ListGroupCertificateAuthoritiesResponse
forall x.
ListGroupCertificateAuthoritiesResponse
-> Rep ListGroupCertificateAuthoritiesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListGroupCertificateAuthoritiesResponse x
-> ListGroupCertificateAuthoritiesResponse
$cfrom :: forall x.
ListGroupCertificateAuthoritiesResponse
-> Rep ListGroupCertificateAuthoritiesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListGroupCertificateAuthoritiesResponse' 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:
--
-- 'groupCertificateAuthorities', 'listGroupCertificateAuthoritiesResponse_groupCertificateAuthorities' - A list of certificate authorities associated with the group.
--
-- 'httpStatus', 'listGroupCertificateAuthoritiesResponse_httpStatus' - The response's http status code.
newListGroupCertificateAuthoritiesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListGroupCertificateAuthoritiesResponse
newListGroupCertificateAuthoritiesResponse :: Int -> ListGroupCertificateAuthoritiesResponse
newListGroupCertificateAuthoritiesResponse
  Int
pHttpStatus_ =
    ListGroupCertificateAuthoritiesResponse'
      { $sel:groupCertificateAuthorities:ListGroupCertificateAuthoritiesResponse' :: Maybe [GroupCertificateAuthorityProperties]
groupCertificateAuthorities =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListGroupCertificateAuthoritiesResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | A list of certificate authorities associated with the group.
listGroupCertificateAuthoritiesResponse_groupCertificateAuthorities :: Lens.Lens' ListGroupCertificateAuthoritiesResponse (Prelude.Maybe [GroupCertificateAuthorityProperties])
listGroupCertificateAuthoritiesResponse_groupCertificateAuthorities :: Lens'
  ListGroupCertificateAuthoritiesResponse
  (Maybe [GroupCertificateAuthorityProperties])
listGroupCertificateAuthoritiesResponse_groupCertificateAuthorities = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListGroupCertificateAuthoritiesResponse' {Maybe [GroupCertificateAuthorityProperties]
groupCertificateAuthorities :: Maybe [GroupCertificateAuthorityProperties]
$sel:groupCertificateAuthorities:ListGroupCertificateAuthoritiesResponse' :: ListGroupCertificateAuthoritiesResponse
-> Maybe [GroupCertificateAuthorityProperties]
groupCertificateAuthorities} -> Maybe [GroupCertificateAuthorityProperties]
groupCertificateAuthorities) (\s :: ListGroupCertificateAuthoritiesResponse
s@ListGroupCertificateAuthoritiesResponse' {} Maybe [GroupCertificateAuthorityProperties]
a -> ListGroupCertificateAuthoritiesResponse
s {$sel:groupCertificateAuthorities:ListGroupCertificateAuthoritiesResponse' :: Maybe [GroupCertificateAuthorityProperties]
groupCertificateAuthorities = Maybe [GroupCertificateAuthorityProperties]
a} :: ListGroupCertificateAuthoritiesResponse) 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.
listGroupCertificateAuthoritiesResponse_httpStatus :: Lens.Lens' ListGroupCertificateAuthoritiesResponse Prelude.Int
listGroupCertificateAuthoritiesResponse_httpStatus :: Lens' ListGroupCertificateAuthoritiesResponse Int
listGroupCertificateAuthoritiesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListGroupCertificateAuthoritiesResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListGroupCertificateAuthoritiesResponse' :: ListGroupCertificateAuthoritiesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListGroupCertificateAuthoritiesResponse
s@ListGroupCertificateAuthoritiesResponse' {} Int
a -> ListGroupCertificateAuthoritiesResponse
s {$sel:httpStatus:ListGroupCertificateAuthoritiesResponse' :: Int
httpStatus = Int
a} :: ListGroupCertificateAuthoritiesResponse)

instance
  Prelude.NFData
    ListGroupCertificateAuthoritiesResponse
  where
  rnf :: ListGroupCertificateAuthoritiesResponse -> ()
rnf ListGroupCertificateAuthoritiesResponse' {Int
Maybe [GroupCertificateAuthorityProperties]
httpStatus :: Int
groupCertificateAuthorities :: Maybe [GroupCertificateAuthorityProperties]
$sel:httpStatus:ListGroupCertificateAuthoritiesResponse' :: ListGroupCertificateAuthoritiesResponse -> Int
$sel:groupCertificateAuthorities:ListGroupCertificateAuthoritiesResponse' :: ListGroupCertificateAuthoritiesResponse
-> Maybe [GroupCertificateAuthorityProperties]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [GroupCertificateAuthorityProperties]
groupCertificateAuthorities
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus