{-# 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.Chime.CreateMediaCapturePipeline
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a media capture pipeline.
module Amazonka.Chime.CreateMediaCapturePipeline
  ( -- * Creating a Request
    CreateMediaCapturePipeline (..),
    newCreateMediaCapturePipeline,

    -- * Request Lenses
    createMediaCapturePipeline_chimeSdkMeetingConfiguration,
    createMediaCapturePipeline_clientRequestToken,
    createMediaCapturePipeline_sourceType,
    createMediaCapturePipeline_sourceArn,
    createMediaCapturePipeline_sinkType,
    createMediaCapturePipeline_sinkArn,

    -- * Destructuring the Response
    CreateMediaCapturePipelineResponse (..),
    newCreateMediaCapturePipelineResponse,

    -- * Response Lenses
    createMediaCapturePipelineResponse_mediaCapturePipeline,
    createMediaCapturePipelineResponse_httpStatus,
  )
where

import Amazonka.Chime.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:/ 'newCreateMediaCapturePipeline' smart constructor.
data CreateMediaCapturePipeline = CreateMediaCapturePipeline'
  { -- | The configuration for a specified media capture pipeline. @SourceType@
    -- must be @ChimeSdkMeeting@.
    CreateMediaCapturePipeline -> Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration :: Prelude.Maybe ChimeSdkMeetingConfiguration,
    -- | The token assigned to the client making the pipeline request.
    CreateMediaCapturePipeline -> Maybe (Sensitive Text)
clientRequestToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Source type from which the media artifacts will be captured. A Chime SDK
    -- Meeting is the only supported source.
    CreateMediaCapturePipeline -> MediaPipelineSourceType
sourceType :: MediaPipelineSourceType,
    -- | ARN of the source from which the media artifacts are captured.
    CreateMediaCapturePipeline -> Sensitive Text
sourceArn :: Data.Sensitive Prelude.Text,
    -- | Destination type to which the media artifacts are saved. You must use an
    -- S3 bucket.
    CreateMediaCapturePipeline -> MediaPipelineSinkType
sinkType :: MediaPipelineSinkType,
    -- | The ARN of the sink type.
    CreateMediaCapturePipeline -> Sensitive Text
sinkArn :: Data.Sensitive Prelude.Text
  }
  deriving (CreateMediaCapturePipeline -> CreateMediaCapturePipeline -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateMediaCapturePipeline -> CreateMediaCapturePipeline -> Bool
$c/= :: CreateMediaCapturePipeline -> CreateMediaCapturePipeline -> Bool
== :: CreateMediaCapturePipeline -> CreateMediaCapturePipeline -> Bool
$c== :: CreateMediaCapturePipeline -> CreateMediaCapturePipeline -> Bool
Prelude.Eq, Int -> CreateMediaCapturePipeline -> ShowS
[CreateMediaCapturePipeline] -> ShowS
CreateMediaCapturePipeline -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateMediaCapturePipeline] -> ShowS
$cshowList :: [CreateMediaCapturePipeline] -> ShowS
show :: CreateMediaCapturePipeline -> String
$cshow :: CreateMediaCapturePipeline -> String
showsPrec :: Int -> CreateMediaCapturePipeline -> ShowS
$cshowsPrec :: Int -> CreateMediaCapturePipeline -> ShowS
Prelude.Show, forall x.
Rep CreateMediaCapturePipeline x -> CreateMediaCapturePipeline
forall x.
CreateMediaCapturePipeline -> Rep CreateMediaCapturePipeline x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateMediaCapturePipeline x -> CreateMediaCapturePipeline
$cfrom :: forall x.
CreateMediaCapturePipeline -> Rep CreateMediaCapturePipeline x
Prelude.Generic)

-- |
-- Create a value of 'CreateMediaCapturePipeline' 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:
--
-- 'chimeSdkMeetingConfiguration', 'createMediaCapturePipeline_chimeSdkMeetingConfiguration' - The configuration for a specified media capture pipeline. @SourceType@
-- must be @ChimeSdkMeeting@.
--
-- 'clientRequestToken', 'createMediaCapturePipeline_clientRequestToken' - The token assigned to the client making the pipeline request.
--
-- 'sourceType', 'createMediaCapturePipeline_sourceType' - Source type from which the media artifacts will be captured. A Chime SDK
-- Meeting is the only supported source.
--
-- 'sourceArn', 'createMediaCapturePipeline_sourceArn' - ARN of the source from which the media artifacts are captured.
--
-- 'sinkType', 'createMediaCapturePipeline_sinkType' - Destination type to which the media artifacts are saved. You must use an
-- S3 bucket.
--
-- 'sinkArn', 'createMediaCapturePipeline_sinkArn' - The ARN of the sink type.
newCreateMediaCapturePipeline ::
  -- | 'sourceType'
  MediaPipelineSourceType ->
  -- | 'sourceArn'
  Prelude.Text ->
  -- | 'sinkType'
  MediaPipelineSinkType ->
  -- | 'sinkArn'
  Prelude.Text ->
  CreateMediaCapturePipeline
newCreateMediaCapturePipeline :: MediaPipelineSourceType
-> Text
-> MediaPipelineSinkType
-> Text
-> CreateMediaCapturePipeline
newCreateMediaCapturePipeline
  MediaPipelineSourceType
pSourceType_
  Text
pSourceArn_
  MediaPipelineSinkType
pSinkType_
  Text
pSinkArn_ =
    CreateMediaCapturePipeline'
      { $sel:chimeSdkMeetingConfiguration:CreateMediaCapturePipeline' :: Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration =
          forall a. Maybe a
Prelude.Nothing,
        $sel:clientRequestToken:CreateMediaCapturePipeline' :: Maybe (Sensitive Text)
clientRequestToken = forall a. Maybe a
Prelude.Nothing,
        $sel:sourceType:CreateMediaCapturePipeline' :: MediaPipelineSourceType
sourceType = MediaPipelineSourceType
pSourceType_,
        $sel:sourceArn:CreateMediaCapturePipeline' :: Sensitive Text
sourceArn = forall a. Iso' (Sensitive a) a
Data._Sensitive forall t b. AReview t b -> b -> t
Lens.# Text
pSourceArn_,
        $sel:sinkType:CreateMediaCapturePipeline' :: MediaPipelineSinkType
sinkType = MediaPipelineSinkType
pSinkType_,
        $sel:sinkArn:CreateMediaCapturePipeline' :: Sensitive Text
sinkArn = forall a. Iso' (Sensitive a) a
Data._Sensitive forall t b. AReview t b -> b -> t
Lens.# Text
pSinkArn_
      }

-- | The configuration for a specified media capture pipeline. @SourceType@
-- must be @ChimeSdkMeeting@.
createMediaCapturePipeline_chimeSdkMeetingConfiguration :: Lens.Lens' CreateMediaCapturePipeline (Prelude.Maybe ChimeSdkMeetingConfiguration)
createMediaCapturePipeline_chimeSdkMeetingConfiguration :: Lens'
  CreateMediaCapturePipeline (Maybe ChimeSdkMeetingConfiguration)
createMediaCapturePipeline_chimeSdkMeetingConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMediaCapturePipeline' {Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration :: Maybe ChimeSdkMeetingConfiguration
$sel:chimeSdkMeetingConfiguration:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration} -> Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration) (\s :: CreateMediaCapturePipeline
s@CreateMediaCapturePipeline' {} Maybe ChimeSdkMeetingConfiguration
a -> CreateMediaCapturePipeline
s {$sel:chimeSdkMeetingConfiguration:CreateMediaCapturePipeline' :: Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration = Maybe ChimeSdkMeetingConfiguration
a} :: CreateMediaCapturePipeline)

-- | The token assigned to the client making the pipeline request.
createMediaCapturePipeline_clientRequestToken :: Lens.Lens' CreateMediaCapturePipeline (Prelude.Maybe Prelude.Text)
createMediaCapturePipeline_clientRequestToken :: Lens' CreateMediaCapturePipeline (Maybe Text)
createMediaCapturePipeline_clientRequestToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMediaCapturePipeline' {Maybe (Sensitive Text)
clientRequestToken :: Maybe (Sensitive Text)
$sel:clientRequestToken:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe (Sensitive Text)
clientRequestToken} -> Maybe (Sensitive Text)
clientRequestToken) (\s :: CreateMediaCapturePipeline
s@CreateMediaCapturePipeline' {} Maybe (Sensitive Text)
a -> CreateMediaCapturePipeline
s {$sel:clientRequestToken:CreateMediaCapturePipeline' :: Maybe (Sensitive Text)
clientRequestToken = Maybe (Sensitive Text)
a} :: CreateMediaCapturePipeline) 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 a. Iso' (Sensitive a) a
Data._Sensitive

-- | Source type from which the media artifacts will be captured. A Chime SDK
-- Meeting is the only supported source.
createMediaCapturePipeline_sourceType :: Lens.Lens' CreateMediaCapturePipeline MediaPipelineSourceType
createMediaCapturePipeline_sourceType :: Lens' CreateMediaCapturePipeline MediaPipelineSourceType
createMediaCapturePipeline_sourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMediaCapturePipeline' {MediaPipelineSourceType
sourceType :: MediaPipelineSourceType
$sel:sourceType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSourceType
sourceType} -> MediaPipelineSourceType
sourceType) (\s :: CreateMediaCapturePipeline
s@CreateMediaCapturePipeline' {} MediaPipelineSourceType
a -> CreateMediaCapturePipeline
s {$sel:sourceType:CreateMediaCapturePipeline' :: MediaPipelineSourceType
sourceType = MediaPipelineSourceType
a} :: CreateMediaCapturePipeline)

-- | ARN of the source from which the media artifacts are captured.
createMediaCapturePipeline_sourceArn :: Lens.Lens' CreateMediaCapturePipeline Prelude.Text
createMediaCapturePipeline_sourceArn :: Lens' CreateMediaCapturePipeline Text
createMediaCapturePipeline_sourceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMediaCapturePipeline' {Sensitive Text
sourceArn :: Sensitive Text
$sel:sourceArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
sourceArn} -> Sensitive Text
sourceArn) (\s :: CreateMediaCapturePipeline
s@CreateMediaCapturePipeline' {} Sensitive Text
a -> CreateMediaCapturePipeline
s {$sel:sourceArn:CreateMediaCapturePipeline' :: Sensitive Text
sourceArn = Sensitive Text
a} :: CreateMediaCapturePipeline) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | Destination type to which the media artifacts are saved. You must use an
-- S3 bucket.
createMediaCapturePipeline_sinkType :: Lens.Lens' CreateMediaCapturePipeline MediaPipelineSinkType
createMediaCapturePipeline_sinkType :: Lens' CreateMediaCapturePipeline MediaPipelineSinkType
createMediaCapturePipeline_sinkType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMediaCapturePipeline' {MediaPipelineSinkType
sinkType :: MediaPipelineSinkType
$sel:sinkType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSinkType
sinkType} -> MediaPipelineSinkType
sinkType) (\s :: CreateMediaCapturePipeline
s@CreateMediaCapturePipeline' {} MediaPipelineSinkType
a -> CreateMediaCapturePipeline
s {$sel:sinkType:CreateMediaCapturePipeline' :: MediaPipelineSinkType
sinkType = MediaPipelineSinkType
a} :: CreateMediaCapturePipeline)

-- | The ARN of the sink type.
createMediaCapturePipeline_sinkArn :: Lens.Lens' CreateMediaCapturePipeline Prelude.Text
createMediaCapturePipeline_sinkArn :: Lens' CreateMediaCapturePipeline Text
createMediaCapturePipeline_sinkArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMediaCapturePipeline' {Sensitive Text
sinkArn :: Sensitive Text
$sel:sinkArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
sinkArn} -> Sensitive Text
sinkArn) (\s :: CreateMediaCapturePipeline
s@CreateMediaCapturePipeline' {} Sensitive Text
a -> CreateMediaCapturePipeline
s {$sel:sinkArn:CreateMediaCapturePipeline' :: Sensitive Text
sinkArn = Sensitive Text
a} :: CreateMediaCapturePipeline) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

instance Core.AWSRequest CreateMediaCapturePipeline where
  type
    AWSResponse CreateMediaCapturePipeline =
      CreateMediaCapturePipelineResponse
  request :: (Service -> Service)
-> CreateMediaCapturePipeline -> Request CreateMediaCapturePipeline
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateMediaCapturePipeline
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateMediaCapturePipeline)))
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 MediaCapturePipeline
-> Int -> CreateMediaCapturePipelineResponse
CreateMediaCapturePipelineResponse'
            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
"MediaCapturePipeline")
            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 CreateMediaCapturePipeline where
  hashWithSalt :: Int -> CreateMediaCapturePipeline -> Int
hashWithSalt Int
_salt CreateMediaCapturePipeline' {Maybe (Sensitive Text)
Maybe ChimeSdkMeetingConfiguration
Sensitive Text
MediaPipelineSinkType
MediaPipelineSourceType
sinkArn :: Sensitive Text
sinkType :: MediaPipelineSinkType
sourceArn :: Sensitive Text
sourceType :: MediaPipelineSourceType
clientRequestToken :: Maybe (Sensitive Text)
chimeSdkMeetingConfiguration :: Maybe ChimeSdkMeetingConfiguration
$sel:sinkArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
$sel:sinkType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSinkType
$sel:sourceArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
$sel:sourceType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSourceType
$sel:clientRequestToken:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe (Sensitive Text)
$sel:chimeSdkMeetingConfiguration:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe ChimeSdkMeetingConfiguration
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
clientRequestToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MediaPipelineSourceType
sourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Sensitive Text
sourceArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MediaPipelineSinkType
sinkType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Sensitive Text
sinkArn

instance Prelude.NFData CreateMediaCapturePipeline where
  rnf :: CreateMediaCapturePipeline -> ()
rnf CreateMediaCapturePipeline' {Maybe (Sensitive Text)
Maybe ChimeSdkMeetingConfiguration
Sensitive Text
MediaPipelineSinkType
MediaPipelineSourceType
sinkArn :: Sensitive Text
sinkType :: MediaPipelineSinkType
sourceArn :: Sensitive Text
sourceType :: MediaPipelineSourceType
clientRequestToken :: Maybe (Sensitive Text)
chimeSdkMeetingConfiguration :: Maybe ChimeSdkMeetingConfiguration
$sel:sinkArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
$sel:sinkType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSinkType
$sel:sourceArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
$sel:sourceType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSourceType
$sel:clientRequestToken:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe (Sensitive Text)
$sel:chimeSdkMeetingConfiguration:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe ChimeSdkMeetingConfiguration
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
clientRequestToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MediaPipelineSourceType
sourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
sourceArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MediaPipelineSinkType
sinkType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
sinkArn

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

instance Data.ToJSON CreateMediaCapturePipeline where
  toJSON :: CreateMediaCapturePipeline -> Value
toJSON CreateMediaCapturePipeline' {Maybe (Sensitive Text)
Maybe ChimeSdkMeetingConfiguration
Sensitive Text
MediaPipelineSinkType
MediaPipelineSourceType
sinkArn :: Sensitive Text
sinkType :: MediaPipelineSinkType
sourceArn :: Sensitive Text
sourceType :: MediaPipelineSourceType
clientRequestToken :: Maybe (Sensitive Text)
chimeSdkMeetingConfiguration :: Maybe ChimeSdkMeetingConfiguration
$sel:sinkArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
$sel:sinkType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSinkType
$sel:sourceArn:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Sensitive Text
$sel:sourceType:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> MediaPipelineSourceType
$sel:clientRequestToken:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe (Sensitive Text)
$sel:chimeSdkMeetingConfiguration:CreateMediaCapturePipeline' :: CreateMediaCapturePipeline -> Maybe ChimeSdkMeetingConfiguration
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ChimeSdkMeetingConfiguration" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ChimeSdkMeetingConfiguration
chimeSdkMeetingConfiguration,
            (Key
"ClientRequestToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive Text)
clientRequestToken,
            forall a. a -> Maybe a
Prelude.Just (Key
"SourceType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MediaPipelineSourceType
sourceType),
            forall a. a -> Maybe a
Prelude.Just (Key
"SourceArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Sensitive Text
sourceArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"SinkType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MediaPipelineSinkType
sinkType),
            forall a. a -> Maybe a
Prelude.Just (Key
"SinkArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Sensitive Text
sinkArn)
          ]
      )

instance Data.ToPath CreateMediaCapturePipeline where
  toPath :: CreateMediaCapturePipeline -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/media-capture-pipelines"

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

-- | /See:/ 'newCreateMediaCapturePipelineResponse' smart constructor.
data CreateMediaCapturePipelineResponse = CreateMediaCapturePipelineResponse'
  { -- | A media capture pipeline object, the ID, source type, source ARN, sink
    -- type, and sink ARN of a media capture pipeline object.
    CreateMediaCapturePipelineResponse -> Maybe MediaCapturePipeline
mediaCapturePipeline :: Prelude.Maybe MediaCapturePipeline,
    -- | The response's http status code.
    CreateMediaCapturePipelineResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateMediaCapturePipelineResponse
-> CreateMediaCapturePipelineResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateMediaCapturePipelineResponse
-> CreateMediaCapturePipelineResponse -> Bool
$c/= :: CreateMediaCapturePipelineResponse
-> CreateMediaCapturePipelineResponse -> Bool
== :: CreateMediaCapturePipelineResponse
-> CreateMediaCapturePipelineResponse -> Bool
$c== :: CreateMediaCapturePipelineResponse
-> CreateMediaCapturePipelineResponse -> Bool
Prelude.Eq, Int -> CreateMediaCapturePipelineResponse -> ShowS
[CreateMediaCapturePipelineResponse] -> ShowS
CreateMediaCapturePipelineResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateMediaCapturePipelineResponse] -> ShowS
$cshowList :: [CreateMediaCapturePipelineResponse] -> ShowS
show :: CreateMediaCapturePipelineResponse -> String
$cshow :: CreateMediaCapturePipelineResponse -> String
showsPrec :: Int -> CreateMediaCapturePipelineResponse -> ShowS
$cshowsPrec :: Int -> CreateMediaCapturePipelineResponse -> ShowS
Prelude.Show, forall x.
Rep CreateMediaCapturePipelineResponse x
-> CreateMediaCapturePipelineResponse
forall x.
CreateMediaCapturePipelineResponse
-> Rep CreateMediaCapturePipelineResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateMediaCapturePipelineResponse x
-> CreateMediaCapturePipelineResponse
$cfrom :: forall x.
CreateMediaCapturePipelineResponse
-> Rep CreateMediaCapturePipelineResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateMediaCapturePipelineResponse' 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:
--
-- 'mediaCapturePipeline', 'createMediaCapturePipelineResponse_mediaCapturePipeline' - A media capture pipeline object, the ID, source type, source ARN, sink
-- type, and sink ARN of a media capture pipeline object.
--
-- 'httpStatus', 'createMediaCapturePipelineResponse_httpStatus' - The response's http status code.
newCreateMediaCapturePipelineResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateMediaCapturePipelineResponse
newCreateMediaCapturePipelineResponse :: Int -> CreateMediaCapturePipelineResponse
newCreateMediaCapturePipelineResponse Int
pHttpStatus_ =
  CreateMediaCapturePipelineResponse'
    { $sel:mediaCapturePipeline:CreateMediaCapturePipelineResponse' :: Maybe MediaCapturePipeline
mediaCapturePipeline =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateMediaCapturePipelineResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A media capture pipeline object, the ID, source type, source ARN, sink
-- type, and sink ARN of a media capture pipeline object.
createMediaCapturePipelineResponse_mediaCapturePipeline :: Lens.Lens' CreateMediaCapturePipelineResponse (Prelude.Maybe MediaCapturePipeline)
createMediaCapturePipelineResponse_mediaCapturePipeline :: Lens'
  CreateMediaCapturePipelineResponse (Maybe MediaCapturePipeline)
createMediaCapturePipelineResponse_mediaCapturePipeline = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateMediaCapturePipelineResponse' {Maybe MediaCapturePipeline
mediaCapturePipeline :: Maybe MediaCapturePipeline
$sel:mediaCapturePipeline:CreateMediaCapturePipelineResponse' :: CreateMediaCapturePipelineResponse -> Maybe MediaCapturePipeline
mediaCapturePipeline} -> Maybe MediaCapturePipeline
mediaCapturePipeline) (\s :: CreateMediaCapturePipelineResponse
s@CreateMediaCapturePipelineResponse' {} Maybe MediaCapturePipeline
a -> CreateMediaCapturePipelineResponse
s {$sel:mediaCapturePipeline:CreateMediaCapturePipelineResponse' :: Maybe MediaCapturePipeline
mediaCapturePipeline = Maybe MediaCapturePipeline
a} :: CreateMediaCapturePipelineResponse)

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

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