packages feed

amazonka-cloudfront-2.0: gen/Amazonka/CloudFront/UpdateOriginRequestPolicy.hs

{-# 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.UpdateOriginRequestPolicy
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates an origin request policy configuration.
--
-- When you update an origin request policy configuration, all the fields
-- are updated with the values provided in the request. You cannot update
-- some fields independent of others. To update an origin request policy
-- configuration:
--
-- 1.  Use @GetOriginRequestPolicyConfig@ to get the current configuration.
--
-- 2.  Locally modify the fields in the origin request policy configuration
--     that you want to update.
--
-- 3.  Call @UpdateOriginRequestPolicy@ by providing the entire origin
--     request policy configuration, including the fields that you modified
--     and those that you didn\'t.
module Amazonka.CloudFront.UpdateOriginRequestPolicy
  ( -- * Creating a Request
    UpdateOriginRequestPolicy (..),
    newUpdateOriginRequestPolicy,

    -- * Request Lenses
    updateOriginRequestPolicy_ifMatch,
    updateOriginRequestPolicy_originRequestPolicyConfig,
    updateOriginRequestPolicy_id,

    -- * Destructuring the Response
    UpdateOriginRequestPolicyResponse (..),
    newUpdateOriginRequestPolicyResponse,

    -- * Response Lenses
    updateOriginRequestPolicyResponse_eTag,
    updateOriginRequestPolicyResponse_originRequestPolicy,
    updateOriginRequestPolicyResponse_httpStatus,
  )
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:/ 'newUpdateOriginRequestPolicy' smart constructor.
data UpdateOriginRequestPolicy = UpdateOriginRequestPolicy'
  { -- | The version of the origin request policy that you are updating. The
    -- version is returned in the origin request policy\'s @ETag@ field in the
    -- response to @GetOriginRequestPolicyConfig@.
    ifMatch :: Prelude.Maybe Prelude.Text,
    -- | An origin request policy configuration.
    originRequestPolicyConfig :: OriginRequestPolicyConfig,
    -- | The unique identifier for the origin request policy that you are
    -- updating. The identifier is returned in a cache behavior\'s
    -- @OriginRequestPolicyId@ field in the response to
    -- @GetDistributionConfig@.
    id :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateOriginRequestPolicy' 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', 'updateOriginRequestPolicy_ifMatch' - The version of the origin request policy that you are updating. The
-- version is returned in the origin request policy\'s @ETag@ field in the
-- response to @GetOriginRequestPolicyConfig@.
--
-- 'originRequestPolicyConfig', 'updateOriginRequestPolicy_originRequestPolicyConfig' - An origin request policy configuration.
--
-- 'id', 'updateOriginRequestPolicy_id' - The unique identifier for the origin request policy that you are
-- updating. The identifier is returned in a cache behavior\'s
-- @OriginRequestPolicyId@ field in the response to
-- @GetDistributionConfig@.
newUpdateOriginRequestPolicy ::
  -- | 'originRequestPolicyConfig'
  OriginRequestPolicyConfig ->
  -- | 'id'
  Prelude.Text ->
  UpdateOriginRequestPolicy
newUpdateOriginRequestPolicy
  pOriginRequestPolicyConfig_
  pId_ =
    UpdateOriginRequestPolicy'
      { ifMatch =
          Prelude.Nothing,
        originRequestPolicyConfig =
          pOriginRequestPolicyConfig_,
        id = pId_
      }

-- | The version of the origin request policy that you are updating. The
-- version is returned in the origin request policy\'s @ETag@ field in the
-- response to @GetOriginRequestPolicyConfig@.
updateOriginRequestPolicy_ifMatch :: Lens.Lens' UpdateOriginRequestPolicy (Prelude.Maybe Prelude.Text)
updateOriginRequestPolicy_ifMatch = Lens.lens (\UpdateOriginRequestPolicy' {ifMatch} -> ifMatch) (\s@UpdateOriginRequestPolicy' {} a -> s {ifMatch = a} :: UpdateOriginRequestPolicy)

-- | An origin request policy configuration.
updateOriginRequestPolicy_originRequestPolicyConfig :: Lens.Lens' UpdateOriginRequestPolicy OriginRequestPolicyConfig
updateOriginRequestPolicy_originRequestPolicyConfig = Lens.lens (\UpdateOriginRequestPolicy' {originRequestPolicyConfig} -> originRequestPolicyConfig) (\s@UpdateOriginRequestPolicy' {} a -> s {originRequestPolicyConfig = a} :: UpdateOriginRequestPolicy)

-- | The unique identifier for the origin request policy that you are
-- updating. The identifier is returned in a cache behavior\'s
-- @OriginRequestPolicyId@ field in the response to
-- @GetDistributionConfig@.
updateOriginRequestPolicy_id :: Lens.Lens' UpdateOriginRequestPolicy Prelude.Text
updateOriginRequestPolicy_id = Lens.lens (\UpdateOriginRequestPolicy' {id} -> id) (\s@UpdateOriginRequestPolicy' {} a -> s {id = a} :: UpdateOriginRequestPolicy)

instance Core.AWSRequest UpdateOriginRequestPolicy where
  type
    AWSResponse UpdateOriginRequestPolicy =
      UpdateOriginRequestPolicyResponse
  request overrides =
    Request.putXML (overrides defaultService)
  response =
    Response.receiveXML
      ( \s h x ->
          UpdateOriginRequestPolicyResponse'
            Prelude.<$> (h Data..#? "ETag")
            Prelude.<*> (Data.parseXML x)
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable UpdateOriginRequestPolicy where
  hashWithSalt _salt UpdateOriginRequestPolicy' {..} =
    _salt
      `Prelude.hashWithSalt` ifMatch
      `Prelude.hashWithSalt` originRequestPolicyConfig
      `Prelude.hashWithSalt` id

instance Prelude.NFData UpdateOriginRequestPolicy where
  rnf UpdateOriginRequestPolicy' {..} =
    Prelude.rnf ifMatch
      `Prelude.seq` Prelude.rnf originRequestPolicyConfig
      `Prelude.seq` Prelude.rnf id

instance Data.ToElement UpdateOriginRequestPolicy where
  toElement UpdateOriginRequestPolicy' {..} =
    Data.mkElement
      "{http://cloudfront.amazonaws.com/doc/2020-05-31/}OriginRequestPolicyConfig"
      originRequestPolicyConfig

instance Data.ToHeaders UpdateOriginRequestPolicy where
  toHeaders UpdateOriginRequestPolicy' {..} =
    Prelude.mconcat ["If-Match" Data.=# ifMatch]

instance Data.ToPath UpdateOriginRequestPolicy where
  toPath UpdateOriginRequestPolicy' {..} =
    Prelude.mconcat
      ["/2020-05-31/origin-request-policy/", Data.toBS id]

instance Data.ToQuery UpdateOriginRequestPolicy where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newUpdateOriginRequestPolicyResponse' smart constructor.
data UpdateOriginRequestPolicyResponse = UpdateOriginRequestPolicyResponse'
  { -- | The current version of the origin request policy.
    eTag :: Prelude.Maybe Prelude.Text,
    -- | An origin request policy.
    originRequestPolicy :: Prelude.Maybe OriginRequestPolicy,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateOriginRequestPolicyResponse' 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:
--
-- 'eTag', 'updateOriginRequestPolicyResponse_eTag' - The current version of the origin request policy.
--
-- 'originRequestPolicy', 'updateOriginRequestPolicyResponse_originRequestPolicy' - An origin request policy.
--
-- 'httpStatus', 'updateOriginRequestPolicyResponse_httpStatus' - The response's http status code.
newUpdateOriginRequestPolicyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateOriginRequestPolicyResponse
newUpdateOriginRequestPolicyResponse pHttpStatus_ =
  UpdateOriginRequestPolicyResponse'
    { eTag =
        Prelude.Nothing,
      originRequestPolicy = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The current version of the origin request policy.
updateOriginRequestPolicyResponse_eTag :: Lens.Lens' UpdateOriginRequestPolicyResponse (Prelude.Maybe Prelude.Text)
updateOriginRequestPolicyResponse_eTag = Lens.lens (\UpdateOriginRequestPolicyResponse' {eTag} -> eTag) (\s@UpdateOriginRequestPolicyResponse' {} a -> s {eTag = a} :: UpdateOriginRequestPolicyResponse)

-- | An origin request policy.
updateOriginRequestPolicyResponse_originRequestPolicy :: Lens.Lens' UpdateOriginRequestPolicyResponse (Prelude.Maybe OriginRequestPolicy)
updateOriginRequestPolicyResponse_originRequestPolicy = Lens.lens (\UpdateOriginRequestPolicyResponse' {originRequestPolicy} -> originRequestPolicy) (\s@UpdateOriginRequestPolicyResponse' {} a -> s {originRequestPolicy = a} :: UpdateOriginRequestPolicyResponse)

-- | The response's http status code.
updateOriginRequestPolicyResponse_httpStatus :: Lens.Lens' UpdateOriginRequestPolicyResponse Prelude.Int
updateOriginRequestPolicyResponse_httpStatus = Lens.lens (\UpdateOriginRequestPolicyResponse' {httpStatus} -> httpStatus) (\s@UpdateOriginRequestPolicyResponse' {} a -> s {httpStatus = a} :: UpdateOriginRequestPolicyResponse)

instance
  Prelude.NFData
    UpdateOriginRequestPolicyResponse
  where
  rnf UpdateOriginRequestPolicyResponse' {..} =
    Prelude.rnf eTag
      `Prelude.seq` Prelude.rnf originRequestPolicy
      `Prelude.seq` Prelude.rnf httpStatus