{-# 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.ChimeSdkMediaPipelines.GetMediaPipeline
-- 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 an existing media pipeline.
module Amazonka.ChimeSdkMediaPipelines.GetMediaPipeline
  ( -- * Creating a Request
    GetMediaPipeline (..),
    newGetMediaPipeline,

    -- * Request Lenses
    getMediaPipeline_mediaPipelineId,

    -- * Destructuring the Response
    GetMediaPipelineResponse (..),
    newGetMediaPipelineResponse,

    -- * Response Lenses
    getMediaPipelineResponse_mediaPipeline,
    getMediaPipelineResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'GetMediaPipeline' 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:
--
-- 'mediaPipelineId', 'getMediaPipeline_mediaPipelineId' - The ID of the pipeline that you want to get.
newGetMediaPipeline ::
  -- | 'mediaPipelineId'
  Prelude.Text ->
  GetMediaPipeline
newGetMediaPipeline :: Text -> GetMediaPipeline
newGetMediaPipeline Text
pMediaPipelineId_ =
  GetMediaPipeline'
    { $sel:mediaPipelineId:GetMediaPipeline' :: Text
mediaPipelineId =
        Text
pMediaPipelineId_
    }

-- | The ID of the pipeline that you want to get.
getMediaPipeline_mediaPipelineId :: Lens.Lens' GetMediaPipeline Prelude.Text
getMediaPipeline_mediaPipelineId :: Lens' GetMediaPipeline Text
getMediaPipeline_mediaPipelineId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMediaPipeline' {Text
mediaPipelineId :: Text
$sel:mediaPipelineId:GetMediaPipeline' :: GetMediaPipeline -> Text
mediaPipelineId} -> Text
mediaPipelineId) (\s :: GetMediaPipeline
s@GetMediaPipeline' {} Text
a -> GetMediaPipeline
s {$sel:mediaPipelineId:GetMediaPipeline' :: Text
mediaPipelineId = Text
a} :: GetMediaPipeline)

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

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

instance Data.ToHeaders GetMediaPipeline where
  toHeaders :: GetMediaPipeline -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath GetMediaPipeline where
  toPath :: GetMediaPipeline -> ByteString
toPath GetMediaPipeline' {Text
mediaPipelineId :: Text
$sel:mediaPipelineId:GetMediaPipeline' :: GetMediaPipeline -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/sdk-media-pipelines/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
mediaPipelineId]

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

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

-- |
-- Create a value of 'GetMediaPipelineResponse' 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:
--
-- 'mediaPipeline', 'getMediaPipelineResponse_mediaPipeline' - The media pipeline object.
--
-- 'httpStatus', 'getMediaPipelineResponse_httpStatus' - The response's http status code.
newGetMediaPipelineResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetMediaPipelineResponse
newGetMediaPipelineResponse :: Int -> GetMediaPipelineResponse
newGetMediaPipelineResponse Int
pHttpStatus_ =
  GetMediaPipelineResponse'
    { $sel:mediaPipeline:GetMediaPipelineResponse' :: Maybe MediaPipeline
mediaPipeline =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetMediaPipelineResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The media pipeline object.
getMediaPipelineResponse_mediaPipeline :: Lens.Lens' GetMediaPipelineResponse (Prelude.Maybe MediaPipeline)
getMediaPipelineResponse_mediaPipeline :: Lens' GetMediaPipelineResponse (Maybe MediaPipeline)
getMediaPipelineResponse_mediaPipeline = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMediaPipelineResponse' {Maybe MediaPipeline
mediaPipeline :: Maybe MediaPipeline
$sel:mediaPipeline:GetMediaPipelineResponse' :: GetMediaPipelineResponse -> Maybe MediaPipeline
mediaPipeline} -> Maybe MediaPipeline
mediaPipeline) (\s :: GetMediaPipelineResponse
s@GetMediaPipelineResponse' {} Maybe MediaPipeline
a -> GetMediaPipelineResponse
s {$sel:mediaPipeline:GetMediaPipelineResponse' :: Maybe MediaPipeline
mediaPipeline = Maybe MediaPipeline
a} :: GetMediaPipelineResponse)

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

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