packages feed

amazonka-route53-2.0: gen/Amazonka/Route53/Types/VPC.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Route53.Types.VPC
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Route53.Types.VPC 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 Amazonka.Route53.Internal
import Amazonka.Route53.Types.VPCRegion

-- | (Private hosted zones only) A complex type that contains information
-- about an Amazon VPC.
--
-- If you associate a private hosted zone with an Amazon VPC when you make
-- a
-- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateHostedZone.html CreateHostedZone>
-- request, the following parameters are also required.
--
-- /See:/ 'newVPC' smart constructor.
data VPC = VPC'
  { vPCId :: Prelude.Maybe Prelude.Text,
    -- | (Private hosted zones only) The region that an Amazon VPC was created
    -- in.
    vPCRegion :: Prelude.Maybe VPCRegion
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'VPC' 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:
--
-- 'vPCId', 'vpc_vPCId' - Undocumented member.
--
-- 'vPCRegion', 'vpc_vPCRegion' - (Private hosted zones only) The region that an Amazon VPC was created
-- in.
newVPC ::
  VPC
newVPC =
  VPC'
    { vPCId = Prelude.Nothing,
      vPCRegion = Prelude.Nothing
    }

-- | Undocumented member.
vpc_vPCId :: Lens.Lens' VPC (Prelude.Maybe Prelude.Text)
vpc_vPCId = Lens.lens (\VPC' {vPCId} -> vPCId) (\s@VPC' {} a -> s {vPCId = a} :: VPC)

-- | (Private hosted zones only) The region that an Amazon VPC was created
-- in.
vpc_vPCRegion :: Lens.Lens' VPC (Prelude.Maybe VPCRegion)
vpc_vPCRegion = Lens.lens (\VPC' {vPCRegion} -> vPCRegion) (\s@VPC' {} a -> s {vPCRegion = a} :: VPC)

instance Data.FromXML VPC where
  parseXML x =
    VPC'
      Prelude.<$> (x Data..@? "VPCId")
      Prelude.<*> (x Data..@? "VPCRegion")

instance Prelude.Hashable VPC where
  hashWithSalt _salt VPC' {..} =
    _salt
      `Prelude.hashWithSalt` vPCId
      `Prelude.hashWithSalt` vPCRegion

instance Prelude.NFData VPC where
  rnf VPC' {..} =
    Prelude.rnf vPCId
      `Prelude.seq` Prelude.rnf vPCRegion

instance Data.ToXML VPC where
  toXML VPC' {..} =
    Prelude.mconcat
      [ "VPCId" Data.@= vPCId,
        "VPCRegion" Data.@= vPCRegion
      ]