packages feed

amazonka-amplify-2.0: gen/Amazonka/Amplify/GetWebhook.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.Amplify.GetWebhook
-- 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 webhook information that corresponds to a specified webhook
-- ID.
module Amazonka.Amplify.GetWebhook
  ( -- * Creating a Request
    GetWebhook (..),
    newGetWebhook,

    -- * Request Lenses
    getWebhook_webhookId,

    -- * Destructuring the Response
    GetWebhookResponse (..),
    newGetWebhookResponse,

    -- * Response Lenses
    getWebhookResponse_httpStatus,
    getWebhookResponse_webhook,
  )
where

import Amazonka.Amplify.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

-- | The request structure for the get webhook request.
--
-- /See:/ 'newGetWebhook' smart constructor.
data GetWebhook = GetWebhook'
  { -- | The unique ID for a webhook.
    webhookId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GetWebhook' 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:
--
-- 'webhookId', 'getWebhook_webhookId' - The unique ID for a webhook.
newGetWebhook ::
  -- | 'webhookId'
  Prelude.Text ->
  GetWebhook
newGetWebhook pWebhookId_ =
  GetWebhook' {webhookId = pWebhookId_}

-- | The unique ID for a webhook.
getWebhook_webhookId :: Lens.Lens' GetWebhook Prelude.Text
getWebhook_webhookId = Lens.lens (\GetWebhook' {webhookId} -> webhookId) (\s@GetWebhook' {} a -> s {webhookId = a} :: GetWebhook)

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

instance Prelude.Hashable GetWebhook where
  hashWithSalt _salt GetWebhook' {..} =
    _salt `Prelude.hashWithSalt` webhookId

instance Prelude.NFData GetWebhook where
  rnf GetWebhook' {..} = Prelude.rnf webhookId

instance Data.ToHeaders GetWebhook where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath GetWebhook where
  toPath GetWebhook' {..} =
    Prelude.mconcat ["/webhooks/", Data.toBS webhookId]

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

-- | The result structure for the get webhook request.
--
-- /See:/ 'newGetWebhookResponse' smart constructor.
data GetWebhookResponse = GetWebhookResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | Describes the structure of a webhook.
    webhook :: Webhook
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GetWebhookResponse' 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', 'getWebhookResponse_httpStatus' - The response's http status code.
--
-- 'webhook', 'getWebhookResponse_webhook' - Describes the structure of a webhook.
newGetWebhookResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'webhook'
  Webhook ->
  GetWebhookResponse
newGetWebhookResponse pHttpStatus_ pWebhook_ =
  GetWebhookResponse'
    { httpStatus = pHttpStatus_,
      webhook = pWebhook_
    }

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

-- | Describes the structure of a webhook.
getWebhookResponse_webhook :: Lens.Lens' GetWebhookResponse Webhook
getWebhookResponse_webhook = Lens.lens (\GetWebhookResponse' {webhook} -> webhook) (\s@GetWebhookResponse' {} a -> s {webhook = a} :: GetWebhookResponse)

instance Prelude.NFData GetWebhookResponse where
  rnf GetWebhookResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf webhook