{-# 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.IoT.UpdateStream
-- 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 stream. The stream version will be incremented by
-- one.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions UpdateStream>
-- action.
module Amazonka.IoT.UpdateStream
  ( -- * Creating a Request
    UpdateStream (..),
    newUpdateStream,

    -- * Request Lenses
    updateStream_description,
    updateStream_files,
    updateStream_roleArn,
    updateStream_streamId,

    -- * Destructuring the Response
    UpdateStreamResponse (..),
    newUpdateStreamResponse,

    -- * Response Lenses
    updateStreamResponse_description,
    updateStreamResponse_streamArn,
    updateStreamResponse_streamId,
    updateStreamResponse_streamVersion,
    updateStreamResponse_httpStatus,
  )
where

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

-- | /See:/ 'newUpdateStream' smart constructor.
data UpdateStream = UpdateStream'
  { -- | The description of the stream.
    UpdateStream -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The files associated with the stream.
    UpdateStream -> Maybe (NonEmpty StreamFile)
files :: Prelude.Maybe (Prelude.NonEmpty StreamFile),
    -- | An IAM role that allows the IoT service principal assumes to access your
    -- S3 files.
    UpdateStream -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The stream ID.
    UpdateStream -> Text
streamId :: Prelude.Text
  }
  deriving (UpdateStream -> UpdateStream -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateStream -> UpdateStream -> Bool
$c/= :: UpdateStream -> UpdateStream -> Bool
== :: UpdateStream -> UpdateStream -> Bool
$c== :: UpdateStream -> UpdateStream -> Bool
Prelude.Eq, ReadPrec [UpdateStream]
ReadPrec UpdateStream
Int -> ReadS UpdateStream
ReadS [UpdateStream]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateStream]
$creadListPrec :: ReadPrec [UpdateStream]
readPrec :: ReadPrec UpdateStream
$creadPrec :: ReadPrec UpdateStream
readList :: ReadS [UpdateStream]
$creadList :: ReadS [UpdateStream]
readsPrec :: Int -> ReadS UpdateStream
$creadsPrec :: Int -> ReadS UpdateStream
Prelude.Read, Int -> UpdateStream -> ShowS
[UpdateStream] -> ShowS
UpdateStream -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateStream] -> ShowS
$cshowList :: [UpdateStream] -> ShowS
show :: UpdateStream -> String
$cshow :: UpdateStream -> String
showsPrec :: Int -> UpdateStream -> ShowS
$cshowsPrec :: Int -> UpdateStream -> ShowS
Prelude.Show, forall x. Rep UpdateStream x -> UpdateStream
forall x. UpdateStream -> Rep UpdateStream x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateStream x -> UpdateStream
$cfrom :: forall x. UpdateStream -> Rep UpdateStream x
Prelude.Generic)

-- |
-- Create a value of 'UpdateStream' 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:
--
-- 'description', 'updateStream_description' - The description of the stream.
--
-- 'files', 'updateStream_files' - The files associated with the stream.
--
-- 'roleArn', 'updateStream_roleArn' - An IAM role that allows the IoT service principal assumes to access your
-- S3 files.
--
-- 'streamId', 'updateStream_streamId' - The stream ID.
newUpdateStream ::
  -- | 'streamId'
  Prelude.Text ->
  UpdateStream
newUpdateStream :: Text -> UpdateStream
newUpdateStream Text
pStreamId_ =
  UpdateStream'
    { $sel:description:UpdateStream' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:files:UpdateStream' :: Maybe (NonEmpty StreamFile)
files = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:UpdateStream' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:streamId:UpdateStream' :: Text
streamId = Text
pStreamId_
    }

-- | The description of the stream.
updateStream_description :: Lens.Lens' UpdateStream (Prelude.Maybe Prelude.Text)
updateStream_description :: Lens' UpdateStream (Maybe Text)
updateStream_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStream' {Maybe Text
description :: Maybe Text
$sel:description:UpdateStream' :: UpdateStream -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateStream
s@UpdateStream' {} Maybe Text
a -> UpdateStream
s {$sel:description:UpdateStream' :: Maybe Text
description = Maybe Text
a} :: UpdateStream)

-- | The files associated with the stream.
updateStream_files :: Lens.Lens' UpdateStream (Prelude.Maybe (Prelude.NonEmpty StreamFile))
updateStream_files :: Lens' UpdateStream (Maybe (NonEmpty StreamFile))
updateStream_files = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStream' {Maybe (NonEmpty StreamFile)
files :: Maybe (NonEmpty StreamFile)
$sel:files:UpdateStream' :: UpdateStream -> Maybe (NonEmpty StreamFile)
files} -> Maybe (NonEmpty StreamFile)
files) (\s :: UpdateStream
s@UpdateStream' {} Maybe (NonEmpty StreamFile)
a -> UpdateStream
s {$sel:files:UpdateStream' :: Maybe (NonEmpty StreamFile)
files = Maybe (NonEmpty StreamFile)
a} :: UpdateStream) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | An IAM role that allows the IoT service principal assumes to access your
-- S3 files.
updateStream_roleArn :: Lens.Lens' UpdateStream (Prelude.Maybe Prelude.Text)
updateStream_roleArn :: Lens' UpdateStream (Maybe Text)
updateStream_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStream' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:UpdateStream' :: UpdateStream -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: UpdateStream
s@UpdateStream' {} Maybe Text
a -> UpdateStream
s {$sel:roleArn:UpdateStream' :: Maybe Text
roleArn = Maybe Text
a} :: UpdateStream)

-- | The stream ID.
updateStream_streamId :: Lens.Lens' UpdateStream Prelude.Text
updateStream_streamId :: Lens' UpdateStream Text
updateStream_streamId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStream' {Text
streamId :: Text
$sel:streamId:UpdateStream' :: UpdateStream -> Text
streamId} -> Text
streamId) (\s :: UpdateStream
s@UpdateStream' {} Text
a -> UpdateStream
s {$sel:streamId:UpdateStream' :: Text
streamId = Text
a} :: UpdateStream)

instance Core.AWSRequest UpdateStream where
  type AWSResponse UpdateStream = UpdateStreamResponse
  request :: (Service -> Service) -> UpdateStream -> Request UpdateStream
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 UpdateStream
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse UpdateStream)))
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 Text
-> Maybe Text
-> Maybe Natural
-> Int
-> UpdateStreamResponse
UpdateStreamResponse'
            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
"description")
            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
"streamArn")
            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
"streamId")
            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
"streamVersion")
            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 UpdateStream where
  hashWithSalt :: Int -> UpdateStream -> Int
hashWithSalt Int
_salt UpdateStream' {Maybe (NonEmpty StreamFile)
Maybe Text
Text
streamId :: Text
roleArn :: Maybe Text
files :: Maybe (NonEmpty StreamFile)
description :: Maybe Text
$sel:streamId:UpdateStream' :: UpdateStream -> Text
$sel:roleArn:UpdateStream' :: UpdateStream -> Maybe Text
$sel:files:UpdateStream' :: UpdateStream -> Maybe (NonEmpty StreamFile)
$sel:description:UpdateStream' :: UpdateStream -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty StreamFile)
files
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
streamId

instance Prelude.NFData UpdateStream where
  rnf :: UpdateStream -> ()
rnf UpdateStream' {Maybe (NonEmpty StreamFile)
Maybe Text
Text
streamId :: Text
roleArn :: Maybe Text
files :: Maybe (NonEmpty StreamFile)
description :: Maybe Text
$sel:streamId:UpdateStream' :: UpdateStream -> Text
$sel:roleArn:UpdateStream' :: UpdateStream -> Maybe Text
$sel:files:UpdateStream' :: UpdateStream -> Maybe (NonEmpty StreamFile)
$sel:description:UpdateStream' :: UpdateStream -> Maybe Text
..} =
    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 (NonEmpty StreamFile)
files
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
streamId

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

instance Data.ToJSON UpdateStream where
  toJSON :: UpdateStream -> Value
toJSON UpdateStream' {Maybe (NonEmpty StreamFile)
Maybe Text
Text
streamId :: Text
roleArn :: Maybe Text
files :: Maybe (NonEmpty StreamFile)
description :: Maybe Text
$sel:streamId:UpdateStream' :: UpdateStream -> Text
$sel:roleArn:UpdateStream' :: UpdateStream -> Maybe Text
$sel:files:UpdateStream' :: UpdateStream -> Maybe (NonEmpty StreamFile)
$sel:description:UpdateStream' :: UpdateStream -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (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
"files" 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 (NonEmpty StreamFile)
files,
            (Key
"roleArn" 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
roleArn
          ]
      )

instance Data.ToPath UpdateStream where
  toPath :: UpdateStream -> ByteString
toPath UpdateStream' {Maybe (NonEmpty StreamFile)
Maybe Text
Text
streamId :: Text
roleArn :: Maybe Text
files :: Maybe (NonEmpty StreamFile)
description :: Maybe Text
$sel:streamId:UpdateStream' :: UpdateStream -> Text
$sel:roleArn:UpdateStream' :: UpdateStream -> Maybe Text
$sel:files:UpdateStream' :: UpdateStream -> Maybe (NonEmpty StreamFile)
$sel:description:UpdateStream' :: UpdateStream -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"/streams/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
streamId]

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

-- | /See:/ 'newUpdateStreamResponse' smart constructor.
data UpdateStreamResponse = UpdateStreamResponse'
  { -- | A description of the stream.
    UpdateStreamResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The stream ARN.
    UpdateStreamResponse -> Maybe Text
streamArn :: Prelude.Maybe Prelude.Text,
    -- | The stream ID.
    UpdateStreamResponse -> Maybe Text
streamId :: Prelude.Maybe Prelude.Text,
    -- | The stream version.
    UpdateStreamResponse -> Maybe Natural
streamVersion :: Prelude.Maybe Prelude.Natural,
    -- | The response's http status code.
    UpdateStreamResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateStreamResponse -> UpdateStreamResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateStreamResponse -> UpdateStreamResponse -> Bool
$c/= :: UpdateStreamResponse -> UpdateStreamResponse -> Bool
== :: UpdateStreamResponse -> UpdateStreamResponse -> Bool
$c== :: UpdateStreamResponse -> UpdateStreamResponse -> Bool
Prelude.Eq, ReadPrec [UpdateStreamResponse]
ReadPrec UpdateStreamResponse
Int -> ReadS UpdateStreamResponse
ReadS [UpdateStreamResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateStreamResponse]
$creadListPrec :: ReadPrec [UpdateStreamResponse]
readPrec :: ReadPrec UpdateStreamResponse
$creadPrec :: ReadPrec UpdateStreamResponse
readList :: ReadS [UpdateStreamResponse]
$creadList :: ReadS [UpdateStreamResponse]
readsPrec :: Int -> ReadS UpdateStreamResponse
$creadsPrec :: Int -> ReadS UpdateStreamResponse
Prelude.Read, Int -> UpdateStreamResponse -> ShowS
[UpdateStreamResponse] -> ShowS
UpdateStreamResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateStreamResponse] -> ShowS
$cshowList :: [UpdateStreamResponse] -> ShowS
show :: UpdateStreamResponse -> String
$cshow :: UpdateStreamResponse -> String
showsPrec :: Int -> UpdateStreamResponse -> ShowS
$cshowsPrec :: Int -> UpdateStreamResponse -> ShowS
Prelude.Show, forall x. Rep UpdateStreamResponse x -> UpdateStreamResponse
forall x. UpdateStreamResponse -> Rep UpdateStreamResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateStreamResponse x -> UpdateStreamResponse
$cfrom :: forall x. UpdateStreamResponse -> Rep UpdateStreamResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateStreamResponse' 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:
--
-- 'description', 'updateStreamResponse_description' - A description of the stream.
--
-- 'streamArn', 'updateStreamResponse_streamArn' - The stream ARN.
--
-- 'streamId', 'updateStreamResponse_streamId' - The stream ID.
--
-- 'streamVersion', 'updateStreamResponse_streamVersion' - The stream version.
--
-- 'httpStatus', 'updateStreamResponse_httpStatus' - The response's http status code.
newUpdateStreamResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateStreamResponse
newUpdateStreamResponse :: Int -> UpdateStreamResponse
newUpdateStreamResponse Int
pHttpStatus_ =
  UpdateStreamResponse'
    { $sel:description:UpdateStreamResponse' :: Maybe Text
description =
        forall a. Maybe a
Prelude.Nothing,
      $sel:streamArn:UpdateStreamResponse' :: Maybe Text
streamArn = forall a. Maybe a
Prelude.Nothing,
      $sel:streamId:UpdateStreamResponse' :: Maybe Text
streamId = forall a. Maybe a
Prelude.Nothing,
      $sel:streamVersion:UpdateStreamResponse' :: Maybe Natural
streamVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateStreamResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A description of the stream.
updateStreamResponse_description :: Lens.Lens' UpdateStreamResponse (Prelude.Maybe Prelude.Text)
updateStreamResponse_description :: Lens' UpdateStreamResponse (Maybe Text)
updateStreamResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStreamResponse' {Maybe Text
description :: Maybe Text
$sel:description:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateStreamResponse
s@UpdateStreamResponse' {} Maybe Text
a -> UpdateStreamResponse
s {$sel:description:UpdateStreamResponse' :: Maybe Text
description = Maybe Text
a} :: UpdateStreamResponse)

-- | The stream ARN.
updateStreamResponse_streamArn :: Lens.Lens' UpdateStreamResponse (Prelude.Maybe Prelude.Text)
updateStreamResponse_streamArn :: Lens' UpdateStreamResponse (Maybe Text)
updateStreamResponse_streamArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStreamResponse' {Maybe Text
streamArn :: Maybe Text
$sel:streamArn:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Text
streamArn} -> Maybe Text
streamArn) (\s :: UpdateStreamResponse
s@UpdateStreamResponse' {} Maybe Text
a -> UpdateStreamResponse
s {$sel:streamArn:UpdateStreamResponse' :: Maybe Text
streamArn = Maybe Text
a} :: UpdateStreamResponse)

-- | The stream ID.
updateStreamResponse_streamId :: Lens.Lens' UpdateStreamResponse (Prelude.Maybe Prelude.Text)
updateStreamResponse_streamId :: Lens' UpdateStreamResponse (Maybe Text)
updateStreamResponse_streamId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStreamResponse' {Maybe Text
streamId :: Maybe Text
$sel:streamId:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Text
streamId} -> Maybe Text
streamId) (\s :: UpdateStreamResponse
s@UpdateStreamResponse' {} Maybe Text
a -> UpdateStreamResponse
s {$sel:streamId:UpdateStreamResponse' :: Maybe Text
streamId = Maybe Text
a} :: UpdateStreamResponse)

-- | The stream version.
updateStreamResponse_streamVersion :: Lens.Lens' UpdateStreamResponse (Prelude.Maybe Prelude.Natural)
updateStreamResponse_streamVersion :: Lens' UpdateStreamResponse (Maybe Natural)
updateStreamResponse_streamVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStreamResponse' {Maybe Natural
streamVersion :: Maybe Natural
$sel:streamVersion:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Natural
streamVersion} -> Maybe Natural
streamVersion) (\s :: UpdateStreamResponse
s@UpdateStreamResponse' {} Maybe Natural
a -> UpdateStreamResponse
s {$sel:streamVersion:UpdateStreamResponse' :: Maybe Natural
streamVersion = Maybe Natural
a} :: UpdateStreamResponse)

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

instance Prelude.NFData UpdateStreamResponse where
  rnf :: UpdateStreamResponse -> ()
rnf UpdateStreamResponse' {Int
Maybe Natural
Maybe Text
httpStatus :: Int
streamVersion :: Maybe Natural
streamId :: Maybe Text
streamArn :: Maybe Text
description :: Maybe Text
$sel:httpStatus:UpdateStreamResponse' :: UpdateStreamResponse -> Int
$sel:streamVersion:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Natural
$sel:streamId:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Text
$sel:streamArn:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Text
$sel:description:UpdateStreamResponse' :: UpdateStreamResponse -> Maybe Text
..} =
    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 Text
streamArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
streamId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
streamVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus