{-# 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.CloudSearch.DescribeDomainEndpointOptions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns the domain\'s endpoint options, specifically whether all
-- requests to the domain must arrive over HTTPS. For more information, see
-- <http://docs.aws.amazon.com/cloudsearch/latest/developerguide/configuring-domain-endpoint-options.html Configuring Domain Endpoint Options>
-- in the /Amazon CloudSearch Developer Guide/.
module Amazonka.CloudSearch.DescribeDomainEndpointOptions
  ( -- * Creating a Request
    DescribeDomainEndpointOptions (..),
    newDescribeDomainEndpointOptions,

    -- * Request Lenses
    describeDomainEndpointOptions_deployed,
    describeDomainEndpointOptions_domainName,

    -- * Destructuring the Response
    DescribeDomainEndpointOptionsResponse (..),
    newDescribeDomainEndpointOptionsResponse,

    -- * Response Lenses
    describeDomainEndpointOptionsResponse_domainEndpointOptions,
    describeDomainEndpointOptionsResponse_httpStatus,
  )
where

import Amazonka.CloudSearch.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

-- | Container for the parameters to the @DescribeDomainEndpointOptions@
-- operation. Specify the name of the domain you want to describe. To show
-- the active configuration and exclude any pending changes, set the
-- Deployed option to @true@.
--
-- /See:/ 'newDescribeDomainEndpointOptions' smart constructor.
data DescribeDomainEndpointOptions = DescribeDomainEndpointOptions'
  { -- | Whether to retrieve the latest configuration (which might be in a
    -- Processing state) or the current, active configuration. Defaults to
    -- @false@.
    DescribeDomainEndpointOptions -> Maybe Bool
deployed :: Prelude.Maybe Prelude.Bool,
    -- | A string that represents the name of a domain.
    DescribeDomainEndpointOptions -> Text
domainName :: Prelude.Text
  }
  deriving (DescribeDomainEndpointOptions
-> DescribeDomainEndpointOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDomainEndpointOptions
-> DescribeDomainEndpointOptions -> Bool
$c/= :: DescribeDomainEndpointOptions
-> DescribeDomainEndpointOptions -> Bool
== :: DescribeDomainEndpointOptions
-> DescribeDomainEndpointOptions -> Bool
$c== :: DescribeDomainEndpointOptions
-> DescribeDomainEndpointOptions -> Bool
Prelude.Eq, ReadPrec [DescribeDomainEndpointOptions]
ReadPrec DescribeDomainEndpointOptions
Int -> ReadS DescribeDomainEndpointOptions
ReadS [DescribeDomainEndpointOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDomainEndpointOptions]
$creadListPrec :: ReadPrec [DescribeDomainEndpointOptions]
readPrec :: ReadPrec DescribeDomainEndpointOptions
$creadPrec :: ReadPrec DescribeDomainEndpointOptions
readList :: ReadS [DescribeDomainEndpointOptions]
$creadList :: ReadS [DescribeDomainEndpointOptions]
readsPrec :: Int -> ReadS DescribeDomainEndpointOptions
$creadsPrec :: Int -> ReadS DescribeDomainEndpointOptions
Prelude.Read, Int -> DescribeDomainEndpointOptions -> ShowS
[DescribeDomainEndpointOptions] -> ShowS
DescribeDomainEndpointOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDomainEndpointOptions] -> ShowS
$cshowList :: [DescribeDomainEndpointOptions] -> ShowS
show :: DescribeDomainEndpointOptions -> String
$cshow :: DescribeDomainEndpointOptions -> String
showsPrec :: Int -> DescribeDomainEndpointOptions -> ShowS
$cshowsPrec :: Int -> DescribeDomainEndpointOptions -> ShowS
Prelude.Show, forall x.
Rep DescribeDomainEndpointOptions x
-> DescribeDomainEndpointOptions
forall x.
DescribeDomainEndpointOptions
-> Rep DescribeDomainEndpointOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDomainEndpointOptions x
-> DescribeDomainEndpointOptions
$cfrom :: forall x.
DescribeDomainEndpointOptions
-> Rep DescribeDomainEndpointOptions x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDomainEndpointOptions' 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:
--
-- 'deployed', 'describeDomainEndpointOptions_deployed' - Whether to retrieve the latest configuration (which might be in a
-- Processing state) or the current, active configuration. Defaults to
-- @false@.
--
-- 'domainName', 'describeDomainEndpointOptions_domainName' - A string that represents the name of a domain.
newDescribeDomainEndpointOptions ::
  -- | 'domainName'
  Prelude.Text ->
  DescribeDomainEndpointOptions
newDescribeDomainEndpointOptions :: Text -> DescribeDomainEndpointOptions
newDescribeDomainEndpointOptions Text
pDomainName_ =
  DescribeDomainEndpointOptions'
    { $sel:deployed:DescribeDomainEndpointOptions' :: Maybe Bool
deployed =
        forall a. Maybe a
Prelude.Nothing,
      $sel:domainName:DescribeDomainEndpointOptions' :: Text
domainName = Text
pDomainName_
    }

-- | Whether to retrieve the latest configuration (which might be in a
-- Processing state) or the current, active configuration. Defaults to
-- @false@.
describeDomainEndpointOptions_deployed :: Lens.Lens' DescribeDomainEndpointOptions (Prelude.Maybe Prelude.Bool)
describeDomainEndpointOptions_deployed :: Lens' DescribeDomainEndpointOptions (Maybe Bool)
describeDomainEndpointOptions_deployed = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainEndpointOptions' {Maybe Bool
deployed :: Maybe Bool
$sel:deployed:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Maybe Bool
deployed} -> Maybe Bool
deployed) (\s :: DescribeDomainEndpointOptions
s@DescribeDomainEndpointOptions' {} Maybe Bool
a -> DescribeDomainEndpointOptions
s {$sel:deployed:DescribeDomainEndpointOptions' :: Maybe Bool
deployed = Maybe Bool
a} :: DescribeDomainEndpointOptions)

-- | A string that represents the name of a domain.
describeDomainEndpointOptions_domainName :: Lens.Lens' DescribeDomainEndpointOptions Prelude.Text
describeDomainEndpointOptions_domainName :: Lens' DescribeDomainEndpointOptions Text
describeDomainEndpointOptions_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainEndpointOptions' {Text
domainName :: Text
$sel:domainName:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Text
domainName} -> Text
domainName) (\s :: DescribeDomainEndpointOptions
s@DescribeDomainEndpointOptions' {} Text
a -> DescribeDomainEndpointOptions
s {$sel:domainName:DescribeDomainEndpointOptions' :: Text
domainName = Text
a} :: DescribeDomainEndpointOptions)

instance
  Core.AWSRequest
    DescribeDomainEndpointOptions
  where
  type
    AWSResponse DescribeDomainEndpointOptions =
      DescribeDomainEndpointOptionsResponse
  request :: (Service -> Service)
-> DescribeDomainEndpointOptions
-> Request DescribeDomainEndpointOptions
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeDomainEndpointOptions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDomainEndpointOptions)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeDomainEndpointOptionsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe DomainEndpointOptionsStatus
-> Int -> DescribeDomainEndpointOptionsResponse
DescribeDomainEndpointOptionsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DomainEndpointOptions")
            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
    DescribeDomainEndpointOptions
  where
  hashWithSalt :: Int -> DescribeDomainEndpointOptions -> Int
hashWithSalt Int
_salt DescribeDomainEndpointOptions' {Maybe Bool
Text
domainName :: Text
deployed :: Maybe Bool
$sel:domainName:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Text
$sel:deployed:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
deployed
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainName

instance Prelude.NFData DescribeDomainEndpointOptions where
  rnf :: DescribeDomainEndpointOptions -> ()
rnf DescribeDomainEndpointOptions' {Maybe Bool
Text
domainName :: Text
deployed :: Maybe Bool
$sel:domainName:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Text
$sel:deployed:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
deployed
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domainName

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

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

instance Data.ToQuery DescribeDomainEndpointOptions where
  toQuery :: DescribeDomainEndpointOptions -> QueryString
toQuery DescribeDomainEndpointOptions' {Maybe Bool
Text
domainName :: Text
deployed :: Maybe Bool
$sel:domainName:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Text
$sel:deployed:DescribeDomainEndpointOptions' :: DescribeDomainEndpointOptions -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeDomainEndpointOptions" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2013-01-01" :: Prelude.ByteString),
        ByteString
"Deployed" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
deployed,
        ByteString
"DomainName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
domainName
      ]

-- | The result of a @DescribeDomainEndpointOptions@ request. Contains the
-- status and configuration of a search domain\'s endpoint options.
--
-- /See:/ 'newDescribeDomainEndpointOptionsResponse' smart constructor.
data DescribeDomainEndpointOptionsResponse = DescribeDomainEndpointOptionsResponse'
  { -- | The status and configuration of a search domain\'s endpoint options.
    DescribeDomainEndpointOptionsResponse
-> Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Prelude.Maybe DomainEndpointOptionsStatus,
    -- | The response's http status code.
    DescribeDomainEndpointOptionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDomainEndpointOptionsResponse
-> DescribeDomainEndpointOptionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDomainEndpointOptionsResponse
-> DescribeDomainEndpointOptionsResponse -> Bool
$c/= :: DescribeDomainEndpointOptionsResponse
-> DescribeDomainEndpointOptionsResponse -> Bool
== :: DescribeDomainEndpointOptionsResponse
-> DescribeDomainEndpointOptionsResponse -> Bool
$c== :: DescribeDomainEndpointOptionsResponse
-> DescribeDomainEndpointOptionsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeDomainEndpointOptionsResponse]
ReadPrec DescribeDomainEndpointOptionsResponse
Int -> ReadS DescribeDomainEndpointOptionsResponse
ReadS [DescribeDomainEndpointOptionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDomainEndpointOptionsResponse]
$creadListPrec :: ReadPrec [DescribeDomainEndpointOptionsResponse]
readPrec :: ReadPrec DescribeDomainEndpointOptionsResponse
$creadPrec :: ReadPrec DescribeDomainEndpointOptionsResponse
readList :: ReadS [DescribeDomainEndpointOptionsResponse]
$creadList :: ReadS [DescribeDomainEndpointOptionsResponse]
readsPrec :: Int -> ReadS DescribeDomainEndpointOptionsResponse
$creadsPrec :: Int -> ReadS DescribeDomainEndpointOptionsResponse
Prelude.Read, Int -> DescribeDomainEndpointOptionsResponse -> ShowS
[DescribeDomainEndpointOptionsResponse] -> ShowS
DescribeDomainEndpointOptionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDomainEndpointOptionsResponse] -> ShowS
$cshowList :: [DescribeDomainEndpointOptionsResponse] -> ShowS
show :: DescribeDomainEndpointOptionsResponse -> String
$cshow :: DescribeDomainEndpointOptionsResponse -> String
showsPrec :: Int -> DescribeDomainEndpointOptionsResponse -> ShowS
$cshowsPrec :: Int -> DescribeDomainEndpointOptionsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeDomainEndpointOptionsResponse x
-> DescribeDomainEndpointOptionsResponse
forall x.
DescribeDomainEndpointOptionsResponse
-> Rep DescribeDomainEndpointOptionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDomainEndpointOptionsResponse x
-> DescribeDomainEndpointOptionsResponse
$cfrom :: forall x.
DescribeDomainEndpointOptionsResponse
-> Rep DescribeDomainEndpointOptionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDomainEndpointOptionsResponse' 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:
--
-- 'domainEndpointOptions', 'describeDomainEndpointOptionsResponse_domainEndpointOptions' - The status and configuration of a search domain\'s endpoint options.
--
-- 'httpStatus', 'describeDomainEndpointOptionsResponse_httpStatus' - The response's http status code.
newDescribeDomainEndpointOptionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDomainEndpointOptionsResponse
newDescribeDomainEndpointOptionsResponse :: Int -> DescribeDomainEndpointOptionsResponse
newDescribeDomainEndpointOptionsResponse Int
pHttpStatus_ =
  DescribeDomainEndpointOptionsResponse'
    { $sel:domainEndpointOptions:DescribeDomainEndpointOptionsResponse' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDomainEndpointOptionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The status and configuration of a search domain\'s endpoint options.
describeDomainEndpointOptionsResponse_domainEndpointOptions :: Lens.Lens' DescribeDomainEndpointOptionsResponse (Prelude.Maybe DomainEndpointOptionsStatus)
describeDomainEndpointOptionsResponse_domainEndpointOptions :: Lens'
  DescribeDomainEndpointOptionsResponse
  (Maybe DomainEndpointOptionsStatus)
describeDomainEndpointOptionsResponse_domainEndpointOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDomainEndpointOptionsResponse' {Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Maybe DomainEndpointOptionsStatus
$sel:domainEndpointOptions:DescribeDomainEndpointOptionsResponse' :: DescribeDomainEndpointOptionsResponse
-> Maybe DomainEndpointOptionsStatus
domainEndpointOptions} -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions) (\s :: DescribeDomainEndpointOptionsResponse
s@DescribeDomainEndpointOptionsResponse' {} Maybe DomainEndpointOptionsStatus
a -> DescribeDomainEndpointOptionsResponse
s {$sel:domainEndpointOptions:DescribeDomainEndpointOptionsResponse' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions = Maybe DomainEndpointOptionsStatus
a} :: DescribeDomainEndpointOptionsResponse)

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

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