{-# 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.AlexaBusiness.GetConferenceProvider
-- 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 details about a specific conference provider.
module Amazonka.AlexaBusiness.GetConferenceProvider
  ( -- * Creating a Request
    GetConferenceProvider (..),
    newGetConferenceProvider,

    -- * Request Lenses
    getConferenceProvider_conferenceProviderArn,

    -- * Destructuring the Response
    GetConferenceProviderResponse (..),
    newGetConferenceProviderResponse,

    -- * Response Lenses
    getConferenceProviderResponse_conferenceProvider,
    getConferenceProviderResponse_httpStatus,
  )
where

import Amazonka.AlexaBusiness.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:/ 'newGetConferenceProvider' smart constructor.
data GetConferenceProvider = GetConferenceProvider'
  { -- | The ARN of the newly created conference provider.
    GetConferenceProvider -> Text
conferenceProviderArn :: Prelude.Text
  }
  deriving (GetConferenceProvider -> GetConferenceProvider -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetConferenceProvider -> GetConferenceProvider -> Bool
$c/= :: GetConferenceProvider -> GetConferenceProvider -> Bool
== :: GetConferenceProvider -> GetConferenceProvider -> Bool
$c== :: GetConferenceProvider -> GetConferenceProvider -> Bool
Prelude.Eq, ReadPrec [GetConferenceProvider]
ReadPrec GetConferenceProvider
Int -> ReadS GetConferenceProvider
ReadS [GetConferenceProvider]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetConferenceProvider]
$creadListPrec :: ReadPrec [GetConferenceProvider]
readPrec :: ReadPrec GetConferenceProvider
$creadPrec :: ReadPrec GetConferenceProvider
readList :: ReadS [GetConferenceProvider]
$creadList :: ReadS [GetConferenceProvider]
readsPrec :: Int -> ReadS GetConferenceProvider
$creadsPrec :: Int -> ReadS GetConferenceProvider
Prelude.Read, Int -> GetConferenceProvider -> ShowS
[GetConferenceProvider] -> ShowS
GetConferenceProvider -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetConferenceProvider] -> ShowS
$cshowList :: [GetConferenceProvider] -> ShowS
show :: GetConferenceProvider -> String
$cshow :: GetConferenceProvider -> String
showsPrec :: Int -> GetConferenceProvider -> ShowS
$cshowsPrec :: Int -> GetConferenceProvider -> ShowS
Prelude.Show, forall x. Rep GetConferenceProvider x -> GetConferenceProvider
forall x. GetConferenceProvider -> Rep GetConferenceProvider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetConferenceProvider x -> GetConferenceProvider
$cfrom :: forall x. GetConferenceProvider -> Rep GetConferenceProvider x
Prelude.Generic)

-- |
-- Create a value of 'GetConferenceProvider' 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:
--
-- 'conferenceProviderArn', 'getConferenceProvider_conferenceProviderArn' - The ARN of the newly created conference provider.
newGetConferenceProvider ::
  -- | 'conferenceProviderArn'
  Prelude.Text ->
  GetConferenceProvider
newGetConferenceProvider :: Text -> GetConferenceProvider
newGetConferenceProvider Text
pConferenceProviderArn_ =
  GetConferenceProvider'
    { $sel:conferenceProviderArn:GetConferenceProvider' :: Text
conferenceProviderArn =
        Text
pConferenceProviderArn_
    }

-- | The ARN of the newly created conference provider.
getConferenceProvider_conferenceProviderArn :: Lens.Lens' GetConferenceProvider Prelude.Text
getConferenceProvider_conferenceProviderArn :: Lens' GetConferenceProvider Text
getConferenceProvider_conferenceProviderArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConferenceProvider' {Text
conferenceProviderArn :: Text
$sel:conferenceProviderArn:GetConferenceProvider' :: GetConferenceProvider -> Text
conferenceProviderArn} -> Text
conferenceProviderArn) (\s :: GetConferenceProvider
s@GetConferenceProvider' {} Text
a -> GetConferenceProvider
s {$sel:conferenceProviderArn:GetConferenceProvider' :: Text
conferenceProviderArn = Text
a} :: GetConferenceProvider)

instance Core.AWSRequest GetConferenceProvider where
  type
    AWSResponse GetConferenceProvider =
      GetConferenceProviderResponse
  request :: (Service -> Service)
-> GetConferenceProvider -> Request GetConferenceProvider
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetConferenceProvider
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetConferenceProvider)))
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 ConferenceProvider -> Int -> GetConferenceProviderResponse
GetConferenceProviderResponse'
            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
"ConferenceProvider")
            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 GetConferenceProvider where
  hashWithSalt :: Int -> GetConferenceProvider -> Int
hashWithSalt Int
_salt GetConferenceProvider' {Text
conferenceProviderArn :: Text
$sel:conferenceProviderArn:GetConferenceProvider' :: GetConferenceProvider -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
conferenceProviderArn

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

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

instance Data.ToJSON GetConferenceProvider where
  toJSON :: GetConferenceProvider -> Value
toJSON GetConferenceProvider' {Text
conferenceProviderArn :: Text
$sel:conferenceProviderArn:GetConferenceProvider' :: GetConferenceProvider -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              ( Key
"ConferenceProviderArn"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
conferenceProviderArn
              )
          ]
      )

instance Data.ToPath GetConferenceProvider where
  toPath :: GetConferenceProvider -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newGetConferenceProviderResponse' smart constructor.
data GetConferenceProviderResponse = GetConferenceProviderResponse'
  { -- | The conference provider.
    GetConferenceProviderResponse -> Maybe ConferenceProvider
conferenceProvider :: Prelude.Maybe ConferenceProvider,
    -- | The response's http status code.
    GetConferenceProviderResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetConferenceProviderResponse
-> GetConferenceProviderResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetConferenceProviderResponse
-> GetConferenceProviderResponse -> Bool
$c/= :: GetConferenceProviderResponse
-> GetConferenceProviderResponse -> Bool
== :: GetConferenceProviderResponse
-> GetConferenceProviderResponse -> Bool
$c== :: GetConferenceProviderResponse
-> GetConferenceProviderResponse -> Bool
Prelude.Eq, ReadPrec [GetConferenceProviderResponse]
ReadPrec GetConferenceProviderResponse
Int -> ReadS GetConferenceProviderResponse
ReadS [GetConferenceProviderResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetConferenceProviderResponse]
$creadListPrec :: ReadPrec [GetConferenceProviderResponse]
readPrec :: ReadPrec GetConferenceProviderResponse
$creadPrec :: ReadPrec GetConferenceProviderResponse
readList :: ReadS [GetConferenceProviderResponse]
$creadList :: ReadS [GetConferenceProviderResponse]
readsPrec :: Int -> ReadS GetConferenceProviderResponse
$creadsPrec :: Int -> ReadS GetConferenceProviderResponse
Prelude.Read, Int -> GetConferenceProviderResponse -> ShowS
[GetConferenceProviderResponse] -> ShowS
GetConferenceProviderResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetConferenceProviderResponse] -> ShowS
$cshowList :: [GetConferenceProviderResponse] -> ShowS
show :: GetConferenceProviderResponse -> String
$cshow :: GetConferenceProviderResponse -> String
showsPrec :: Int -> GetConferenceProviderResponse -> ShowS
$cshowsPrec :: Int -> GetConferenceProviderResponse -> ShowS
Prelude.Show, forall x.
Rep GetConferenceProviderResponse x
-> GetConferenceProviderResponse
forall x.
GetConferenceProviderResponse
-> Rep GetConferenceProviderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetConferenceProviderResponse x
-> GetConferenceProviderResponse
$cfrom :: forall x.
GetConferenceProviderResponse
-> Rep GetConferenceProviderResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetConferenceProviderResponse' 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:
--
-- 'conferenceProvider', 'getConferenceProviderResponse_conferenceProvider' - The conference provider.
--
-- 'httpStatus', 'getConferenceProviderResponse_httpStatus' - The response's http status code.
newGetConferenceProviderResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetConferenceProviderResponse
newGetConferenceProviderResponse :: Int -> GetConferenceProviderResponse
newGetConferenceProviderResponse Int
pHttpStatus_ =
  GetConferenceProviderResponse'
    { $sel:conferenceProvider:GetConferenceProviderResponse' :: Maybe ConferenceProvider
conferenceProvider =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetConferenceProviderResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The conference provider.
getConferenceProviderResponse_conferenceProvider :: Lens.Lens' GetConferenceProviderResponse (Prelude.Maybe ConferenceProvider)
getConferenceProviderResponse_conferenceProvider :: Lens' GetConferenceProviderResponse (Maybe ConferenceProvider)
getConferenceProviderResponse_conferenceProvider = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetConferenceProviderResponse' {Maybe ConferenceProvider
conferenceProvider :: Maybe ConferenceProvider
$sel:conferenceProvider:GetConferenceProviderResponse' :: GetConferenceProviderResponse -> Maybe ConferenceProvider
conferenceProvider} -> Maybe ConferenceProvider
conferenceProvider) (\s :: GetConferenceProviderResponse
s@GetConferenceProviderResponse' {} Maybe ConferenceProvider
a -> GetConferenceProviderResponse
s {$sel:conferenceProvider:GetConferenceProviderResponse' :: Maybe ConferenceProvider
conferenceProvider = Maybe ConferenceProvider
a} :: GetConferenceProviderResponse)

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

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