{-# 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.ChimeSdkVoice.UpdateSipMediaApplication
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- -- | Undocumented operation.
module Amazonka.ChimeSdkVoice.UpdateSipMediaApplication
  ( -- * Creating a Request
    UpdateSipMediaApplication (..),
    newUpdateSipMediaApplication,

    -- * Request Lenses
    updateSipMediaApplication_endpoints,
    updateSipMediaApplication_name,
    updateSipMediaApplication_sipMediaApplicationId,

    -- * Destructuring the Response
    UpdateSipMediaApplicationResponse (..),
    newUpdateSipMediaApplicationResponse,

    -- * Response Lenses
    updateSipMediaApplicationResponse_sipMediaApplication,
    updateSipMediaApplicationResponse_httpStatus,
  )
where

import Amazonka.ChimeSdkVoice.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:/ 'newUpdateSipMediaApplication' smart constructor.
data UpdateSipMediaApplication = UpdateSipMediaApplication'
  { UpdateSipMediaApplication
-> Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints :: Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint),
    UpdateSipMediaApplication -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    UpdateSipMediaApplication -> Text
sipMediaApplicationId :: Prelude.Text
  }
  deriving (UpdateSipMediaApplication -> UpdateSipMediaApplication -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateSipMediaApplication -> UpdateSipMediaApplication -> Bool
$c/= :: UpdateSipMediaApplication -> UpdateSipMediaApplication -> Bool
== :: UpdateSipMediaApplication -> UpdateSipMediaApplication -> Bool
$c== :: UpdateSipMediaApplication -> UpdateSipMediaApplication -> Bool
Prelude.Eq, Int -> UpdateSipMediaApplication -> ShowS
[UpdateSipMediaApplication] -> ShowS
UpdateSipMediaApplication -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateSipMediaApplication] -> ShowS
$cshowList :: [UpdateSipMediaApplication] -> ShowS
show :: UpdateSipMediaApplication -> String
$cshow :: UpdateSipMediaApplication -> String
showsPrec :: Int -> UpdateSipMediaApplication -> ShowS
$cshowsPrec :: Int -> UpdateSipMediaApplication -> ShowS
Prelude.Show, forall x.
Rep UpdateSipMediaApplication x -> UpdateSipMediaApplication
forall x.
UpdateSipMediaApplication -> Rep UpdateSipMediaApplication x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateSipMediaApplication x -> UpdateSipMediaApplication
$cfrom :: forall x.
UpdateSipMediaApplication -> Rep UpdateSipMediaApplication x
Prelude.Generic)

-- |
-- Create a value of 'UpdateSipMediaApplication' 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:
--
-- 'endpoints', 'updateSipMediaApplication_endpoints' - Undocumented member.
--
-- 'name', 'updateSipMediaApplication_name' - Undocumented member.
--
-- 'sipMediaApplicationId', 'updateSipMediaApplication_sipMediaApplicationId' - Undocumented member.
newUpdateSipMediaApplication ::
  -- | 'sipMediaApplicationId'
  Prelude.Text ->
  UpdateSipMediaApplication
newUpdateSipMediaApplication :: Text -> UpdateSipMediaApplication
newUpdateSipMediaApplication Text
pSipMediaApplicationId_ =
  UpdateSipMediaApplication'
    { $sel:endpoints:UpdateSipMediaApplication' :: Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints =
        forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateSipMediaApplication' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:sipMediaApplicationId:UpdateSipMediaApplication' :: Text
sipMediaApplicationId = Text
pSipMediaApplicationId_
    }

-- | Undocumented member.
updateSipMediaApplication_endpoints :: Lens.Lens' UpdateSipMediaApplication (Prelude.Maybe (Prelude.NonEmpty SipMediaApplicationEndpoint))
updateSipMediaApplication_endpoints :: Lens'
  UpdateSipMediaApplication
  (Maybe (NonEmpty SipMediaApplicationEndpoint))
updateSipMediaApplication_endpoints = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateSipMediaApplication' {Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints :: Maybe (NonEmpty SipMediaApplicationEndpoint)
$sel:endpoints:UpdateSipMediaApplication' :: UpdateSipMediaApplication
-> Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints} -> Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints) (\s :: UpdateSipMediaApplication
s@UpdateSipMediaApplication' {} Maybe (NonEmpty SipMediaApplicationEndpoint)
a -> UpdateSipMediaApplication
s {$sel:endpoints:UpdateSipMediaApplication' :: Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints = Maybe (NonEmpty SipMediaApplicationEndpoint)
a} :: UpdateSipMediaApplication) 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

-- | Undocumented member.
updateSipMediaApplication_name :: Lens.Lens' UpdateSipMediaApplication (Prelude.Maybe Prelude.Text)
updateSipMediaApplication_name :: Lens' UpdateSipMediaApplication (Maybe Text)
updateSipMediaApplication_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateSipMediaApplication' {Maybe Text
name :: Maybe Text
$sel:name:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Maybe Text
name} -> Maybe Text
name) (\s :: UpdateSipMediaApplication
s@UpdateSipMediaApplication' {} Maybe Text
a -> UpdateSipMediaApplication
s {$sel:name:UpdateSipMediaApplication' :: Maybe Text
name = Maybe Text
a} :: UpdateSipMediaApplication)

-- | Undocumented member.
updateSipMediaApplication_sipMediaApplicationId :: Lens.Lens' UpdateSipMediaApplication Prelude.Text
updateSipMediaApplication_sipMediaApplicationId :: Lens' UpdateSipMediaApplication Text
updateSipMediaApplication_sipMediaApplicationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateSipMediaApplication' {Text
sipMediaApplicationId :: Text
$sel:sipMediaApplicationId:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Text
sipMediaApplicationId} -> Text
sipMediaApplicationId) (\s :: UpdateSipMediaApplication
s@UpdateSipMediaApplication' {} Text
a -> UpdateSipMediaApplication
s {$sel:sipMediaApplicationId:UpdateSipMediaApplication' :: Text
sipMediaApplicationId = Text
a} :: UpdateSipMediaApplication)

instance Core.AWSRequest UpdateSipMediaApplication where
  type
    AWSResponse UpdateSipMediaApplication =
      UpdateSipMediaApplicationResponse
  request :: (Service -> Service)
-> UpdateSipMediaApplication -> Request UpdateSipMediaApplication
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 UpdateSipMediaApplication
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateSipMediaApplication)))
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 SipMediaApplication
-> Int -> UpdateSipMediaApplicationResponse
UpdateSipMediaApplicationResponse'
            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
"SipMediaApplication")
            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 UpdateSipMediaApplication where
  hashWithSalt :: Int -> UpdateSipMediaApplication -> Int
hashWithSalt Int
_salt UpdateSipMediaApplication' {Maybe (NonEmpty SipMediaApplicationEndpoint)
Maybe Text
Text
sipMediaApplicationId :: Text
name :: Maybe Text
endpoints :: Maybe (NonEmpty SipMediaApplicationEndpoint)
$sel:sipMediaApplicationId:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Text
$sel:name:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Maybe Text
$sel:endpoints:UpdateSipMediaApplication' :: UpdateSipMediaApplication
-> Maybe (NonEmpty SipMediaApplicationEndpoint)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
sipMediaApplicationId

instance Prelude.NFData UpdateSipMediaApplication where
  rnf :: UpdateSipMediaApplication -> ()
rnf UpdateSipMediaApplication' {Maybe (NonEmpty SipMediaApplicationEndpoint)
Maybe Text
Text
sipMediaApplicationId :: Text
name :: Maybe Text
endpoints :: Maybe (NonEmpty SipMediaApplicationEndpoint)
$sel:sipMediaApplicationId:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Text
$sel:name:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Maybe Text
$sel:endpoints:UpdateSipMediaApplication' :: UpdateSipMediaApplication
-> Maybe (NonEmpty SipMediaApplicationEndpoint)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty SipMediaApplicationEndpoint)
endpoints
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
sipMediaApplicationId

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

instance Data.ToJSON UpdateSipMediaApplication where
  toJSON :: UpdateSipMediaApplication -> Value
toJSON UpdateSipMediaApplication' {Maybe (NonEmpty SipMediaApplicationEndpoint)
Maybe Text
Text
sipMediaApplicationId :: Text
name :: Maybe Text
endpoints :: Maybe (NonEmpty SipMediaApplicationEndpoint)
$sel:sipMediaApplicationId:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Text
$sel:name:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Maybe Text
$sel:endpoints:UpdateSipMediaApplication' :: UpdateSipMediaApplication
-> Maybe (NonEmpty SipMediaApplicationEndpoint)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Endpoints" 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 SipMediaApplicationEndpoint)
endpoints,
            (Key
"Name" 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
name
          ]
      )

instance Data.ToPath UpdateSipMediaApplication where
  toPath :: UpdateSipMediaApplication -> ByteString
toPath UpdateSipMediaApplication' {Maybe (NonEmpty SipMediaApplicationEndpoint)
Maybe Text
Text
sipMediaApplicationId :: Text
name :: Maybe Text
endpoints :: Maybe (NonEmpty SipMediaApplicationEndpoint)
$sel:sipMediaApplicationId:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Text
$sel:name:UpdateSipMediaApplication' :: UpdateSipMediaApplication -> Maybe Text
$sel:endpoints:UpdateSipMediaApplication' :: UpdateSipMediaApplication
-> Maybe (NonEmpty SipMediaApplicationEndpoint)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/sip-media-applications/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
sipMediaApplicationId
      ]

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

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

-- |
-- Create a value of 'UpdateSipMediaApplicationResponse' 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:
--
-- 'sipMediaApplication', 'updateSipMediaApplicationResponse_sipMediaApplication' - Undocumented member.
--
-- 'httpStatus', 'updateSipMediaApplicationResponse_httpStatus' - The response's http status code.
newUpdateSipMediaApplicationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateSipMediaApplicationResponse
newUpdateSipMediaApplicationResponse :: Int -> UpdateSipMediaApplicationResponse
newUpdateSipMediaApplicationResponse Int
pHttpStatus_ =
  UpdateSipMediaApplicationResponse'
    { $sel:sipMediaApplication:UpdateSipMediaApplicationResponse' :: Maybe SipMediaApplication
sipMediaApplication =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateSipMediaApplicationResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
updateSipMediaApplicationResponse_sipMediaApplication :: Lens.Lens' UpdateSipMediaApplicationResponse (Prelude.Maybe SipMediaApplication)
updateSipMediaApplicationResponse_sipMediaApplication :: Lens' UpdateSipMediaApplicationResponse (Maybe SipMediaApplication)
updateSipMediaApplicationResponse_sipMediaApplication = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateSipMediaApplicationResponse' {Maybe SipMediaApplication
sipMediaApplication :: Maybe SipMediaApplication
$sel:sipMediaApplication:UpdateSipMediaApplicationResponse' :: UpdateSipMediaApplicationResponse -> Maybe SipMediaApplication
sipMediaApplication} -> Maybe SipMediaApplication
sipMediaApplication) (\s :: UpdateSipMediaApplicationResponse
s@UpdateSipMediaApplicationResponse' {} Maybe SipMediaApplication
a -> UpdateSipMediaApplicationResponse
s {$sel:sipMediaApplication:UpdateSipMediaApplicationResponse' :: Maybe SipMediaApplication
sipMediaApplication = Maybe SipMediaApplication
a} :: UpdateSipMediaApplicationResponse)

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

instance
  Prelude.NFData
    UpdateSipMediaApplicationResponse
  where
  rnf :: UpdateSipMediaApplicationResponse -> ()
rnf UpdateSipMediaApplicationResponse' {Int
Maybe SipMediaApplication
httpStatus :: Int
sipMediaApplication :: Maybe SipMediaApplication
$sel:httpStatus:UpdateSipMediaApplicationResponse' :: UpdateSipMediaApplicationResponse -> Int
$sel:sipMediaApplication:UpdateSipMediaApplicationResponse' :: UpdateSipMediaApplicationResponse -> Maybe SipMediaApplication
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe SipMediaApplication
sipMediaApplication
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus