{-# 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.Shield.EnableProactiveEngagement
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Authorizes the Shield Response Team (SRT) to use email and phone to
-- notify contacts about escalations to the SRT and to initiate proactive
-- customer support.
module Amazonka.Shield.EnableProactiveEngagement
  ( -- * Creating a Request
    EnableProactiveEngagement (..),
    newEnableProactiveEngagement,

    -- * Destructuring the Response
    EnableProactiveEngagementResponse (..),
    newEnableProactiveEngagementResponse,

    -- * Response Lenses
    enableProactiveEngagementResponse_httpStatus,
  )
where

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
import Amazonka.Shield.Types

-- | /See:/ 'newEnableProactiveEngagement' smart constructor.
data EnableProactiveEngagement = EnableProactiveEngagement'
  {
  }
  deriving (EnableProactiveEngagement -> EnableProactiveEngagement -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EnableProactiveEngagement -> EnableProactiveEngagement -> Bool
$c/= :: EnableProactiveEngagement -> EnableProactiveEngagement -> Bool
== :: EnableProactiveEngagement -> EnableProactiveEngagement -> Bool
$c== :: EnableProactiveEngagement -> EnableProactiveEngagement -> Bool
Prelude.Eq, ReadPrec [EnableProactiveEngagement]
ReadPrec EnableProactiveEngagement
Int -> ReadS EnableProactiveEngagement
ReadS [EnableProactiveEngagement]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EnableProactiveEngagement]
$creadListPrec :: ReadPrec [EnableProactiveEngagement]
readPrec :: ReadPrec EnableProactiveEngagement
$creadPrec :: ReadPrec EnableProactiveEngagement
readList :: ReadS [EnableProactiveEngagement]
$creadList :: ReadS [EnableProactiveEngagement]
readsPrec :: Int -> ReadS EnableProactiveEngagement
$creadsPrec :: Int -> ReadS EnableProactiveEngagement
Prelude.Read, Int -> EnableProactiveEngagement -> ShowS
[EnableProactiveEngagement] -> ShowS
EnableProactiveEngagement -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EnableProactiveEngagement] -> ShowS
$cshowList :: [EnableProactiveEngagement] -> ShowS
show :: EnableProactiveEngagement -> String
$cshow :: EnableProactiveEngagement -> String
showsPrec :: Int -> EnableProactiveEngagement -> ShowS
$cshowsPrec :: Int -> EnableProactiveEngagement -> ShowS
Prelude.Show, forall x.
Rep EnableProactiveEngagement x -> EnableProactiveEngagement
forall x.
EnableProactiveEngagement -> Rep EnableProactiveEngagement x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep EnableProactiveEngagement x -> EnableProactiveEngagement
$cfrom :: forall x.
EnableProactiveEngagement -> Rep EnableProactiveEngagement x
Prelude.Generic)

-- |
-- Create a value of 'EnableProactiveEngagement' 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.
newEnableProactiveEngagement ::
  EnableProactiveEngagement
newEnableProactiveEngagement :: EnableProactiveEngagement
newEnableProactiveEngagement =
  EnableProactiveEngagement
EnableProactiveEngagement'

instance Core.AWSRequest EnableProactiveEngagement where
  type
    AWSResponse EnableProactiveEngagement =
      EnableProactiveEngagementResponse
  request :: (Service -> Service)
-> EnableProactiveEngagement -> Request EnableProactiveEngagement
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 EnableProactiveEngagement
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse EnableProactiveEngagement)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> EnableProactiveEngagementResponse
EnableProactiveEngagementResponse'
            forall (f :: * -> *) a b. Functor 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 EnableProactiveEngagement where
  hashWithSalt :: Int -> EnableProactiveEngagement -> Int
hashWithSalt Int
_salt EnableProactiveEngagement
_ =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ()

instance Prelude.NFData EnableProactiveEngagement where
  rnf :: EnableProactiveEngagement -> ()
rnf EnableProactiveEngagement
_ = ()

instance Data.ToHeaders EnableProactiveEngagement where
  toHeaders :: EnableProactiveEngagement -> 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
"AWSShield_20160616.EnableProactiveEngagement" ::
                          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 EnableProactiveEngagement where
  toJSON :: EnableProactiveEngagement -> Value
toJSON = forall a b. a -> b -> a
Prelude.const (Object -> Value
Data.Object forall a. Monoid a => a
Prelude.mempty)

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

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

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

-- |
-- Create a value of 'EnableProactiveEngagementResponse' 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:
--
-- 'httpStatus', 'enableProactiveEngagementResponse_httpStatus' - The response's http status code.
newEnableProactiveEngagementResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  EnableProactiveEngagementResponse
newEnableProactiveEngagementResponse :: Int -> EnableProactiveEngagementResponse
newEnableProactiveEngagementResponse Int
pHttpStatus_ =
  EnableProactiveEngagementResponse'
    { $sel:httpStatus:EnableProactiveEngagementResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    EnableProactiveEngagementResponse
  where
  rnf :: EnableProactiveEngagementResponse -> ()
rnf EnableProactiveEngagementResponse' {Int
httpStatus :: Int
$sel:httpStatus:EnableProactiveEngagementResponse' :: EnableProactiveEngagementResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus