{-# 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.GetPhoneNumberOrder
-- 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.GetPhoneNumberOrder
  ( -- * Creating a Request
    GetPhoneNumberOrder (..),
    newGetPhoneNumberOrder,

    -- * Request Lenses
    getPhoneNumberOrder_phoneNumberOrderId,

    -- * Destructuring the Response
    GetPhoneNumberOrderResponse (..),
    newGetPhoneNumberOrderResponse,

    -- * Response Lenses
    getPhoneNumberOrderResponse_phoneNumberOrder,
    getPhoneNumberOrderResponse_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:/ 'newGetPhoneNumberOrder' smart constructor.
data GetPhoneNumberOrder = GetPhoneNumberOrder'
  { GetPhoneNumberOrder -> Text
phoneNumberOrderId :: Prelude.Text
  }
  deriving (GetPhoneNumberOrder -> GetPhoneNumberOrder -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPhoneNumberOrder -> GetPhoneNumberOrder -> Bool
$c/= :: GetPhoneNumberOrder -> GetPhoneNumberOrder -> Bool
== :: GetPhoneNumberOrder -> GetPhoneNumberOrder -> Bool
$c== :: GetPhoneNumberOrder -> GetPhoneNumberOrder -> Bool
Prelude.Eq, ReadPrec [GetPhoneNumberOrder]
ReadPrec GetPhoneNumberOrder
Int -> ReadS GetPhoneNumberOrder
ReadS [GetPhoneNumberOrder]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetPhoneNumberOrder]
$creadListPrec :: ReadPrec [GetPhoneNumberOrder]
readPrec :: ReadPrec GetPhoneNumberOrder
$creadPrec :: ReadPrec GetPhoneNumberOrder
readList :: ReadS [GetPhoneNumberOrder]
$creadList :: ReadS [GetPhoneNumberOrder]
readsPrec :: Int -> ReadS GetPhoneNumberOrder
$creadsPrec :: Int -> ReadS GetPhoneNumberOrder
Prelude.Read, Int -> GetPhoneNumberOrder -> ShowS
[GetPhoneNumberOrder] -> ShowS
GetPhoneNumberOrder -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPhoneNumberOrder] -> ShowS
$cshowList :: [GetPhoneNumberOrder] -> ShowS
show :: GetPhoneNumberOrder -> String
$cshow :: GetPhoneNumberOrder -> String
showsPrec :: Int -> GetPhoneNumberOrder -> ShowS
$cshowsPrec :: Int -> GetPhoneNumberOrder -> ShowS
Prelude.Show, forall x. Rep GetPhoneNumberOrder x -> GetPhoneNumberOrder
forall x. GetPhoneNumberOrder -> Rep GetPhoneNumberOrder x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetPhoneNumberOrder x -> GetPhoneNumberOrder
$cfrom :: forall x. GetPhoneNumberOrder -> Rep GetPhoneNumberOrder x
Prelude.Generic)

-- |
-- Create a value of 'GetPhoneNumberOrder' 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:
--
-- 'phoneNumberOrderId', 'getPhoneNumberOrder_phoneNumberOrderId' - Undocumented member.
newGetPhoneNumberOrder ::
  -- | 'phoneNumberOrderId'
  Prelude.Text ->
  GetPhoneNumberOrder
newGetPhoneNumberOrder :: Text -> GetPhoneNumberOrder
newGetPhoneNumberOrder Text
pPhoneNumberOrderId_ =
  GetPhoneNumberOrder'
    { $sel:phoneNumberOrderId:GetPhoneNumberOrder' :: Text
phoneNumberOrderId =
        Text
pPhoneNumberOrderId_
    }

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

instance Core.AWSRequest GetPhoneNumberOrder where
  type
    AWSResponse GetPhoneNumberOrder =
      GetPhoneNumberOrderResponse
  request :: (Service -> Service)
-> GetPhoneNumberOrder -> Request GetPhoneNumberOrder
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 GetPhoneNumberOrder
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetPhoneNumberOrder)))
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 PhoneNumberOrder -> Int -> GetPhoneNumberOrderResponse
GetPhoneNumberOrderResponse'
            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
"PhoneNumberOrder")
            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 GetPhoneNumberOrder where
  hashWithSalt :: Int -> GetPhoneNumberOrder -> Int
hashWithSalt Int
_salt GetPhoneNumberOrder' {Text
phoneNumberOrderId :: Text
$sel:phoneNumberOrderId:GetPhoneNumberOrder' :: GetPhoneNumberOrder -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
phoneNumberOrderId

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

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

instance Data.ToPath GetPhoneNumberOrder where
  toPath :: GetPhoneNumberOrder -> ByteString
toPath GetPhoneNumberOrder' {Text
phoneNumberOrderId :: Text
$sel:phoneNumberOrderId:GetPhoneNumberOrder' :: GetPhoneNumberOrder -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/phone-number-orders/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
phoneNumberOrderId
      ]

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

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

-- |
-- Create a value of 'GetPhoneNumberOrderResponse' 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:
--
-- 'phoneNumberOrder', 'getPhoneNumberOrderResponse_phoneNumberOrder' - Undocumented member.
--
-- 'httpStatus', 'getPhoneNumberOrderResponse_httpStatus' - The response's http status code.
newGetPhoneNumberOrderResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetPhoneNumberOrderResponse
newGetPhoneNumberOrderResponse :: Int -> GetPhoneNumberOrderResponse
newGetPhoneNumberOrderResponse Int
pHttpStatus_ =
  GetPhoneNumberOrderResponse'
    { $sel:phoneNumberOrder:GetPhoneNumberOrderResponse' :: Maybe PhoneNumberOrder
phoneNumberOrder =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetPhoneNumberOrderResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
getPhoneNumberOrderResponse_phoneNumberOrder :: Lens.Lens' GetPhoneNumberOrderResponse (Prelude.Maybe PhoneNumberOrder)
getPhoneNumberOrderResponse_phoneNumberOrder :: Lens' GetPhoneNumberOrderResponse (Maybe PhoneNumberOrder)
getPhoneNumberOrderResponse_phoneNumberOrder = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPhoneNumberOrderResponse' {Maybe PhoneNumberOrder
phoneNumberOrder :: Maybe PhoneNumberOrder
$sel:phoneNumberOrder:GetPhoneNumberOrderResponse' :: GetPhoneNumberOrderResponse -> Maybe PhoneNumberOrder
phoneNumberOrder} -> Maybe PhoneNumberOrder
phoneNumberOrder) (\s :: GetPhoneNumberOrderResponse
s@GetPhoneNumberOrderResponse' {} Maybe PhoneNumberOrder
a -> GetPhoneNumberOrderResponse
s {$sel:phoneNumberOrder:GetPhoneNumberOrderResponse' :: Maybe PhoneNumberOrder
phoneNumberOrder = Maybe PhoneNumberOrder
a} :: GetPhoneNumberOrderResponse)

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

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