{-# 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.GetAppInstanceStreamingConfigurations
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the streaming settings for an @AppInstance@.
module Amazonka.Chime.GetAppInstanceStreamingConfigurations
  ( -- * Creating a Request
    GetAppInstanceStreamingConfigurations (..),
    newGetAppInstanceStreamingConfigurations,

    -- * Request Lenses
    getAppInstanceStreamingConfigurations_appInstanceArn,

    -- * Destructuring the Response
    GetAppInstanceStreamingConfigurationsResponse (..),
    newGetAppInstanceStreamingConfigurationsResponse,

    -- * Response Lenses
    getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations,
    getAppInstanceStreamingConfigurationsResponse_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:/ 'newGetAppInstanceStreamingConfigurations' smart constructor.
data GetAppInstanceStreamingConfigurations = GetAppInstanceStreamingConfigurations'
  { -- | The ARN of the @AppInstance@.
    GetAppInstanceStreamingConfigurations -> Text
appInstanceArn :: Prelude.Text
  }
  deriving (GetAppInstanceStreamingConfigurations
-> GetAppInstanceStreamingConfigurations -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAppInstanceStreamingConfigurations
-> GetAppInstanceStreamingConfigurations -> Bool
$c/= :: GetAppInstanceStreamingConfigurations
-> GetAppInstanceStreamingConfigurations -> Bool
== :: GetAppInstanceStreamingConfigurations
-> GetAppInstanceStreamingConfigurations -> Bool
$c== :: GetAppInstanceStreamingConfigurations
-> GetAppInstanceStreamingConfigurations -> Bool
Prelude.Eq, ReadPrec [GetAppInstanceStreamingConfigurations]
ReadPrec GetAppInstanceStreamingConfigurations
Int -> ReadS GetAppInstanceStreamingConfigurations
ReadS [GetAppInstanceStreamingConfigurations]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetAppInstanceStreamingConfigurations]
$creadListPrec :: ReadPrec [GetAppInstanceStreamingConfigurations]
readPrec :: ReadPrec GetAppInstanceStreamingConfigurations
$creadPrec :: ReadPrec GetAppInstanceStreamingConfigurations
readList :: ReadS [GetAppInstanceStreamingConfigurations]
$creadList :: ReadS [GetAppInstanceStreamingConfigurations]
readsPrec :: Int -> ReadS GetAppInstanceStreamingConfigurations
$creadsPrec :: Int -> ReadS GetAppInstanceStreamingConfigurations
Prelude.Read, Int -> GetAppInstanceStreamingConfigurations -> ShowS
[GetAppInstanceStreamingConfigurations] -> ShowS
GetAppInstanceStreamingConfigurations -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetAppInstanceStreamingConfigurations] -> ShowS
$cshowList :: [GetAppInstanceStreamingConfigurations] -> ShowS
show :: GetAppInstanceStreamingConfigurations -> String
$cshow :: GetAppInstanceStreamingConfigurations -> String
showsPrec :: Int -> GetAppInstanceStreamingConfigurations -> ShowS
$cshowsPrec :: Int -> GetAppInstanceStreamingConfigurations -> ShowS
Prelude.Show, forall x.
Rep GetAppInstanceStreamingConfigurations x
-> GetAppInstanceStreamingConfigurations
forall x.
GetAppInstanceStreamingConfigurations
-> Rep GetAppInstanceStreamingConfigurations x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetAppInstanceStreamingConfigurations x
-> GetAppInstanceStreamingConfigurations
$cfrom :: forall x.
GetAppInstanceStreamingConfigurations
-> Rep GetAppInstanceStreamingConfigurations x
Prelude.Generic)

-- |
-- Create a value of 'GetAppInstanceStreamingConfigurations' 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:
--
-- 'appInstanceArn', 'getAppInstanceStreamingConfigurations_appInstanceArn' - The ARN of the @AppInstance@.
newGetAppInstanceStreamingConfigurations ::
  -- | 'appInstanceArn'
  Prelude.Text ->
  GetAppInstanceStreamingConfigurations
newGetAppInstanceStreamingConfigurations :: Text -> GetAppInstanceStreamingConfigurations
newGetAppInstanceStreamingConfigurations
  Text
pAppInstanceArn_ =
    GetAppInstanceStreamingConfigurations'
      { $sel:appInstanceArn:GetAppInstanceStreamingConfigurations' :: Text
appInstanceArn =
          Text
pAppInstanceArn_
      }

-- | The ARN of the @AppInstance@.
getAppInstanceStreamingConfigurations_appInstanceArn :: Lens.Lens' GetAppInstanceStreamingConfigurations Prelude.Text
getAppInstanceStreamingConfigurations_appInstanceArn :: Lens' GetAppInstanceStreamingConfigurations Text
getAppInstanceStreamingConfigurations_appInstanceArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppInstanceStreamingConfigurations' {Text
appInstanceArn :: Text
$sel:appInstanceArn:GetAppInstanceStreamingConfigurations' :: GetAppInstanceStreamingConfigurations -> Text
appInstanceArn} -> Text
appInstanceArn) (\s :: GetAppInstanceStreamingConfigurations
s@GetAppInstanceStreamingConfigurations' {} Text
a -> GetAppInstanceStreamingConfigurations
s {$sel:appInstanceArn:GetAppInstanceStreamingConfigurations' :: Text
appInstanceArn = Text
a} :: GetAppInstanceStreamingConfigurations)

instance
  Core.AWSRequest
    GetAppInstanceStreamingConfigurations
  where
  type
    AWSResponse
      GetAppInstanceStreamingConfigurations =
      GetAppInstanceStreamingConfigurationsResponse
  request :: (Service -> Service)
-> GetAppInstanceStreamingConfigurations
-> Request GetAppInstanceStreamingConfigurations
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetAppInstanceStreamingConfigurations
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse GetAppInstanceStreamingConfigurations)))
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 (NonEmpty AppInstanceStreamingConfiguration)
-> Int -> GetAppInstanceStreamingConfigurationsResponse
GetAppInstanceStreamingConfigurationsResponse'
            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
"AppInstanceStreamingConfigurations")
            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
    GetAppInstanceStreamingConfigurations
  where
  hashWithSalt :: Int -> GetAppInstanceStreamingConfigurations -> Int
hashWithSalt
    Int
_salt
    GetAppInstanceStreamingConfigurations' {Text
appInstanceArn :: Text
$sel:appInstanceArn:GetAppInstanceStreamingConfigurations' :: GetAppInstanceStreamingConfigurations -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
appInstanceArn

instance
  Prelude.NFData
    GetAppInstanceStreamingConfigurations
  where
  rnf :: GetAppInstanceStreamingConfigurations -> ()
rnf GetAppInstanceStreamingConfigurations' {Text
appInstanceArn :: Text
$sel:appInstanceArn:GetAppInstanceStreamingConfigurations' :: GetAppInstanceStreamingConfigurations -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
appInstanceArn

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

instance
  Data.ToPath
    GetAppInstanceStreamingConfigurations
  where
  toPath :: GetAppInstanceStreamingConfigurations -> ByteString
toPath GetAppInstanceStreamingConfigurations' {Text
appInstanceArn :: Text
$sel:appInstanceArn:GetAppInstanceStreamingConfigurations' :: GetAppInstanceStreamingConfigurations -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/app-instances/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
appInstanceArn,
        ByteString
"/streaming-configurations"
      ]

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

-- | /See:/ 'newGetAppInstanceStreamingConfigurationsResponse' smart constructor.
data GetAppInstanceStreamingConfigurationsResponse = GetAppInstanceStreamingConfigurationsResponse'
  { -- | The streaming settings.
    GetAppInstanceStreamingConfigurationsResponse
-> Maybe (NonEmpty AppInstanceStreamingConfiguration)
appInstanceStreamingConfigurations :: Prelude.Maybe (Prelude.NonEmpty AppInstanceStreamingConfiguration),
    -- | The response's http status code.
    GetAppInstanceStreamingConfigurationsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetAppInstanceStreamingConfigurationsResponse
-> GetAppInstanceStreamingConfigurationsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAppInstanceStreamingConfigurationsResponse
-> GetAppInstanceStreamingConfigurationsResponse -> Bool
$c/= :: GetAppInstanceStreamingConfigurationsResponse
-> GetAppInstanceStreamingConfigurationsResponse -> Bool
== :: GetAppInstanceStreamingConfigurationsResponse
-> GetAppInstanceStreamingConfigurationsResponse -> Bool
$c== :: GetAppInstanceStreamingConfigurationsResponse
-> GetAppInstanceStreamingConfigurationsResponse -> Bool
Prelude.Eq, Int -> GetAppInstanceStreamingConfigurationsResponse -> ShowS
[GetAppInstanceStreamingConfigurationsResponse] -> ShowS
GetAppInstanceStreamingConfigurationsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetAppInstanceStreamingConfigurationsResponse] -> ShowS
$cshowList :: [GetAppInstanceStreamingConfigurationsResponse] -> ShowS
show :: GetAppInstanceStreamingConfigurationsResponse -> String
$cshow :: GetAppInstanceStreamingConfigurationsResponse -> String
showsPrec :: Int -> GetAppInstanceStreamingConfigurationsResponse -> ShowS
$cshowsPrec :: Int -> GetAppInstanceStreamingConfigurationsResponse -> ShowS
Prelude.Show, forall x.
Rep GetAppInstanceStreamingConfigurationsResponse x
-> GetAppInstanceStreamingConfigurationsResponse
forall x.
GetAppInstanceStreamingConfigurationsResponse
-> Rep GetAppInstanceStreamingConfigurationsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetAppInstanceStreamingConfigurationsResponse x
-> GetAppInstanceStreamingConfigurationsResponse
$cfrom :: forall x.
GetAppInstanceStreamingConfigurationsResponse
-> Rep GetAppInstanceStreamingConfigurationsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetAppInstanceStreamingConfigurationsResponse' 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:
--
-- 'appInstanceStreamingConfigurations', 'getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations' - The streaming settings.
--
-- 'httpStatus', 'getAppInstanceStreamingConfigurationsResponse_httpStatus' - The response's http status code.
newGetAppInstanceStreamingConfigurationsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetAppInstanceStreamingConfigurationsResponse
newGetAppInstanceStreamingConfigurationsResponse :: Int -> GetAppInstanceStreamingConfigurationsResponse
newGetAppInstanceStreamingConfigurationsResponse
  Int
pHttpStatus_ =
    GetAppInstanceStreamingConfigurationsResponse'
      { $sel:appInstanceStreamingConfigurations:GetAppInstanceStreamingConfigurationsResponse' :: Maybe (NonEmpty AppInstanceStreamingConfiguration)
appInstanceStreamingConfigurations =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetAppInstanceStreamingConfigurationsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The streaming settings.
getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations :: Lens.Lens' GetAppInstanceStreamingConfigurationsResponse (Prelude.Maybe (Prelude.NonEmpty AppInstanceStreamingConfiguration))
getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations :: Lens'
  GetAppInstanceStreamingConfigurationsResponse
  (Maybe (NonEmpty AppInstanceStreamingConfiguration))
getAppInstanceStreamingConfigurationsResponse_appInstanceStreamingConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetAppInstanceStreamingConfigurationsResponse' {Maybe (NonEmpty AppInstanceStreamingConfiguration)
appInstanceStreamingConfigurations :: Maybe (NonEmpty AppInstanceStreamingConfiguration)
$sel:appInstanceStreamingConfigurations:GetAppInstanceStreamingConfigurationsResponse' :: GetAppInstanceStreamingConfigurationsResponse
-> Maybe (NonEmpty AppInstanceStreamingConfiguration)
appInstanceStreamingConfigurations} -> Maybe (NonEmpty AppInstanceStreamingConfiguration)
appInstanceStreamingConfigurations) (\s :: GetAppInstanceStreamingConfigurationsResponse
s@GetAppInstanceStreamingConfigurationsResponse' {} Maybe (NonEmpty AppInstanceStreamingConfiguration)
a -> GetAppInstanceStreamingConfigurationsResponse
s {$sel:appInstanceStreamingConfigurations:GetAppInstanceStreamingConfigurationsResponse' :: Maybe (NonEmpty AppInstanceStreamingConfiguration)
appInstanceStreamingConfigurations = Maybe (NonEmpty AppInstanceStreamingConfiguration)
a} :: GetAppInstanceStreamingConfigurationsResponse) 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

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

instance
  Prelude.NFData
    GetAppInstanceStreamingConfigurationsResponse
  where
  rnf :: GetAppInstanceStreamingConfigurationsResponse -> ()
rnf
    GetAppInstanceStreamingConfigurationsResponse' {Int
Maybe (NonEmpty AppInstanceStreamingConfiguration)
httpStatus :: Int
appInstanceStreamingConfigurations :: Maybe (NonEmpty AppInstanceStreamingConfiguration)
$sel:httpStatus:GetAppInstanceStreamingConfigurationsResponse' :: GetAppInstanceStreamingConfigurationsResponse -> Int
$sel:appInstanceStreamingConfigurations:GetAppInstanceStreamingConfigurationsResponse' :: GetAppInstanceStreamingConfigurationsResponse
-> Maybe (NonEmpty AppInstanceStreamingConfiguration)
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty AppInstanceStreamingConfiguration)
appInstanceStreamingConfigurations
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus