amazonka-ivs-2.0: gen/Amazonka/IVS/GetStreamSession.hs
{-# 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.IVS.GetStreamSession
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets metadata on a specified stream.
module Amazonka.IVS.GetStreamSession
( -- * Creating a Request
GetStreamSession (..),
newGetStreamSession,
-- * Request Lenses
getStreamSession_streamId,
getStreamSession_channelArn,
-- * Destructuring the Response
GetStreamSessionResponse (..),
newGetStreamSessionResponse,
-- * Response Lenses
getStreamSessionResponse_streamSession,
getStreamSessionResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IVS.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
-- | /See:/ 'newGetStreamSession' smart constructor.
data GetStreamSession = GetStreamSession'
{ -- | Unique identifier for a live or previously live stream in the specified
-- channel. If no @streamId@ is provided, this returns the most recent
-- stream session for the channel, if it exists.
streamId :: Prelude.Maybe Prelude.Text,
-- | ARN of the channel resource
channelArn :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'GetStreamSession' 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:
--
-- 'streamId', 'getStreamSession_streamId' - Unique identifier for a live or previously live stream in the specified
-- channel. If no @streamId@ is provided, this returns the most recent
-- stream session for the channel, if it exists.
--
-- 'channelArn', 'getStreamSession_channelArn' - ARN of the channel resource
newGetStreamSession ::
-- | 'channelArn'
Prelude.Text ->
GetStreamSession
newGetStreamSession pChannelArn_ =
GetStreamSession'
{ streamId = Prelude.Nothing,
channelArn = pChannelArn_
}
-- | Unique identifier for a live or previously live stream in the specified
-- channel. If no @streamId@ is provided, this returns the most recent
-- stream session for the channel, if it exists.
getStreamSession_streamId :: Lens.Lens' GetStreamSession (Prelude.Maybe Prelude.Text)
getStreamSession_streamId = Lens.lens (\GetStreamSession' {streamId} -> streamId) (\s@GetStreamSession' {} a -> s {streamId = a} :: GetStreamSession)
-- | ARN of the channel resource
getStreamSession_channelArn :: Lens.Lens' GetStreamSession Prelude.Text
getStreamSession_channelArn = Lens.lens (\GetStreamSession' {channelArn} -> channelArn) (\s@GetStreamSession' {} a -> s {channelArn = a} :: GetStreamSession)
instance Core.AWSRequest GetStreamSession where
type
AWSResponse GetStreamSession =
GetStreamSessionResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
GetStreamSessionResponse'
Prelude.<$> (x Data..?> "streamSession")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable GetStreamSession where
hashWithSalt _salt GetStreamSession' {..} =
_salt
`Prelude.hashWithSalt` streamId
`Prelude.hashWithSalt` channelArn
instance Prelude.NFData GetStreamSession where
rnf GetStreamSession' {..} =
Prelude.rnf streamId
`Prelude.seq` Prelude.rnf channelArn
instance Data.ToHeaders GetStreamSession where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON GetStreamSession where
toJSON GetStreamSession' {..} =
Data.object
( Prelude.catMaybes
[ ("streamId" Data..=) Prelude.<$> streamId,
Prelude.Just ("channelArn" Data..= channelArn)
]
)
instance Data.ToPath GetStreamSession where
toPath = Prelude.const "/GetStreamSession"
instance Data.ToQuery GetStreamSession where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newGetStreamSessionResponse' smart constructor.
data GetStreamSessionResponse = GetStreamSessionResponse'
{ -- | List of stream details.
streamSession :: Prelude.Maybe StreamSession,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'GetStreamSessionResponse' 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:
--
-- 'streamSession', 'getStreamSessionResponse_streamSession' - List of stream details.
--
-- 'httpStatus', 'getStreamSessionResponse_httpStatus' - The response's http status code.
newGetStreamSessionResponse ::
-- | 'httpStatus'
Prelude.Int ->
GetStreamSessionResponse
newGetStreamSessionResponse pHttpStatus_ =
GetStreamSessionResponse'
{ streamSession =
Prelude.Nothing,
httpStatus = pHttpStatus_
}
-- | List of stream details.
getStreamSessionResponse_streamSession :: Lens.Lens' GetStreamSessionResponse (Prelude.Maybe StreamSession)
getStreamSessionResponse_streamSession = Lens.lens (\GetStreamSessionResponse' {streamSession} -> streamSession) (\s@GetStreamSessionResponse' {} a -> s {streamSession = a} :: GetStreamSessionResponse)
-- | The response's http status code.
getStreamSessionResponse_httpStatus :: Lens.Lens' GetStreamSessionResponse Prelude.Int
getStreamSessionResponse_httpStatus = Lens.lens (\GetStreamSessionResponse' {httpStatus} -> httpStatus) (\s@GetStreamSessionResponse' {} a -> s {httpStatus = a} :: GetStreamSessionResponse)
instance Prelude.NFData GetStreamSessionResponse where
rnf GetStreamSessionResponse' {..} =
Prelude.rnf streamSession
`Prelude.seq` Prelude.rnf httpStatus