packages feed

amazonka-lightsail-2.0: gen/Amazonka/Lightsail/GetInstancePortStates.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.Lightsail.GetInstancePortStates
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns the firewall port states for a specific Amazon Lightsail
-- instance, the IP addresses allowed to connect to the instance through
-- the ports, and the protocol.
module Amazonka.Lightsail.GetInstancePortStates
  ( -- * Creating a Request
    GetInstancePortStates (..),
    newGetInstancePortStates,

    -- * Request Lenses
    getInstancePortStates_instanceName,

    -- * Destructuring the Response
    GetInstancePortStatesResponse (..),
    newGetInstancePortStatesResponse,

    -- * Response Lenses
    getInstancePortStatesResponse_portStates,
    getInstancePortStatesResponse_httpStatus,
  )
where

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

-- | /See:/ 'newGetInstancePortStates' smart constructor.
data GetInstancePortStates = GetInstancePortStates'
  { -- | The name of the instance for which to return firewall port states.
    instanceName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GetInstancePortStates' 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:
--
-- 'instanceName', 'getInstancePortStates_instanceName' - The name of the instance for which to return firewall port states.
newGetInstancePortStates ::
  -- | 'instanceName'
  Prelude.Text ->
  GetInstancePortStates
newGetInstancePortStates pInstanceName_ =
  GetInstancePortStates'
    { instanceName =
        pInstanceName_
    }

-- | The name of the instance for which to return firewall port states.
getInstancePortStates_instanceName :: Lens.Lens' GetInstancePortStates Prelude.Text
getInstancePortStates_instanceName = Lens.lens (\GetInstancePortStates' {instanceName} -> instanceName) (\s@GetInstancePortStates' {} a -> s {instanceName = a} :: GetInstancePortStates)

instance Core.AWSRequest GetInstancePortStates where
  type
    AWSResponse GetInstancePortStates =
      GetInstancePortStatesResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          GetInstancePortStatesResponse'
            Prelude.<$> (x Data..?> "portStates" Core..!@ Prelude.mempty)
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable GetInstancePortStates where
  hashWithSalt _salt GetInstancePortStates' {..} =
    _salt `Prelude.hashWithSalt` instanceName

instance Prelude.NFData GetInstancePortStates where
  rnf GetInstancePortStates' {..} =
    Prelude.rnf instanceName

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

instance Data.ToJSON GetInstancePortStates where
  toJSON GetInstancePortStates' {..} =
    Data.object
      ( Prelude.catMaybes
          [Prelude.Just ("instanceName" Data..= instanceName)]
      )

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

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

-- | /See:/ 'newGetInstancePortStatesResponse' smart constructor.
data GetInstancePortStatesResponse = GetInstancePortStatesResponse'
  { -- | An array of objects that describe the firewall port states for the
    -- specified instance.
    portStates :: Prelude.Maybe [InstancePortState],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GetInstancePortStatesResponse' 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:
--
-- 'portStates', 'getInstancePortStatesResponse_portStates' - An array of objects that describe the firewall port states for the
-- specified instance.
--
-- 'httpStatus', 'getInstancePortStatesResponse_httpStatus' - The response's http status code.
newGetInstancePortStatesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetInstancePortStatesResponse
newGetInstancePortStatesResponse pHttpStatus_ =
  GetInstancePortStatesResponse'
    { portStates =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | An array of objects that describe the firewall port states for the
-- specified instance.
getInstancePortStatesResponse_portStates :: Lens.Lens' GetInstancePortStatesResponse (Prelude.Maybe [InstancePortState])
getInstancePortStatesResponse_portStates = Lens.lens (\GetInstancePortStatesResponse' {portStates} -> portStates) (\s@GetInstancePortStatesResponse' {} a -> s {portStates = a} :: GetInstancePortStatesResponse) Prelude.. Lens.mapping Lens.coerced

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

instance Prelude.NFData GetInstancePortStatesResponse where
  rnf GetInstancePortStatesResponse' {..} =
    Prelude.rnf portStates
      `Prelude.seq` Prelude.rnf httpStatus