{-# 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.MediaConnect.UpdateFlowMediaStream
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates an existing media stream.
module Amazonka.MediaConnect.UpdateFlowMediaStream
  ( -- * Creating a Request
    UpdateFlowMediaStream (..),
    newUpdateFlowMediaStream,

    -- * Request Lenses
    updateFlowMediaStream_attributes,
    updateFlowMediaStream_clockRate,
    updateFlowMediaStream_description,
    updateFlowMediaStream_mediaStreamType,
    updateFlowMediaStream_videoFormat,
    updateFlowMediaStream_flowArn,
    updateFlowMediaStream_mediaStreamName,

    -- * Destructuring the Response
    UpdateFlowMediaStreamResponse (..),
    newUpdateFlowMediaStreamResponse,

    -- * Response Lenses
    updateFlowMediaStreamResponse_flowArn,
    updateFlowMediaStreamResponse_mediaStream,
    updateFlowMediaStreamResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MediaConnect.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | The fields that you want to update in the media stream.
--
-- /See:/ 'newUpdateFlowMediaStream' smart constructor.
data UpdateFlowMediaStream = UpdateFlowMediaStream'
  { -- | The attributes that you want to assign to the media stream.
    UpdateFlowMediaStream -> Maybe MediaStreamAttributesRequest
attributes :: Prelude.Maybe MediaStreamAttributesRequest,
    -- | The sample rate (in Hz) for the stream. If the media stream type is
    -- video or ancillary data, set this value to 90000. If the media stream
    -- type is audio, set this value to either 48000 or 96000.
    UpdateFlowMediaStream -> Maybe Int
clockRate :: Prelude.Maybe Prelude.Int,
    -- | Description
    UpdateFlowMediaStream -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The type of media stream.
    UpdateFlowMediaStream -> Maybe MediaStreamType
mediaStreamType :: Prelude.Maybe MediaStreamType,
    -- | The resolution of the video.
    UpdateFlowMediaStream -> Maybe Text
videoFormat :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the flow.
    UpdateFlowMediaStream -> Text
flowArn :: Prelude.Text,
    -- | The name of the media stream that you want to update.
    UpdateFlowMediaStream -> Text
mediaStreamName :: Prelude.Text
  }
  deriving (UpdateFlowMediaStream -> UpdateFlowMediaStream -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateFlowMediaStream -> UpdateFlowMediaStream -> Bool
$c/= :: UpdateFlowMediaStream -> UpdateFlowMediaStream -> Bool
== :: UpdateFlowMediaStream -> UpdateFlowMediaStream -> Bool
$c== :: UpdateFlowMediaStream -> UpdateFlowMediaStream -> Bool
Prelude.Eq, ReadPrec [UpdateFlowMediaStream]
ReadPrec UpdateFlowMediaStream
Int -> ReadS UpdateFlowMediaStream
ReadS [UpdateFlowMediaStream]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateFlowMediaStream]
$creadListPrec :: ReadPrec [UpdateFlowMediaStream]
readPrec :: ReadPrec UpdateFlowMediaStream
$creadPrec :: ReadPrec UpdateFlowMediaStream
readList :: ReadS [UpdateFlowMediaStream]
$creadList :: ReadS [UpdateFlowMediaStream]
readsPrec :: Int -> ReadS UpdateFlowMediaStream
$creadsPrec :: Int -> ReadS UpdateFlowMediaStream
Prelude.Read, Int -> UpdateFlowMediaStream -> ShowS
[UpdateFlowMediaStream] -> ShowS
UpdateFlowMediaStream -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateFlowMediaStream] -> ShowS
$cshowList :: [UpdateFlowMediaStream] -> ShowS
show :: UpdateFlowMediaStream -> String
$cshow :: UpdateFlowMediaStream -> String
showsPrec :: Int -> UpdateFlowMediaStream -> ShowS
$cshowsPrec :: Int -> UpdateFlowMediaStream -> ShowS
Prelude.Show, forall x. Rep UpdateFlowMediaStream x -> UpdateFlowMediaStream
forall x. UpdateFlowMediaStream -> Rep UpdateFlowMediaStream x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateFlowMediaStream x -> UpdateFlowMediaStream
$cfrom :: forall x. UpdateFlowMediaStream -> Rep UpdateFlowMediaStream x
Prelude.Generic)

-- |
-- Create a value of 'UpdateFlowMediaStream' 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:
--
-- 'attributes', 'updateFlowMediaStream_attributes' - The attributes that you want to assign to the media stream.
--
-- 'clockRate', 'updateFlowMediaStream_clockRate' - The sample rate (in Hz) for the stream. If the media stream type is
-- video or ancillary data, set this value to 90000. If the media stream
-- type is audio, set this value to either 48000 or 96000.
--
-- 'description', 'updateFlowMediaStream_description' - Description
--
-- 'mediaStreamType', 'updateFlowMediaStream_mediaStreamType' - The type of media stream.
--
-- 'videoFormat', 'updateFlowMediaStream_videoFormat' - The resolution of the video.
--
-- 'flowArn', 'updateFlowMediaStream_flowArn' - The Amazon Resource Name (ARN) of the flow.
--
-- 'mediaStreamName', 'updateFlowMediaStream_mediaStreamName' - The name of the media stream that you want to update.
newUpdateFlowMediaStream ::
  -- | 'flowArn'
  Prelude.Text ->
  -- | 'mediaStreamName'
  Prelude.Text ->
  UpdateFlowMediaStream
newUpdateFlowMediaStream :: Text -> Text -> UpdateFlowMediaStream
newUpdateFlowMediaStream Text
pFlowArn_ Text
pMediaStreamName_ =
  UpdateFlowMediaStream'
    { $sel:attributes:UpdateFlowMediaStream' :: Maybe MediaStreamAttributesRequest
attributes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:clockRate:UpdateFlowMediaStream' :: Maybe Int
clockRate = forall a. Maybe a
Prelude.Nothing,
      $sel:description:UpdateFlowMediaStream' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:mediaStreamType:UpdateFlowMediaStream' :: Maybe MediaStreamType
mediaStreamType = forall a. Maybe a
Prelude.Nothing,
      $sel:videoFormat:UpdateFlowMediaStream' :: Maybe Text
videoFormat = forall a. Maybe a
Prelude.Nothing,
      $sel:flowArn:UpdateFlowMediaStream' :: Text
flowArn = Text
pFlowArn_,
      $sel:mediaStreamName:UpdateFlowMediaStream' :: Text
mediaStreamName = Text
pMediaStreamName_
    }

-- | The attributes that you want to assign to the media stream.
updateFlowMediaStream_attributes :: Lens.Lens' UpdateFlowMediaStream (Prelude.Maybe MediaStreamAttributesRequest)
updateFlowMediaStream_attributes :: Lens' UpdateFlowMediaStream (Maybe MediaStreamAttributesRequest)
updateFlowMediaStream_attributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStream' {Maybe MediaStreamAttributesRequest
attributes :: Maybe MediaStreamAttributesRequest
$sel:attributes:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamAttributesRequest
attributes} -> Maybe MediaStreamAttributesRequest
attributes) (\s :: UpdateFlowMediaStream
s@UpdateFlowMediaStream' {} Maybe MediaStreamAttributesRequest
a -> UpdateFlowMediaStream
s {$sel:attributes:UpdateFlowMediaStream' :: Maybe MediaStreamAttributesRequest
attributes = Maybe MediaStreamAttributesRequest
a} :: UpdateFlowMediaStream)

-- | The sample rate (in Hz) for the stream. If the media stream type is
-- video or ancillary data, set this value to 90000. If the media stream
-- type is audio, set this value to either 48000 or 96000.
updateFlowMediaStream_clockRate :: Lens.Lens' UpdateFlowMediaStream (Prelude.Maybe Prelude.Int)
updateFlowMediaStream_clockRate :: Lens' UpdateFlowMediaStream (Maybe Int)
updateFlowMediaStream_clockRate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStream' {Maybe Int
clockRate :: Maybe Int
$sel:clockRate:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Int
clockRate} -> Maybe Int
clockRate) (\s :: UpdateFlowMediaStream
s@UpdateFlowMediaStream' {} Maybe Int
a -> UpdateFlowMediaStream
s {$sel:clockRate:UpdateFlowMediaStream' :: Maybe Int
clockRate = Maybe Int
a} :: UpdateFlowMediaStream)

-- | Description
updateFlowMediaStream_description :: Lens.Lens' UpdateFlowMediaStream (Prelude.Maybe Prelude.Text)
updateFlowMediaStream_description :: Lens' UpdateFlowMediaStream (Maybe Text)
updateFlowMediaStream_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStream' {Maybe Text
description :: Maybe Text
$sel:description:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateFlowMediaStream
s@UpdateFlowMediaStream' {} Maybe Text
a -> UpdateFlowMediaStream
s {$sel:description:UpdateFlowMediaStream' :: Maybe Text
description = Maybe Text
a} :: UpdateFlowMediaStream)

-- | The type of media stream.
updateFlowMediaStream_mediaStreamType :: Lens.Lens' UpdateFlowMediaStream (Prelude.Maybe MediaStreamType)
updateFlowMediaStream_mediaStreamType :: Lens' UpdateFlowMediaStream (Maybe MediaStreamType)
updateFlowMediaStream_mediaStreamType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStream' {Maybe MediaStreamType
mediaStreamType :: Maybe MediaStreamType
$sel:mediaStreamType:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamType
mediaStreamType} -> Maybe MediaStreamType
mediaStreamType) (\s :: UpdateFlowMediaStream
s@UpdateFlowMediaStream' {} Maybe MediaStreamType
a -> UpdateFlowMediaStream
s {$sel:mediaStreamType:UpdateFlowMediaStream' :: Maybe MediaStreamType
mediaStreamType = Maybe MediaStreamType
a} :: UpdateFlowMediaStream)

-- | The resolution of the video.
updateFlowMediaStream_videoFormat :: Lens.Lens' UpdateFlowMediaStream (Prelude.Maybe Prelude.Text)
updateFlowMediaStream_videoFormat :: Lens' UpdateFlowMediaStream (Maybe Text)
updateFlowMediaStream_videoFormat = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStream' {Maybe Text
videoFormat :: Maybe Text
$sel:videoFormat:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
videoFormat} -> Maybe Text
videoFormat) (\s :: UpdateFlowMediaStream
s@UpdateFlowMediaStream' {} Maybe Text
a -> UpdateFlowMediaStream
s {$sel:videoFormat:UpdateFlowMediaStream' :: Maybe Text
videoFormat = Maybe Text
a} :: UpdateFlowMediaStream)

-- | The Amazon Resource Name (ARN) of the flow.
updateFlowMediaStream_flowArn :: Lens.Lens' UpdateFlowMediaStream Prelude.Text
updateFlowMediaStream_flowArn :: Lens' UpdateFlowMediaStream Text
updateFlowMediaStream_flowArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStream' {Text
flowArn :: Text
$sel:flowArn:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
flowArn} -> Text
flowArn) (\s :: UpdateFlowMediaStream
s@UpdateFlowMediaStream' {} Text
a -> UpdateFlowMediaStream
s {$sel:flowArn:UpdateFlowMediaStream' :: Text
flowArn = Text
a} :: UpdateFlowMediaStream)

-- | The name of the media stream that you want to update.
updateFlowMediaStream_mediaStreamName :: Lens.Lens' UpdateFlowMediaStream Prelude.Text
updateFlowMediaStream_mediaStreamName :: Lens' UpdateFlowMediaStream Text
updateFlowMediaStream_mediaStreamName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStream' {Text
mediaStreamName :: Text
$sel:mediaStreamName:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
mediaStreamName} -> Text
mediaStreamName) (\s :: UpdateFlowMediaStream
s@UpdateFlowMediaStream' {} Text
a -> UpdateFlowMediaStream
s {$sel:mediaStreamName:UpdateFlowMediaStream' :: Text
mediaStreamName = Text
a} :: UpdateFlowMediaStream)

instance Core.AWSRequest UpdateFlowMediaStream where
  type
    AWSResponse UpdateFlowMediaStream =
      UpdateFlowMediaStreamResponse
  request :: (Service -> Service)
-> UpdateFlowMediaStream -> Request UpdateFlowMediaStream
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateFlowMediaStream
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateFlowMediaStream)))
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 Text
-> Maybe MediaStream -> Int -> UpdateFlowMediaStreamResponse
UpdateFlowMediaStreamResponse'
            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
"flowArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"mediaStream")
            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 UpdateFlowMediaStream where
  hashWithSalt :: Int -> UpdateFlowMediaStream -> Int
hashWithSalt Int
_salt UpdateFlowMediaStream' {Maybe Int
Maybe Text
Maybe MediaStreamType
Maybe MediaStreamAttributesRequest
Text
mediaStreamName :: Text
flowArn :: Text
videoFormat :: Maybe Text
mediaStreamType :: Maybe MediaStreamType
description :: Maybe Text
clockRate :: Maybe Int
attributes :: Maybe MediaStreamAttributesRequest
$sel:mediaStreamName:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:flowArn:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:videoFormat:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:mediaStreamType:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamType
$sel:description:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:clockRate:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Int
$sel:attributes:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamAttributesRequest
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MediaStreamAttributesRequest
attributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
clockRate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MediaStreamType
mediaStreamType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
videoFormat
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
flowArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
mediaStreamName

instance Prelude.NFData UpdateFlowMediaStream where
  rnf :: UpdateFlowMediaStream -> ()
rnf UpdateFlowMediaStream' {Maybe Int
Maybe Text
Maybe MediaStreamType
Maybe MediaStreamAttributesRequest
Text
mediaStreamName :: Text
flowArn :: Text
videoFormat :: Maybe Text
mediaStreamType :: Maybe MediaStreamType
description :: Maybe Text
clockRate :: Maybe Int
attributes :: Maybe MediaStreamAttributesRequest
$sel:mediaStreamName:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:flowArn:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:videoFormat:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:mediaStreamType:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamType
$sel:description:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:clockRate:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Int
$sel:attributes:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamAttributesRequest
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe MediaStreamAttributesRequest
attributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
clockRate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MediaStreamType
mediaStreamType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
videoFormat
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
flowArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
mediaStreamName

instance Data.ToHeaders UpdateFlowMediaStream where
  toHeaders :: UpdateFlowMediaStream -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateFlowMediaStream where
  toJSON :: UpdateFlowMediaStream -> Value
toJSON UpdateFlowMediaStream' {Maybe Int
Maybe Text
Maybe MediaStreamType
Maybe MediaStreamAttributesRequest
Text
mediaStreamName :: Text
flowArn :: Text
videoFormat :: Maybe Text
mediaStreamType :: Maybe MediaStreamType
description :: Maybe Text
clockRate :: Maybe Int
attributes :: Maybe MediaStreamAttributesRequest
$sel:mediaStreamName:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:flowArn:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:videoFormat:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:mediaStreamType:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamType
$sel:description:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:clockRate:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Int
$sel:attributes:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamAttributesRequest
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"attributes" 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 MediaStreamAttributesRequest
attributes,
            (Key
"clockRate" 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 Int
clockRate,
            (Key
"description" 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 Text
description,
            (Key
"mediaStreamType" 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 MediaStreamType
mediaStreamType,
            (Key
"videoFormat" 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 Text
videoFormat
          ]
      )

instance Data.ToPath UpdateFlowMediaStream where
  toPath :: UpdateFlowMediaStream -> ByteString
toPath UpdateFlowMediaStream' {Maybe Int
Maybe Text
Maybe MediaStreamType
Maybe MediaStreamAttributesRequest
Text
mediaStreamName :: Text
flowArn :: Text
videoFormat :: Maybe Text
mediaStreamType :: Maybe MediaStreamType
description :: Maybe Text
clockRate :: Maybe Int
attributes :: Maybe MediaStreamAttributesRequest
$sel:mediaStreamName:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:flowArn:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Text
$sel:videoFormat:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:mediaStreamType:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamType
$sel:description:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Text
$sel:clockRate:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe Int
$sel:attributes:UpdateFlowMediaStream' :: UpdateFlowMediaStream -> Maybe MediaStreamAttributesRequest
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/v1/flows/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
flowArn,
        ByteString
"/mediaStreams/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
mediaStreamName
      ]

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

-- | /See:/ 'newUpdateFlowMediaStreamResponse' smart constructor.
data UpdateFlowMediaStreamResponse = UpdateFlowMediaStreamResponse'
  { -- | The ARN of the flow that is associated with the media stream that you
    -- updated.
    UpdateFlowMediaStreamResponse -> Maybe Text
flowArn :: Prelude.Maybe Prelude.Text,
    -- | The media stream that you updated.
    UpdateFlowMediaStreamResponse -> Maybe MediaStream
mediaStream :: Prelude.Maybe MediaStream,
    -- | The response's http status code.
    UpdateFlowMediaStreamResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateFlowMediaStreamResponse
-> UpdateFlowMediaStreamResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateFlowMediaStreamResponse
-> UpdateFlowMediaStreamResponse -> Bool
$c/= :: UpdateFlowMediaStreamResponse
-> UpdateFlowMediaStreamResponse -> Bool
== :: UpdateFlowMediaStreamResponse
-> UpdateFlowMediaStreamResponse -> Bool
$c== :: UpdateFlowMediaStreamResponse
-> UpdateFlowMediaStreamResponse -> Bool
Prelude.Eq, ReadPrec [UpdateFlowMediaStreamResponse]
ReadPrec UpdateFlowMediaStreamResponse
Int -> ReadS UpdateFlowMediaStreamResponse
ReadS [UpdateFlowMediaStreamResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateFlowMediaStreamResponse]
$creadListPrec :: ReadPrec [UpdateFlowMediaStreamResponse]
readPrec :: ReadPrec UpdateFlowMediaStreamResponse
$creadPrec :: ReadPrec UpdateFlowMediaStreamResponse
readList :: ReadS [UpdateFlowMediaStreamResponse]
$creadList :: ReadS [UpdateFlowMediaStreamResponse]
readsPrec :: Int -> ReadS UpdateFlowMediaStreamResponse
$creadsPrec :: Int -> ReadS UpdateFlowMediaStreamResponse
Prelude.Read, Int -> UpdateFlowMediaStreamResponse -> ShowS
[UpdateFlowMediaStreamResponse] -> ShowS
UpdateFlowMediaStreamResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateFlowMediaStreamResponse] -> ShowS
$cshowList :: [UpdateFlowMediaStreamResponse] -> ShowS
show :: UpdateFlowMediaStreamResponse -> String
$cshow :: UpdateFlowMediaStreamResponse -> String
showsPrec :: Int -> UpdateFlowMediaStreamResponse -> ShowS
$cshowsPrec :: Int -> UpdateFlowMediaStreamResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateFlowMediaStreamResponse x
-> UpdateFlowMediaStreamResponse
forall x.
UpdateFlowMediaStreamResponse
-> Rep UpdateFlowMediaStreamResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateFlowMediaStreamResponse x
-> UpdateFlowMediaStreamResponse
$cfrom :: forall x.
UpdateFlowMediaStreamResponse
-> Rep UpdateFlowMediaStreamResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateFlowMediaStreamResponse' 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:
--
-- 'flowArn', 'updateFlowMediaStreamResponse_flowArn' - The ARN of the flow that is associated with the media stream that you
-- updated.
--
-- 'mediaStream', 'updateFlowMediaStreamResponse_mediaStream' - The media stream that you updated.
--
-- 'httpStatus', 'updateFlowMediaStreamResponse_httpStatus' - The response's http status code.
newUpdateFlowMediaStreamResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateFlowMediaStreamResponse
newUpdateFlowMediaStreamResponse :: Int -> UpdateFlowMediaStreamResponse
newUpdateFlowMediaStreamResponse Int
pHttpStatus_ =
  UpdateFlowMediaStreamResponse'
    { $sel:flowArn:UpdateFlowMediaStreamResponse' :: Maybe Text
flowArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:mediaStream:UpdateFlowMediaStreamResponse' :: Maybe MediaStream
mediaStream = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateFlowMediaStreamResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the flow that is associated with the media stream that you
-- updated.
updateFlowMediaStreamResponse_flowArn :: Lens.Lens' UpdateFlowMediaStreamResponse (Prelude.Maybe Prelude.Text)
updateFlowMediaStreamResponse_flowArn :: Lens' UpdateFlowMediaStreamResponse (Maybe Text)
updateFlowMediaStreamResponse_flowArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStreamResponse' {Maybe Text
flowArn :: Maybe Text
$sel:flowArn:UpdateFlowMediaStreamResponse' :: UpdateFlowMediaStreamResponse -> Maybe Text
flowArn} -> Maybe Text
flowArn) (\s :: UpdateFlowMediaStreamResponse
s@UpdateFlowMediaStreamResponse' {} Maybe Text
a -> UpdateFlowMediaStreamResponse
s {$sel:flowArn:UpdateFlowMediaStreamResponse' :: Maybe Text
flowArn = Maybe Text
a} :: UpdateFlowMediaStreamResponse)

-- | The media stream that you updated.
updateFlowMediaStreamResponse_mediaStream :: Lens.Lens' UpdateFlowMediaStreamResponse (Prelude.Maybe MediaStream)
updateFlowMediaStreamResponse_mediaStream :: Lens' UpdateFlowMediaStreamResponse (Maybe MediaStream)
updateFlowMediaStreamResponse_mediaStream = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFlowMediaStreamResponse' {Maybe MediaStream
mediaStream :: Maybe MediaStream
$sel:mediaStream:UpdateFlowMediaStreamResponse' :: UpdateFlowMediaStreamResponse -> Maybe MediaStream
mediaStream} -> Maybe MediaStream
mediaStream) (\s :: UpdateFlowMediaStreamResponse
s@UpdateFlowMediaStreamResponse' {} Maybe MediaStream
a -> UpdateFlowMediaStreamResponse
s {$sel:mediaStream:UpdateFlowMediaStreamResponse' :: Maybe MediaStream
mediaStream = Maybe MediaStream
a} :: UpdateFlowMediaStreamResponse)

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

instance Prelude.NFData UpdateFlowMediaStreamResponse where
  rnf :: UpdateFlowMediaStreamResponse -> ()
rnf UpdateFlowMediaStreamResponse' {Int
Maybe Text
Maybe MediaStream
httpStatus :: Int
mediaStream :: Maybe MediaStream
flowArn :: Maybe Text
$sel:httpStatus:UpdateFlowMediaStreamResponse' :: UpdateFlowMediaStreamResponse -> Int
$sel:mediaStream:UpdateFlowMediaStreamResponse' :: UpdateFlowMediaStreamResponse -> Maybe MediaStream
$sel:flowArn:UpdateFlowMediaStreamResponse' :: UpdateFlowMediaStreamResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
flowArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MediaStream
mediaStream
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus