packages feed

amazonka-directconnect-2.0: gen/Amazonka/DirectConnect/DescribeRouterConfiguration.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.DirectConnect.DescribeRouterConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Details about the router.
module Amazonka.DirectConnect.DescribeRouterConfiguration
  ( -- * Creating a Request
    DescribeRouterConfiguration (..),
    newDescribeRouterConfiguration,

    -- * Request Lenses
    describeRouterConfiguration_routerTypeIdentifier,
    describeRouterConfiguration_virtualInterfaceId,

    -- * Destructuring the Response
    DescribeRouterConfigurationResponse (..),
    newDescribeRouterConfigurationResponse,

    -- * Response Lenses
    describeRouterConfigurationResponse_customerRouterConfig,
    describeRouterConfigurationResponse_router,
    describeRouterConfigurationResponse_virtualInterfaceId,
    describeRouterConfigurationResponse_virtualInterfaceName,
    describeRouterConfigurationResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.DirectConnect.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Provides the details about a virtual interface\'s router.
--
-- /See:/ 'newDescribeRouterConfiguration' smart constructor.
data DescribeRouterConfiguration = DescribeRouterConfiguration'
  { -- | Identifies the router by a combination of vendor, platform, and software
    -- version. For example, @CiscoSystemsInc-2900SeriesRouters-IOS124@.
    routerTypeIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The ID of the virtual interface.
    virtualInterfaceId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeRouterConfiguration' 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:
--
-- 'routerTypeIdentifier', 'describeRouterConfiguration_routerTypeIdentifier' - Identifies the router by a combination of vendor, platform, and software
-- version. For example, @CiscoSystemsInc-2900SeriesRouters-IOS124@.
--
-- 'virtualInterfaceId', 'describeRouterConfiguration_virtualInterfaceId' - The ID of the virtual interface.
newDescribeRouterConfiguration ::
  -- | 'virtualInterfaceId'
  Prelude.Text ->
  DescribeRouterConfiguration
newDescribeRouterConfiguration pVirtualInterfaceId_ =
  DescribeRouterConfiguration'
    { routerTypeIdentifier =
        Prelude.Nothing,
      virtualInterfaceId = pVirtualInterfaceId_
    }

-- | Identifies the router by a combination of vendor, platform, and software
-- version. For example, @CiscoSystemsInc-2900SeriesRouters-IOS124@.
describeRouterConfiguration_routerTypeIdentifier :: Lens.Lens' DescribeRouterConfiguration (Prelude.Maybe Prelude.Text)
describeRouterConfiguration_routerTypeIdentifier = Lens.lens (\DescribeRouterConfiguration' {routerTypeIdentifier} -> routerTypeIdentifier) (\s@DescribeRouterConfiguration' {} a -> s {routerTypeIdentifier = a} :: DescribeRouterConfiguration)

-- | The ID of the virtual interface.
describeRouterConfiguration_virtualInterfaceId :: Lens.Lens' DescribeRouterConfiguration Prelude.Text
describeRouterConfiguration_virtualInterfaceId = Lens.lens (\DescribeRouterConfiguration' {virtualInterfaceId} -> virtualInterfaceId) (\s@DescribeRouterConfiguration' {} a -> s {virtualInterfaceId = a} :: DescribeRouterConfiguration)

instance Core.AWSRequest DescribeRouterConfiguration where
  type
    AWSResponse DescribeRouterConfiguration =
      DescribeRouterConfigurationResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DescribeRouterConfigurationResponse'
            Prelude.<$> (x Data..?> "customerRouterConfig")
            Prelude.<*> (x Data..?> "router")
            Prelude.<*> (x Data..?> "virtualInterfaceId")
            Prelude.<*> (x Data..?> "virtualInterfaceName")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable DescribeRouterConfiguration where
  hashWithSalt _salt DescribeRouterConfiguration' {..} =
    _salt
      `Prelude.hashWithSalt` routerTypeIdentifier
      `Prelude.hashWithSalt` virtualInterfaceId

instance Prelude.NFData DescribeRouterConfiguration where
  rnf DescribeRouterConfiguration' {..} =
    Prelude.rnf routerTypeIdentifier
      `Prelude.seq` Prelude.rnf virtualInterfaceId

instance Data.ToHeaders DescribeRouterConfiguration where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "OvertureService.DescribeRouterConfiguration" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeRouterConfiguration where
  toJSON DescribeRouterConfiguration' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("routerTypeIdentifier" Data..=)
              Prelude.<$> routerTypeIdentifier,
            Prelude.Just
              ("virtualInterfaceId" Data..= virtualInterfaceId)
          ]
      )

instance Data.ToPath DescribeRouterConfiguration where
  toPath = Prelude.const "/"

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

-- | /See:/ 'newDescribeRouterConfigurationResponse' smart constructor.
data DescribeRouterConfigurationResponse = DescribeRouterConfigurationResponse'
  { -- | The customer router configuration.
    customerRouterConfig :: Prelude.Maybe Prelude.Text,
    -- | The details about the router.
    router :: Prelude.Maybe RouterType,
    -- | The ID assigned to the virtual interface.
    virtualInterfaceId :: Prelude.Maybe Prelude.Text,
    -- | Provides the details about a virtual interface\'s router.
    virtualInterfaceName :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeRouterConfigurationResponse' 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:
--
-- 'customerRouterConfig', 'describeRouterConfigurationResponse_customerRouterConfig' - The customer router configuration.
--
-- 'router', 'describeRouterConfigurationResponse_router' - The details about the router.
--
-- 'virtualInterfaceId', 'describeRouterConfigurationResponse_virtualInterfaceId' - The ID assigned to the virtual interface.
--
-- 'virtualInterfaceName', 'describeRouterConfigurationResponse_virtualInterfaceName' - Provides the details about a virtual interface\'s router.
--
-- 'httpStatus', 'describeRouterConfigurationResponse_httpStatus' - The response's http status code.
newDescribeRouterConfigurationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeRouterConfigurationResponse
newDescribeRouterConfigurationResponse pHttpStatus_ =
  DescribeRouterConfigurationResponse'
    { customerRouterConfig =
        Prelude.Nothing,
      router = Prelude.Nothing,
      virtualInterfaceId = Prelude.Nothing,
      virtualInterfaceName = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The customer router configuration.
describeRouterConfigurationResponse_customerRouterConfig :: Lens.Lens' DescribeRouterConfigurationResponse (Prelude.Maybe Prelude.Text)
describeRouterConfigurationResponse_customerRouterConfig = Lens.lens (\DescribeRouterConfigurationResponse' {customerRouterConfig} -> customerRouterConfig) (\s@DescribeRouterConfigurationResponse' {} a -> s {customerRouterConfig = a} :: DescribeRouterConfigurationResponse)

-- | The details about the router.
describeRouterConfigurationResponse_router :: Lens.Lens' DescribeRouterConfigurationResponse (Prelude.Maybe RouterType)
describeRouterConfigurationResponse_router = Lens.lens (\DescribeRouterConfigurationResponse' {router} -> router) (\s@DescribeRouterConfigurationResponse' {} a -> s {router = a} :: DescribeRouterConfigurationResponse)

-- | The ID assigned to the virtual interface.
describeRouterConfigurationResponse_virtualInterfaceId :: Lens.Lens' DescribeRouterConfigurationResponse (Prelude.Maybe Prelude.Text)
describeRouterConfigurationResponse_virtualInterfaceId = Lens.lens (\DescribeRouterConfigurationResponse' {virtualInterfaceId} -> virtualInterfaceId) (\s@DescribeRouterConfigurationResponse' {} a -> s {virtualInterfaceId = a} :: DescribeRouterConfigurationResponse)

-- | Provides the details about a virtual interface\'s router.
describeRouterConfigurationResponse_virtualInterfaceName :: Lens.Lens' DescribeRouterConfigurationResponse (Prelude.Maybe Prelude.Text)
describeRouterConfigurationResponse_virtualInterfaceName = Lens.lens (\DescribeRouterConfigurationResponse' {virtualInterfaceName} -> virtualInterfaceName) (\s@DescribeRouterConfigurationResponse' {} a -> s {virtualInterfaceName = a} :: DescribeRouterConfigurationResponse)

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

instance
  Prelude.NFData
    DescribeRouterConfigurationResponse
  where
  rnf DescribeRouterConfigurationResponse' {..} =
    Prelude.rnf customerRouterConfig
      `Prelude.seq` Prelude.rnf router
      `Prelude.seq` Prelude.rnf virtualInterfaceId
      `Prelude.seq` Prelude.rnf virtualInterfaceName
      `Prelude.seq` Prelude.rnf httpStatus