{-# 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.Config.DeleteEvaluationResults
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes the evaluation results for the specified Config rule. You can
-- specify one Config rule per request. After you delete the evaluation
-- results, you can call the StartConfigRulesEvaluation API to start
-- evaluating your Amazon Web Services resources against the rule.
module Amazonka.Config.DeleteEvaluationResults
  ( -- * Creating a Request
    DeleteEvaluationResults (..),
    newDeleteEvaluationResults,

    -- * Request Lenses
    deleteEvaluationResults_configRuleName,

    -- * Destructuring the Response
    DeleteEvaluationResultsResponse (..),
    newDeleteEvaluationResultsResponse,

    -- * Response Lenses
    deleteEvaluationResultsResponse_httpStatus,
  )
where

import Amazonka.Config.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:/ 'newDeleteEvaluationResults' smart constructor.
data DeleteEvaluationResults = DeleteEvaluationResults'
  { -- | The name of the Config rule for which you want to delete the evaluation
    -- results.
    DeleteEvaluationResults -> Text
configRuleName :: Prelude.Text
  }
  deriving (DeleteEvaluationResults -> DeleteEvaluationResults -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteEvaluationResults -> DeleteEvaluationResults -> Bool
$c/= :: DeleteEvaluationResults -> DeleteEvaluationResults -> Bool
== :: DeleteEvaluationResults -> DeleteEvaluationResults -> Bool
$c== :: DeleteEvaluationResults -> DeleteEvaluationResults -> Bool
Prelude.Eq, ReadPrec [DeleteEvaluationResults]
ReadPrec DeleteEvaluationResults
Int -> ReadS DeleteEvaluationResults
ReadS [DeleteEvaluationResults]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteEvaluationResults]
$creadListPrec :: ReadPrec [DeleteEvaluationResults]
readPrec :: ReadPrec DeleteEvaluationResults
$creadPrec :: ReadPrec DeleteEvaluationResults
readList :: ReadS [DeleteEvaluationResults]
$creadList :: ReadS [DeleteEvaluationResults]
readsPrec :: Int -> ReadS DeleteEvaluationResults
$creadsPrec :: Int -> ReadS DeleteEvaluationResults
Prelude.Read, Int -> DeleteEvaluationResults -> ShowS
[DeleteEvaluationResults] -> ShowS
DeleteEvaluationResults -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteEvaluationResults] -> ShowS
$cshowList :: [DeleteEvaluationResults] -> ShowS
show :: DeleteEvaluationResults -> String
$cshow :: DeleteEvaluationResults -> String
showsPrec :: Int -> DeleteEvaluationResults -> ShowS
$cshowsPrec :: Int -> DeleteEvaluationResults -> ShowS
Prelude.Show, forall x. Rep DeleteEvaluationResults x -> DeleteEvaluationResults
forall x. DeleteEvaluationResults -> Rep DeleteEvaluationResults x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteEvaluationResults x -> DeleteEvaluationResults
$cfrom :: forall x. DeleteEvaluationResults -> Rep DeleteEvaluationResults x
Prelude.Generic)

-- |
-- Create a value of 'DeleteEvaluationResults' 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:
--
-- 'configRuleName', 'deleteEvaluationResults_configRuleName' - The name of the Config rule for which you want to delete the evaluation
-- results.
newDeleteEvaluationResults ::
  -- | 'configRuleName'
  Prelude.Text ->
  DeleteEvaluationResults
newDeleteEvaluationResults :: Text -> DeleteEvaluationResults
newDeleteEvaluationResults Text
pConfigRuleName_ =
  DeleteEvaluationResults'
    { $sel:configRuleName:DeleteEvaluationResults' :: Text
configRuleName =
        Text
pConfigRuleName_
    }

-- | The name of the Config rule for which you want to delete the evaluation
-- results.
deleteEvaluationResults_configRuleName :: Lens.Lens' DeleteEvaluationResults Prelude.Text
deleteEvaluationResults_configRuleName :: Lens' DeleteEvaluationResults Text
deleteEvaluationResults_configRuleName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteEvaluationResults' {Text
configRuleName :: Text
$sel:configRuleName:DeleteEvaluationResults' :: DeleteEvaluationResults -> Text
configRuleName} -> Text
configRuleName) (\s :: DeleteEvaluationResults
s@DeleteEvaluationResults' {} Text
a -> DeleteEvaluationResults
s {$sel:configRuleName:DeleteEvaluationResults' :: Text
configRuleName = Text
a} :: DeleteEvaluationResults)

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

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

instance Data.ToHeaders DeleteEvaluationResults where
  toHeaders :: DeleteEvaluationResults -> 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
"StarlingDoveService.DeleteEvaluationResults" ::
                          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 DeleteEvaluationResults where
  toJSON :: DeleteEvaluationResults -> Value
toJSON DeleteEvaluationResults' {Text
configRuleName :: Text
$sel:configRuleName:DeleteEvaluationResults' :: DeleteEvaluationResults -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"ConfigRuleName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
configRuleName)
          ]
      )

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

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

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

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

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

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