{-# 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.Nimble.GetLaunchProfileMember
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Get a user persona in launch profile membership.
module Amazonka.Nimble.GetLaunchProfileMember
  ( -- * Creating a Request
    GetLaunchProfileMember (..),
    newGetLaunchProfileMember,

    -- * Request Lenses
    getLaunchProfileMember_launchProfileId,
    getLaunchProfileMember_principalId,
    getLaunchProfileMember_studioId,

    -- * Destructuring the Response
    GetLaunchProfileMemberResponse (..),
    newGetLaunchProfileMemberResponse,

    -- * Response Lenses
    getLaunchProfileMemberResponse_member,
    getLaunchProfileMemberResponse_httpStatus,
  )
where

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

-- | /See:/ 'newGetLaunchProfileMember' smart constructor.
data GetLaunchProfileMember = GetLaunchProfileMember'
  { -- | The ID of the launch profile used to control access from the streaming
    -- session.
    GetLaunchProfileMember -> Text
launchProfileId :: Prelude.Text,
    -- | The principal ID. This currently supports a IAM Identity Center UserId.
    GetLaunchProfileMember -> Text
principalId :: Prelude.Text,
    -- | The studio ID.
    GetLaunchProfileMember -> Text
studioId :: Prelude.Text
  }
  deriving (GetLaunchProfileMember -> GetLaunchProfileMember -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLaunchProfileMember -> GetLaunchProfileMember -> Bool
$c/= :: GetLaunchProfileMember -> GetLaunchProfileMember -> Bool
== :: GetLaunchProfileMember -> GetLaunchProfileMember -> Bool
$c== :: GetLaunchProfileMember -> GetLaunchProfileMember -> Bool
Prelude.Eq, ReadPrec [GetLaunchProfileMember]
ReadPrec GetLaunchProfileMember
Int -> ReadS GetLaunchProfileMember
ReadS [GetLaunchProfileMember]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLaunchProfileMember]
$creadListPrec :: ReadPrec [GetLaunchProfileMember]
readPrec :: ReadPrec GetLaunchProfileMember
$creadPrec :: ReadPrec GetLaunchProfileMember
readList :: ReadS [GetLaunchProfileMember]
$creadList :: ReadS [GetLaunchProfileMember]
readsPrec :: Int -> ReadS GetLaunchProfileMember
$creadsPrec :: Int -> ReadS GetLaunchProfileMember
Prelude.Read, Int -> GetLaunchProfileMember -> ShowS
[GetLaunchProfileMember] -> ShowS
GetLaunchProfileMember -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLaunchProfileMember] -> ShowS
$cshowList :: [GetLaunchProfileMember] -> ShowS
show :: GetLaunchProfileMember -> String
$cshow :: GetLaunchProfileMember -> String
showsPrec :: Int -> GetLaunchProfileMember -> ShowS
$cshowsPrec :: Int -> GetLaunchProfileMember -> ShowS
Prelude.Show, forall x. Rep GetLaunchProfileMember x -> GetLaunchProfileMember
forall x. GetLaunchProfileMember -> Rep GetLaunchProfileMember x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetLaunchProfileMember x -> GetLaunchProfileMember
$cfrom :: forall x. GetLaunchProfileMember -> Rep GetLaunchProfileMember x
Prelude.Generic)

-- |
-- Create a value of 'GetLaunchProfileMember' 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:
--
-- 'launchProfileId', 'getLaunchProfileMember_launchProfileId' - The ID of the launch profile used to control access from the streaming
-- session.
--
-- 'principalId', 'getLaunchProfileMember_principalId' - The principal ID. This currently supports a IAM Identity Center UserId.
--
-- 'studioId', 'getLaunchProfileMember_studioId' - The studio ID.
newGetLaunchProfileMember ::
  -- | 'launchProfileId'
  Prelude.Text ->
  -- | 'principalId'
  Prelude.Text ->
  -- | 'studioId'
  Prelude.Text ->
  GetLaunchProfileMember
newGetLaunchProfileMember :: Text -> Text -> Text -> GetLaunchProfileMember
newGetLaunchProfileMember
  Text
pLaunchProfileId_
  Text
pPrincipalId_
  Text
pStudioId_ =
    GetLaunchProfileMember'
      { $sel:launchProfileId:GetLaunchProfileMember' :: Text
launchProfileId =
          Text
pLaunchProfileId_,
        $sel:principalId:GetLaunchProfileMember' :: Text
principalId = Text
pPrincipalId_,
        $sel:studioId:GetLaunchProfileMember' :: Text
studioId = Text
pStudioId_
      }

-- | The ID of the launch profile used to control access from the streaming
-- session.
getLaunchProfileMember_launchProfileId :: Lens.Lens' GetLaunchProfileMember Prelude.Text
getLaunchProfileMember_launchProfileId :: Lens' GetLaunchProfileMember Text
getLaunchProfileMember_launchProfileId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLaunchProfileMember' {Text
launchProfileId :: Text
$sel:launchProfileId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
launchProfileId} -> Text
launchProfileId) (\s :: GetLaunchProfileMember
s@GetLaunchProfileMember' {} Text
a -> GetLaunchProfileMember
s {$sel:launchProfileId:GetLaunchProfileMember' :: Text
launchProfileId = Text
a} :: GetLaunchProfileMember)

-- | The principal ID. This currently supports a IAM Identity Center UserId.
getLaunchProfileMember_principalId :: Lens.Lens' GetLaunchProfileMember Prelude.Text
getLaunchProfileMember_principalId :: Lens' GetLaunchProfileMember Text
getLaunchProfileMember_principalId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLaunchProfileMember' {Text
principalId :: Text
$sel:principalId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
principalId} -> Text
principalId) (\s :: GetLaunchProfileMember
s@GetLaunchProfileMember' {} Text
a -> GetLaunchProfileMember
s {$sel:principalId:GetLaunchProfileMember' :: Text
principalId = Text
a} :: GetLaunchProfileMember)

-- | The studio ID.
getLaunchProfileMember_studioId :: Lens.Lens' GetLaunchProfileMember Prelude.Text
getLaunchProfileMember_studioId :: Lens' GetLaunchProfileMember Text
getLaunchProfileMember_studioId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLaunchProfileMember' {Text
studioId :: Text
$sel:studioId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
studioId} -> Text
studioId) (\s :: GetLaunchProfileMember
s@GetLaunchProfileMember' {} Text
a -> GetLaunchProfileMember
s {$sel:studioId:GetLaunchProfileMember' :: Text
studioId = Text
a} :: GetLaunchProfileMember)

instance Core.AWSRequest GetLaunchProfileMember where
  type
    AWSResponse GetLaunchProfileMember =
      GetLaunchProfileMemberResponse
  request :: (Service -> Service)
-> GetLaunchProfileMember -> Request GetLaunchProfileMember
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 GetLaunchProfileMember
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetLaunchProfileMember)))
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 LaunchProfileMembership
-> Int -> GetLaunchProfileMemberResponse
GetLaunchProfileMemberResponse'
            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
"member")
            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 GetLaunchProfileMember where
  hashWithSalt :: Int -> GetLaunchProfileMember -> Int
hashWithSalt Int
_salt GetLaunchProfileMember' {Text
studioId :: Text
principalId :: Text
launchProfileId :: Text
$sel:studioId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
$sel:principalId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
$sel:launchProfileId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
launchProfileId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
principalId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
studioId

instance Prelude.NFData GetLaunchProfileMember where
  rnf :: GetLaunchProfileMember -> ()
rnf GetLaunchProfileMember' {Text
studioId :: Text
principalId :: Text
launchProfileId :: Text
$sel:studioId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
$sel:principalId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
$sel:launchProfileId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
launchProfileId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
principalId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
studioId

instance Data.ToHeaders GetLaunchProfileMember where
  toHeaders :: GetLaunchProfileMember -> 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 GetLaunchProfileMember where
  toPath :: GetLaunchProfileMember -> ByteString
toPath GetLaunchProfileMember' {Text
studioId :: Text
principalId :: Text
launchProfileId :: Text
$sel:studioId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
$sel:principalId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
$sel:launchProfileId:GetLaunchProfileMember' :: GetLaunchProfileMember -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2020-08-01/studios/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
studioId,
        ByteString
"/launch-profiles/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
launchProfileId,
        ByteString
"/membership/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
principalId
      ]

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

-- | /See:/ 'newGetLaunchProfileMemberResponse' smart constructor.
data GetLaunchProfileMemberResponse = GetLaunchProfileMemberResponse'
  { -- | The member.
    GetLaunchProfileMemberResponse -> Maybe LaunchProfileMembership
member :: Prelude.Maybe LaunchProfileMembership,
    -- | The response's http status code.
    GetLaunchProfileMemberResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetLaunchProfileMemberResponse
-> GetLaunchProfileMemberResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLaunchProfileMemberResponse
-> GetLaunchProfileMemberResponse -> Bool
$c/= :: GetLaunchProfileMemberResponse
-> GetLaunchProfileMemberResponse -> Bool
== :: GetLaunchProfileMemberResponse
-> GetLaunchProfileMemberResponse -> Bool
$c== :: GetLaunchProfileMemberResponse
-> GetLaunchProfileMemberResponse -> Bool
Prelude.Eq, ReadPrec [GetLaunchProfileMemberResponse]
ReadPrec GetLaunchProfileMemberResponse
Int -> ReadS GetLaunchProfileMemberResponse
ReadS [GetLaunchProfileMemberResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLaunchProfileMemberResponse]
$creadListPrec :: ReadPrec [GetLaunchProfileMemberResponse]
readPrec :: ReadPrec GetLaunchProfileMemberResponse
$creadPrec :: ReadPrec GetLaunchProfileMemberResponse
readList :: ReadS [GetLaunchProfileMemberResponse]
$creadList :: ReadS [GetLaunchProfileMemberResponse]
readsPrec :: Int -> ReadS GetLaunchProfileMemberResponse
$creadsPrec :: Int -> ReadS GetLaunchProfileMemberResponse
Prelude.Read, Int -> GetLaunchProfileMemberResponse -> ShowS
[GetLaunchProfileMemberResponse] -> ShowS
GetLaunchProfileMemberResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLaunchProfileMemberResponse] -> ShowS
$cshowList :: [GetLaunchProfileMemberResponse] -> ShowS
show :: GetLaunchProfileMemberResponse -> String
$cshow :: GetLaunchProfileMemberResponse -> String
showsPrec :: Int -> GetLaunchProfileMemberResponse -> ShowS
$cshowsPrec :: Int -> GetLaunchProfileMemberResponse -> ShowS
Prelude.Show, forall x.
Rep GetLaunchProfileMemberResponse x
-> GetLaunchProfileMemberResponse
forall x.
GetLaunchProfileMemberResponse
-> Rep GetLaunchProfileMemberResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetLaunchProfileMemberResponse x
-> GetLaunchProfileMemberResponse
$cfrom :: forall x.
GetLaunchProfileMemberResponse
-> Rep GetLaunchProfileMemberResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetLaunchProfileMemberResponse' 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:
--
-- 'member', 'getLaunchProfileMemberResponse_member' - The member.
--
-- 'httpStatus', 'getLaunchProfileMemberResponse_httpStatus' - The response's http status code.
newGetLaunchProfileMemberResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetLaunchProfileMemberResponse
newGetLaunchProfileMemberResponse :: Int -> GetLaunchProfileMemberResponse
newGetLaunchProfileMemberResponse Int
pHttpStatus_ =
  GetLaunchProfileMemberResponse'
    { $sel:member:GetLaunchProfileMemberResponse' :: Maybe LaunchProfileMembership
member =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetLaunchProfileMemberResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The member.
getLaunchProfileMemberResponse_member :: Lens.Lens' GetLaunchProfileMemberResponse (Prelude.Maybe LaunchProfileMembership)
getLaunchProfileMemberResponse_member :: Lens'
  GetLaunchProfileMemberResponse (Maybe LaunchProfileMembership)
getLaunchProfileMemberResponse_member = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLaunchProfileMemberResponse' {Maybe LaunchProfileMembership
member :: Maybe LaunchProfileMembership
$sel:member:GetLaunchProfileMemberResponse' :: GetLaunchProfileMemberResponse -> Maybe LaunchProfileMembership
member} -> Maybe LaunchProfileMembership
member) (\s :: GetLaunchProfileMemberResponse
s@GetLaunchProfileMemberResponse' {} Maybe LaunchProfileMembership
a -> GetLaunchProfileMemberResponse
s {$sel:member:GetLaunchProfileMemberResponse' :: Maybe LaunchProfileMembership
member = Maybe LaunchProfileMembership
a} :: GetLaunchProfileMemberResponse)

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

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