packages feed

amazonka-chime-sdk-media-pipelines-2.0: gen/Amazonka/ChimeSdkMediaPipelines/CreateMediaLiveConnectorPipeline.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.ChimeSdkMediaPipelines.CreateMediaLiveConnectorPipeline
-- 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 streaming media pipeline in an Amazon Chime SDK meeting.
module Amazonka.ChimeSdkMediaPipelines.CreateMediaLiveConnectorPipeline
  ( -- * Creating a Request
    CreateMediaLiveConnectorPipeline (..),
    newCreateMediaLiveConnectorPipeline,

    -- * Request Lenses
    createMediaLiveConnectorPipeline_clientRequestToken,
    createMediaLiveConnectorPipeline_tags,
    createMediaLiveConnectorPipeline_sources,
    createMediaLiveConnectorPipeline_sinks,

    -- * Destructuring the Response
    CreateMediaLiveConnectorPipelineResponse (..),
    newCreateMediaLiveConnectorPipelineResponse,

    -- * Response Lenses
    createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline,
    createMediaLiveConnectorPipelineResponse_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:/ 'newCreateMediaLiveConnectorPipeline' smart constructor.
data CreateMediaLiveConnectorPipeline = CreateMediaLiveConnectorPipeline'
  { -- | The token assigned to the client making the request.
    clientRequestToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The tags associated with the media pipeline.
    tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
    -- | The media pipeline\'s data sources.
    sources :: Prelude.NonEmpty LiveConnectorSourceConfiguration,
    -- | The media pipeline\'s data sinks.
    sinks :: Prelude.NonEmpty LiveConnectorSinkConfiguration
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateMediaLiveConnectorPipeline' 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:
--
-- 'clientRequestToken', 'createMediaLiveConnectorPipeline_clientRequestToken' - The token assigned to the client making the request.
--
-- 'tags', 'createMediaLiveConnectorPipeline_tags' - The tags associated with the media pipeline.
--
-- 'sources', 'createMediaLiveConnectorPipeline_sources' - The media pipeline\'s data sources.
--
-- 'sinks', 'createMediaLiveConnectorPipeline_sinks' - The media pipeline\'s data sinks.
newCreateMediaLiveConnectorPipeline ::
  -- | 'sources'
  Prelude.NonEmpty LiveConnectorSourceConfiguration ->
  -- | 'sinks'
  Prelude.NonEmpty LiveConnectorSinkConfiguration ->
  CreateMediaLiveConnectorPipeline
newCreateMediaLiveConnectorPipeline pSources_ pSinks_ =
  CreateMediaLiveConnectorPipeline'
    { clientRequestToken =
        Prelude.Nothing,
      tags = Prelude.Nothing,
      sources = Lens.coerced Lens.# pSources_,
      sinks = Lens.coerced Lens.# pSinks_
    }

-- | The token assigned to the client making the request.
createMediaLiveConnectorPipeline_clientRequestToken :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.Maybe Prelude.Text)
createMediaLiveConnectorPipeline_clientRequestToken = Lens.lens (\CreateMediaLiveConnectorPipeline' {clientRequestToken} -> clientRequestToken) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {clientRequestToken = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.mapping Data._Sensitive

-- | The tags associated with the media pipeline.
createMediaLiveConnectorPipeline_tags :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.Maybe (Prelude.NonEmpty Tag))
createMediaLiveConnectorPipeline_tags = Lens.lens (\CreateMediaLiveConnectorPipeline' {tags} -> tags) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {tags = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.mapping Lens.coerced

-- | The media pipeline\'s data sources.
createMediaLiveConnectorPipeline_sources :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.NonEmpty LiveConnectorSourceConfiguration)
createMediaLiveConnectorPipeline_sources = Lens.lens (\CreateMediaLiveConnectorPipeline' {sources} -> sources) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {sources = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.coerced

-- | The media pipeline\'s data sinks.
createMediaLiveConnectorPipeline_sinks :: Lens.Lens' CreateMediaLiveConnectorPipeline (Prelude.NonEmpty LiveConnectorSinkConfiguration)
createMediaLiveConnectorPipeline_sinks = Lens.lens (\CreateMediaLiveConnectorPipeline' {sinks} -> sinks) (\s@CreateMediaLiveConnectorPipeline' {} a -> s {sinks = a} :: CreateMediaLiveConnectorPipeline) Prelude.. Lens.coerced

instance
  Core.AWSRequest
    CreateMediaLiveConnectorPipeline
  where
  type
    AWSResponse CreateMediaLiveConnectorPipeline =
      CreateMediaLiveConnectorPipelineResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          CreateMediaLiveConnectorPipelineResponse'
            Prelude.<$> (x Data..?> "MediaLiveConnectorPipeline")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    CreateMediaLiveConnectorPipeline
  where
  hashWithSalt
    _salt
    CreateMediaLiveConnectorPipeline' {..} =
      _salt
        `Prelude.hashWithSalt` clientRequestToken
        `Prelude.hashWithSalt` tags
        `Prelude.hashWithSalt` sources
        `Prelude.hashWithSalt` sinks

instance
  Prelude.NFData
    CreateMediaLiveConnectorPipeline
  where
  rnf CreateMediaLiveConnectorPipeline' {..} =
    Prelude.rnf clientRequestToken
      `Prelude.seq` Prelude.rnf tags
      `Prelude.seq` Prelude.rnf sources
      `Prelude.seq` Prelude.rnf sinks

instance
  Data.ToHeaders
    CreateMediaLiveConnectorPipeline
  where
  toHeaders = Prelude.const Prelude.mempty

instance Data.ToJSON CreateMediaLiveConnectorPipeline where
  toJSON CreateMediaLiveConnectorPipeline' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ClientRequestToken" Data..=)
              Prelude.<$> clientRequestToken,
            ("Tags" Data..=) Prelude.<$> tags,
            Prelude.Just ("Sources" Data..= sources),
            Prelude.Just ("Sinks" Data..= sinks)
          ]
      )

instance Data.ToPath CreateMediaLiveConnectorPipeline where
  toPath =
    Prelude.const "/sdk-media-live-connector-pipelines"

instance
  Data.ToQuery
    CreateMediaLiveConnectorPipeline
  where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newCreateMediaLiveConnectorPipelineResponse' smart constructor.
data CreateMediaLiveConnectorPipelineResponse = CreateMediaLiveConnectorPipelineResponse'
  { -- | The new media pipeline.
    mediaLiveConnectorPipeline :: Prelude.Maybe MediaLiveConnectorPipeline,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateMediaLiveConnectorPipelineResponse' 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:
--
-- 'mediaLiveConnectorPipeline', 'createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline' - The new media pipeline.
--
-- 'httpStatus', 'createMediaLiveConnectorPipelineResponse_httpStatus' - The response's http status code.
newCreateMediaLiveConnectorPipelineResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateMediaLiveConnectorPipelineResponse
newCreateMediaLiveConnectorPipelineResponse
  pHttpStatus_ =
    CreateMediaLiveConnectorPipelineResponse'
      { mediaLiveConnectorPipeline =
          Prelude.Nothing,
        httpStatus = pHttpStatus_
      }

-- | The new media pipeline.
createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline :: Lens.Lens' CreateMediaLiveConnectorPipelineResponse (Prelude.Maybe MediaLiveConnectorPipeline)
createMediaLiveConnectorPipelineResponse_mediaLiveConnectorPipeline = Lens.lens (\CreateMediaLiveConnectorPipelineResponse' {mediaLiveConnectorPipeline} -> mediaLiveConnectorPipeline) (\s@CreateMediaLiveConnectorPipelineResponse' {} a -> s {mediaLiveConnectorPipeline = a} :: CreateMediaLiveConnectorPipelineResponse)

-- | The response's http status code.
createMediaLiveConnectorPipelineResponse_httpStatus :: Lens.Lens' CreateMediaLiveConnectorPipelineResponse Prelude.Int
createMediaLiveConnectorPipelineResponse_httpStatus = Lens.lens (\CreateMediaLiveConnectorPipelineResponse' {httpStatus} -> httpStatus) (\s@CreateMediaLiveConnectorPipelineResponse' {} a -> s {httpStatus = a} :: CreateMediaLiveConnectorPipelineResponse)

instance
  Prelude.NFData
    CreateMediaLiveConnectorPipelineResponse
  where
  rnf CreateMediaLiveConnectorPipelineResponse' {..} =
    Prelude.rnf mediaLiveConnectorPipeline
      `Prelude.seq` Prelude.rnf httpStatus