packages feed

amazonka-chime-2.0: gen/Amazonka/Chime/Types/MediaPlacement.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.MediaPlacement
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Chime.Types.MediaPlacement where

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

-- | A set of endpoints used by clients to connect to the media service group
-- for an Amazon Chime SDK meeting.
--
-- /See:/ 'newMediaPlacement' smart constructor.
data MediaPlacement = MediaPlacement'
  { -- | The audio fallback URL.
    audioFallbackUrl :: Prelude.Maybe Prelude.Text,
    -- | The audio host URL.
    audioHostUrl :: Prelude.Maybe Prelude.Text,
    -- | The event ingestion URL to which you send client meeting events.
    eventIngestionUrl :: Prelude.Maybe Prelude.Text,
    -- | The screen data URL.
    screenDataUrl :: Prelude.Maybe Prelude.Text,
    -- | The screen sharing URL.
    screenSharingUrl :: Prelude.Maybe Prelude.Text,
    -- | The screen viewing URL.
    screenViewingUrl :: Prelude.Maybe Prelude.Text,
    -- | The signaling URL.
    signalingUrl :: Prelude.Maybe Prelude.Text,
    -- | The turn control URL.
    turnControlUrl :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'MediaPlacement' 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:
--
-- 'audioFallbackUrl', 'mediaPlacement_audioFallbackUrl' - The audio fallback URL.
--
-- 'audioHostUrl', 'mediaPlacement_audioHostUrl' - The audio host URL.
--
-- 'eventIngestionUrl', 'mediaPlacement_eventIngestionUrl' - The event ingestion URL to which you send client meeting events.
--
-- 'screenDataUrl', 'mediaPlacement_screenDataUrl' - The screen data URL.
--
-- 'screenSharingUrl', 'mediaPlacement_screenSharingUrl' - The screen sharing URL.
--
-- 'screenViewingUrl', 'mediaPlacement_screenViewingUrl' - The screen viewing URL.
--
-- 'signalingUrl', 'mediaPlacement_signalingUrl' - The signaling URL.
--
-- 'turnControlUrl', 'mediaPlacement_turnControlUrl' - The turn control URL.
newMediaPlacement ::
  MediaPlacement
newMediaPlacement =
  MediaPlacement'
    { audioFallbackUrl = Prelude.Nothing,
      audioHostUrl = Prelude.Nothing,
      eventIngestionUrl = Prelude.Nothing,
      screenDataUrl = Prelude.Nothing,
      screenSharingUrl = Prelude.Nothing,
      screenViewingUrl = Prelude.Nothing,
      signalingUrl = Prelude.Nothing,
      turnControlUrl = Prelude.Nothing
    }

-- | The audio fallback URL.
mediaPlacement_audioFallbackUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_audioFallbackUrl = Lens.lens (\MediaPlacement' {audioFallbackUrl} -> audioFallbackUrl) (\s@MediaPlacement' {} a -> s {audioFallbackUrl = a} :: MediaPlacement)

-- | The audio host URL.
mediaPlacement_audioHostUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_audioHostUrl = Lens.lens (\MediaPlacement' {audioHostUrl} -> audioHostUrl) (\s@MediaPlacement' {} a -> s {audioHostUrl = a} :: MediaPlacement)

-- | The event ingestion URL to which you send client meeting events.
mediaPlacement_eventIngestionUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_eventIngestionUrl = Lens.lens (\MediaPlacement' {eventIngestionUrl} -> eventIngestionUrl) (\s@MediaPlacement' {} a -> s {eventIngestionUrl = a} :: MediaPlacement)

-- | The screen data URL.
mediaPlacement_screenDataUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_screenDataUrl = Lens.lens (\MediaPlacement' {screenDataUrl} -> screenDataUrl) (\s@MediaPlacement' {} a -> s {screenDataUrl = a} :: MediaPlacement)

-- | The screen sharing URL.
mediaPlacement_screenSharingUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_screenSharingUrl = Lens.lens (\MediaPlacement' {screenSharingUrl} -> screenSharingUrl) (\s@MediaPlacement' {} a -> s {screenSharingUrl = a} :: MediaPlacement)

-- | The screen viewing URL.
mediaPlacement_screenViewingUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_screenViewingUrl = Lens.lens (\MediaPlacement' {screenViewingUrl} -> screenViewingUrl) (\s@MediaPlacement' {} a -> s {screenViewingUrl = a} :: MediaPlacement)

-- | The signaling URL.
mediaPlacement_signalingUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_signalingUrl = Lens.lens (\MediaPlacement' {signalingUrl} -> signalingUrl) (\s@MediaPlacement' {} a -> s {signalingUrl = a} :: MediaPlacement)

-- | The turn control URL.
mediaPlacement_turnControlUrl :: Lens.Lens' MediaPlacement (Prelude.Maybe Prelude.Text)
mediaPlacement_turnControlUrl = Lens.lens (\MediaPlacement' {turnControlUrl} -> turnControlUrl) (\s@MediaPlacement' {} a -> s {turnControlUrl = a} :: MediaPlacement)

instance Data.FromJSON MediaPlacement where
  parseJSON =
    Data.withObject
      "MediaPlacement"
      ( \x ->
          MediaPlacement'
            Prelude.<$> (x Data..:? "AudioFallbackUrl")
            Prelude.<*> (x Data..:? "AudioHostUrl")
            Prelude.<*> (x Data..:? "EventIngestionUrl")
            Prelude.<*> (x Data..:? "ScreenDataUrl")
            Prelude.<*> (x Data..:? "ScreenSharingUrl")
            Prelude.<*> (x Data..:? "ScreenViewingUrl")
            Prelude.<*> (x Data..:? "SignalingUrl")
            Prelude.<*> (x Data..:? "TurnControlUrl")
      )

instance Prelude.Hashable MediaPlacement where
  hashWithSalt _salt MediaPlacement' {..} =
    _salt
      `Prelude.hashWithSalt` audioFallbackUrl
      `Prelude.hashWithSalt` audioHostUrl
      `Prelude.hashWithSalt` eventIngestionUrl
      `Prelude.hashWithSalt` screenDataUrl
      `Prelude.hashWithSalt` screenSharingUrl
      `Prelude.hashWithSalt` screenViewingUrl
      `Prelude.hashWithSalt` signalingUrl
      `Prelude.hashWithSalt` turnControlUrl

instance Prelude.NFData MediaPlacement where
  rnf MediaPlacement' {..} =
    Prelude.rnf audioFallbackUrl
      `Prelude.seq` Prelude.rnf audioHostUrl
      `Prelude.seq` Prelude.rnf eventIngestionUrl
      `Prelude.seq` Prelude.rnf screenDataUrl
      `Prelude.seq` Prelude.rnf screenSharingUrl
      `Prelude.seq` Prelude.rnf screenViewingUrl
      `Prelude.seq` Prelude.rnf signalingUrl
      `Prelude.seq` Prelude.rnf turnControlUrl