{-# 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.FinSpaceData.GetPermissionGroup
-- 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 details of a specific permission group.
module Amazonka.FinSpaceData.GetPermissionGroup
  ( -- * Creating a Request
    GetPermissionGroup (..),
    newGetPermissionGroup,

    -- * Request Lenses
    getPermissionGroup_permissionGroupId,

    -- * Destructuring the Response
    GetPermissionGroupResponse (..),
    newGetPermissionGroupResponse,

    -- * Response Lenses
    getPermissionGroupResponse_permissionGroup,
    getPermissionGroupResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'GetPermissionGroup' 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:
--
-- 'permissionGroupId', 'getPermissionGroup_permissionGroupId' - The unique identifier for the permission group.
newGetPermissionGroup ::
  -- | 'permissionGroupId'
  Prelude.Text ->
  GetPermissionGroup
newGetPermissionGroup :: Text -> GetPermissionGroup
newGetPermissionGroup Text
pPermissionGroupId_ =
  GetPermissionGroup'
    { $sel:permissionGroupId:GetPermissionGroup' :: Text
permissionGroupId =
        Text
pPermissionGroupId_
    }

-- | The unique identifier for the permission group.
getPermissionGroup_permissionGroupId :: Lens.Lens' GetPermissionGroup Prelude.Text
getPermissionGroup_permissionGroupId :: Lens' GetPermissionGroup Text
getPermissionGroup_permissionGroupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPermissionGroup' {Text
permissionGroupId :: Text
$sel:permissionGroupId:GetPermissionGroup' :: GetPermissionGroup -> Text
permissionGroupId} -> Text
permissionGroupId) (\s :: GetPermissionGroup
s@GetPermissionGroup' {} Text
a -> GetPermissionGroup
s {$sel:permissionGroupId:GetPermissionGroup' :: Text
permissionGroupId = Text
a} :: GetPermissionGroup)

instance Core.AWSRequest GetPermissionGroup where
  type
    AWSResponse GetPermissionGroup =
      GetPermissionGroupResponse
  request :: (Service -> Service)
-> GetPermissionGroup -> Request GetPermissionGroup
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 GetPermissionGroup
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetPermissionGroup)))
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 PermissionGroup -> Int -> GetPermissionGroupResponse
GetPermissionGroupResponse'
            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
"permissionGroup")
            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 GetPermissionGroup where
  hashWithSalt :: Int -> GetPermissionGroup -> Int
hashWithSalt Int
_salt GetPermissionGroup' {Text
permissionGroupId :: Text
$sel:permissionGroupId:GetPermissionGroup' :: GetPermissionGroup -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
permissionGroupId

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

instance Data.ToHeaders GetPermissionGroup where
  toHeaders :: GetPermissionGroup -> 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 GetPermissionGroup where
  toPath :: GetPermissionGroup -> ByteString
toPath GetPermissionGroup' {Text
permissionGroupId :: Text
$sel:permissionGroupId:GetPermissionGroup' :: GetPermissionGroup -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/permission-group/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
permissionGroupId]

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

-- | /See:/ 'newGetPermissionGroupResponse' smart constructor.
data GetPermissionGroupResponse = GetPermissionGroupResponse'
  { GetPermissionGroupResponse -> Maybe PermissionGroup
permissionGroup :: Prelude.Maybe PermissionGroup,
    -- | The response's http status code.
    GetPermissionGroupResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetPermissionGroupResponse -> GetPermissionGroupResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPermissionGroupResponse -> GetPermissionGroupResponse -> Bool
$c/= :: GetPermissionGroupResponse -> GetPermissionGroupResponse -> Bool
== :: GetPermissionGroupResponse -> GetPermissionGroupResponse -> Bool
$c== :: GetPermissionGroupResponse -> GetPermissionGroupResponse -> Bool
Prelude.Eq, Int -> GetPermissionGroupResponse -> ShowS
[GetPermissionGroupResponse] -> ShowS
GetPermissionGroupResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPermissionGroupResponse] -> ShowS
$cshowList :: [GetPermissionGroupResponse] -> ShowS
show :: GetPermissionGroupResponse -> String
$cshow :: GetPermissionGroupResponse -> String
showsPrec :: Int -> GetPermissionGroupResponse -> ShowS
$cshowsPrec :: Int -> GetPermissionGroupResponse -> ShowS
Prelude.Show, forall x.
Rep GetPermissionGroupResponse x -> GetPermissionGroupResponse
forall x.
GetPermissionGroupResponse -> Rep GetPermissionGroupResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetPermissionGroupResponse x -> GetPermissionGroupResponse
$cfrom :: forall x.
GetPermissionGroupResponse -> Rep GetPermissionGroupResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetPermissionGroupResponse' 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:
--
-- 'permissionGroup', 'getPermissionGroupResponse_permissionGroup' - Undocumented member.
--
-- 'httpStatus', 'getPermissionGroupResponse_httpStatus' - The response's http status code.
newGetPermissionGroupResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetPermissionGroupResponse
newGetPermissionGroupResponse :: Int -> GetPermissionGroupResponse
newGetPermissionGroupResponse Int
pHttpStatus_ =
  GetPermissionGroupResponse'
    { $sel:permissionGroup:GetPermissionGroupResponse' :: Maybe PermissionGroup
permissionGroup =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetPermissionGroupResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
getPermissionGroupResponse_permissionGroup :: Lens.Lens' GetPermissionGroupResponse (Prelude.Maybe PermissionGroup)
getPermissionGroupResponse_permissionGroup :: Lens' GetPermissionGroupResponse (Maybe PermissionGroup)
getPermissionGroupResponse_permissionGroup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPermissionGroupResponse' {Maybe PermissionGroup
permissionGroup :: Maybe PermissionGroup
$sel:permissionGroup:GetPermissionGroupResponse' :: GetPermissionGroupResponse -> Maybe PermissionGroup
permissionGroup} -> Maybe PermissionGroup
permissionGroup) (\s :: GetPermissionGroupResponse
s@GetPermissionGroupResponse' {} Maybe PermissionGroup
a -> GetPermissionGroupResponse
s {$sel:permissionGroup:GetPermissionGroupResponse' :: Maybe PermissionGroup
permissionGroup = Maybe PermissionGroup
a} :: GetPermissionGroupResponse)

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

instance Prelude.NFData GetPermissionGroupResponse where
  rnf :: GetPermissionGroupResponse -> ()
rnf GetPermissionGroupResponse' {Int
Maybe PermissionGroup
httpStatus :: Int
permissionGroup :: Maybe PermissionGroup
$sel:httpStatus:GetPermissionGroupResponse' :: GetPermissionGroupResponse -> Int
$sel:permissionGroup:GetPermissionGroupResponse' :: GetPermissionGroupResponse -> Maybe PermissionGroup
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe PermissionGroup
permissionGroup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus