packages feed

amazonka-transfer-2.0: gen/Amazonka/Transfer/DescribeSecurityPolicy.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.Transfer.DescribeSecurityPolicy
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the security policy that is attached to your file transfer
-- protocol-enabled server. The response contains a description of the
-- security policy\'s properties. For more information about security
-- policies, see
-- <https://docs.aws.amazon.com/transfer/latest/userguide/security-policies.html Working with security policies>.
module Amazonka.Transfer.DescribeSecurityPolicy
  ( -- * Creating a Request
    DescribeSecurityPolicy (..),
    newDescribeSecurityPolicy,

    -- * Request Lenses
    describeSecurityPolicy_securityPolicyName,

    -- * Destructuring the Response
    DescribeSecurityPolicyResponse (..),
    newDescribeSecurityPolicyResponse,

    -- * Response Lenses
    describeSecurityPolicyResponse_httpStatus,
    describeSecurityPolicyResponse_securityPolicy,
  )
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.Transfer.Types

-- | /See:/ 'newDescribeSecurityPolicy' smart constructor.
data DescribeSecurityPolicy = DescribeSecurityPolicy'
  { -- | Specifies the name of the security policy that is attached to the
    -- server.
    securityPolicyName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeSecurityPolicy' 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:
--
-- 'securityPolicyName', 'describeSecurityPolicy_securityPolicyName' - Specifies the name of the security policy that is attached to the
-- server.
newDescribeSecurityPolicy ::
  -- | 'securityPolicyName'
  Prelude.Text ->
  DescribeSecurityPolicy
newDescribeSecurityPolicy pSecurityPolicyName_ =
  DescribeSecurityPolicy'
    { securityPolicyName =
        pSecurityPolicyName_
    }

-- | Specifies the name of the security policy that is attached to the
-- server.
describeSecurityPolicy_securityPolicyName :: Lens.Lens' DescribeSecurityPolicy Prelude.Text
describeSecurityPolicy_securityPolicyName = Lens.lens (\DescribeSecurityPolicy' {securityPolicyName} -> securityPolicyName) (\s@DescribeSecurityPolicy' {} a -> s {securityPolicyName = a} :: DescribeSecurityPolicy)

instance Core.AWSRequest DescribeSecurityPolicy where
  type
    AWSResponse DescribeSecurityPolicy =
      DescribeSecurityPolicyResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DescribeSecurityPolicyResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..:> "SecurityPolicy")
      )

instance Prelude.Hashable DescribeSecurityPolicy where
  hashWithSalt _salt DescribeSecurityPolicy' {..} =
    _salt `Prelude.hashWithSalt` securityPolicyName

instance Prelude.NFData DescribeSecurityPolicy where
  rnf DescribeSecurityPolicy' {..} =
    Prelude.rnf securityPolicyName

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

instance Data.ToJSON DescribeSecurityPolicy where
  toJSON DescribeSecurityPolicy' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just
              ("SecurityPolicyName" Data..= securityPolicyName)
          ]
      )

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

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

-- | /See:/ 'newDescribeSecurityPolicyResponse' smart constructor.
data DescribeSecurityPolicyResponse = DescribeSecurityPolicyResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | An array containing the properties of the security policy.
    securityPolicy :: DescribedSecurityPolicy
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeSecurityPolicyResponse' 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:
--
-- 'httpStatus', 'describeSecurityPolicyResponse_httpStatus' - The response's http status code.
--
-- 'securityPolicy', 'describeSecurityPolicyResponse_securityPolicy' - An array containing the properties of the security policy.
newDescribeSecurityPolicyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'securityPolicy'
  DescribedSecurityPolicy ->
  DescribeSecurityPolicyResponse
newDescribeSecurityPolicyResponse
  pHttpStatus_
  pSecurityPolicy_ =
    DescribeSecurityPolicyResponse'
      { httpStatus =
          pHttpStatus_,
        securityPolicy = pSecurityPolicy_
      }

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

-- | An array containing the properties of the security policy.
describeSecurityPolicyResponse_securityPolicy :: Lens.Lens' DescribeSecurityPolicyResponse DescribedSecurityPolicy
describeSecurityPolicyResponse_securityPolicy = Lens.lens (\DescribeSecurityPolicyResponse' {securityPolicy} -> securityPolicy) (\s@DescribeSecurityPolicyResponse' {} a -> s {securityPolicy = a} :: DescribeSecurityPolicyResponse)

instance
  Prelude.NFData
    DescribeSecurityPolicyResponse
  where
  rnf DescribeSecurityPolicyResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf securityPolicy