{-# 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.CloudFront.DeleteOriginRequestPolicy
-- 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 an origin request policy.
--
-- You cannot delete an origin request policy if it\'s attached to any
-- cache behaviors. First update your distributions to remove the origin
-- request policy from all cache behaviors, then delete the origin request
-- policy.
--
-- To delete an origin request policy, you must provide the policy\'s
-- identifier and version. To get the identifier, you can use
-- @ListOriginRequestPolicies@ or @GetOriginRequestPolicy@.
module Amazonka.CloudFront.DeleteOriginRequestPolicy
  ( -- * Creating a Request
    DeleteOriginRequestPolicy (..),
    newDeleteOriginRequestPolicy,

    -- * Request Lenses
    deleteOriginRequestPolicy_ifMatch,
    deleteOriginRequestPolicy_id,

    -- * Destructuring the Response
    DeleteOriginRequestPolicyResponse (..),
    newDeleteOriginRequestPolicyResponse,
  )
where

import Amazonka.CloudFront.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:/ 'newDeleteOriginRequestPolicy' smart constructor.
data DeleteOriginRequestPolicy = DeleteOriginRequestPolicy'
  { -- | The version of the origin request policy that you are deleting. The
    -- version is the origin request policy\'s @ETag@ value, which you can get
    -- using @ListOriginRequestPolicies@, @GetOriginRequestPolicy@, or
    -- @GetOriginRequestPolicyConfig@.
    DeleteOriginRequestPolicy -> Maybe Text
ifMatch :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the origin request policy that you are
    -- deleting. To get the identifier, you can use
    -- @ListOriginRequestPolicies@.
    DeleteOriginRequestPolicy -> Text
id :: Prelude.Text
  }
  deriving (DeleteOriginRequestPolicy -> DeleteOriginRequestPolicy -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteOriginRequestPolicy -> DeleteOriginRequestPolicy -> Bool
$c/= :: DeleteOriginRequestPolicy -> DeleteOriginRequestPolicy -> Bool
== :: DeleteOriginRequestPolicy -> DeleteOriginRequestPolicy -> Bool
$c== :: DeleteOriginRequestPolicy -> DeleteOriginRequestPolicy -> Bool
Prelude.Eq, ReadPrec [DeleteOriginRequestPolicy]
ReadPrec DeleteOriginRequestPolicy
Int -> ReadS DeleteOriginRequestPolicy
ReadS [DeleteOriginRequestPolicy]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteOriginRequestPolicy]
$creadListPrec :: ReadPrec [DeleteOriginRequestPolicy]
readPrec :: ReadPrec DeleteOriginRequestPolicy
$creadPrec :: ReadPrec DeleteOriginRequestPolicy
readList :: ReadS [DeleteOriginRequestPolicy]
$creadList :: ReadS [DeleteOriginRequestPolicy]
readsPrec :: Int -> ReadS DeleteOriginRequestPolicy
$creadsPrec :: Int -> ReadS DeleteOriginRequestPolicy
Prelude.Read, Int -> DeleteOriginRequestPolicy -> ShowS
[DeleteOriginRequestPolicy] -> ShowS
DeleteOriginRequestPolicy -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteOriginRequestPolicy] -> ShowS
$cshowList :: [DeleteOriginRequestPolicy] -> ShowS
show :: DeleteOriginRequestPolicy -> String
$cshow :: DeleteOriginRequestPolicy -> String
showsPrec :: Int -> DeleteOriginRequestPolicy -> ShowS
$cshowsPrec :: Int -> DeleteOriginRequestPolicy -> ShowS
Prelude.Show, forall x.
Rep DeleteOriginRequestPolicy x -> DeleteOriginRequestPolicy
forall x.
DeleteOriginRequestPolicy -> Rep DeleteOriginRequestPolicy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteOriginRequestPolicy x -> DeleteOriginRequestPolicy
$cfrom :: forall x.
DeleteOriginRequestPolicy -> Rep DeleteOriginRequestPolicy x
Prelude.Generic)

-- |
-- Create a value of 'DeleteOriginRequestPolicy' 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:
--
-- 'ifMatch', 'deleteOriginRequestPolicy_ifMatch' - The version of the origin request policy that you are deleting. The
-- version is the origin request policy\'s @ETag@ value, which you can get
-- using @ListOriginRequestPolicies@, @GetOriginRequestPolicy@, or
-- @GetOriginRequestPolicyConfig@.
--
-- 'id', 'deleteOriginRequestPolicy_id' - The unique identifier for the origin request policy that you are
-- deleting. To get the identifier, you can use
-- @ListOriginRequestPolicies@.
newDeleteOriginRequestPolicy ::
  -- | 'id'
  Prelude.Text ->
  DeleteOriginRequestPolicy
newDeleteOriginRequestPolicy :: Text -> DeleteOriginRequestPolicy
newDeleteOriginRequestPolicy Text
pId_ =
  DeleteOriginRequestPolicy'
    { $sel:ifMatch:DeleteOriginRequestPolicy' :: Maybe Text
ifMatch =
        forall a. Maybe a
Prelude.Nothing,
      $sel:id:DeleteOriginRequestPolicy' :: Text
id = Text
pId_
    }

-- | The version of the origin request policy that you are deleting. The
-- version is the origin request policy\'s @ETag@ value, which you can get
-- using @ListOriginRequestPolicies@, @GetOriginRequestPolicy@, or
-- @GetOriginRequestPolicyConfig@.
deleteOriginRequestPolicy_ifMatch :: Lens.Lens' DeleteOriginRequestPolicy (Prelude.Maybe Prelude.Text)
deleteOriginRequestPolicy_ifMatch :: Lens' DeleteOriginRequestPolicy (Maybe Text)
deleteOriginRequestPolicy_ifMatch = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOriginRequestPolicy' {Maybe Text
ifMatch :: Maybe Text
$sel:ifMatch:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Maybe Text
ifMatch} -> Maybe Text
ifMatch) (\s :: DeleteOriginRequestPolicy
s@DeleteOriginRequestPolicy' {} Maybe Text
a -> DeleteOriginRequestPolicy
s {$sel:ifMatch:DeleteOriginRequestPolicy' :: Maybe Text
ifMatch = Maybe Text
a} :: DeleteOriginRequestPolicy)

-- | The unique identifier for the origin request policy that you are
-- deleting. To get the identifier, you can use
-- @ListOriginRequestPolicies@.
deleteOriginRequestPolicy_id :: Lens.Lens' DeleteOriginRequestPolicy Prelude.Text
deleteOriginRequestPolicy_id :: Lens' DeleteOriginRequestPolicy Text
deleteOriginRequestPolicy_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOriginRequestPolicy' {Text
id :: Text
$sel:id:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Text
id} -> Text
id) (\s :: DeleteOriginRequestPolicy
s@DeleteOriginRequestPolicy' {} Text
a -> DeleteOriginRequestPolicy
s {$sel:id:DeleteOriginRequestPolicy' :: Text
id = Text
a} :: DeleteOriginRequestPolicy)

instance Core.AWSRequest DeleteOriginRequestPolicy where
  type
    AWSResponse DeleteOriginRequestPolicy =
      DeleteOriginRequestPolicyResponse
  request :: (Service -> Service)
-> DeleteOriginRequestPolicy -> Request DeleteOriginRequestPolicy
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteOriginRequestPolicy
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteOriginRequestPolicy)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull
      DeleteOriginRequestPolicyResponse
DeleteOriginRequestPolicyResponse'

instance Prelude.Hashable DeleteOriginRequestPolicy where
  hashWithSalt :: Int -> DeleteOriginRequestPolicy -> Int
hashWithSalt Int
_salt DeleteOriginRequestPolicy' {Maybe Text
Text
id :: Text
ifMatch :: Maybe Text
$sel:id:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Text
$sel:ifMatch:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ifMatch
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id

instance Prelude.NFData DeleteOriginRequestPolicy where
  rnf :: DeleteOriginRequestPolicy -> ()
rnf DeleteOriginRequestPolicy' {Maybe Text
Text
id :: Text
ifMatch :: Maybe Text
$sel:id:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Text
$sel:ifMatch:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ifMatch seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id

instance Data.ToHeaders DeleteOriginRequestPolicy where
  toHeaders :: DeleteOriginRequestPolicy -> [Header]
toHeaders DeleteOriginRequestPolicy' {Maybe Text
Text
id :: Text
ifMatch :: Maybe Text
$sel:id:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Text
$sel:ifMatch:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [HeaderName
"If-Match" forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# Maybe Text
ifMatch]

instance Data.ToPath DeleteOriginRequestPolicy where
  toPath :: DeleteOriginRequestPolicy -> ByteString
toPath DeleteOriginRequestPolicy' {Maybe Text
Text
id :: Text
ifMatch :: Maybe Text
$sel:id:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Text
$sel:ifMatch:DeleteOriginRequestPolicy' :: DeleteOriginRequestPolicy -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/2020-05-31/origin-request-policy/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
id]

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

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

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

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