packages feed

amazonka-kafkaconnect-2.0: gen/Amazonka/KafkaConnect/CreateWorkerConfiguration.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.KafkaConnect.CreateWorkerConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a worker configuration using the specified properties.
module Amazonka.KafkaConnect.CreateWorkerConfiguration
  ( -- * Creating a Request
    CreateWorkerConfiguration (..),
    newCreateWorkerConfiguration,

    -- * Request Lenses
    createWorkerConfiguration_description,
    createWorkerConfiguration_name,
    createWorkerConfiguration_propertiesFileContent,

    -- * Destructuring the Response
    CreateWorkerConfigurationResponse (..),
    newCreateWorkerConfigurationResponse,

    -- * Response Lenses
    createWorkerConfigurationResponse_creationTime,
    createWorkerConfigurationResponse_latestRevision,
    createWorkerConfigurationResponse_name,
    createWorkerConfigurationResponse_workerConfigurationArn,
    createWorkerConfigurationResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateWorkerConfiguration' smart constructor.
data CreateWorkerConfiguration = CreateWorkerConfiguration'
  { -- | A summary description of the worker configuration.
    description :: Prelude.Maybe Prelude.Text,
    -- | The name of the worker configuration.
    name :: Prelude.Text,
    -- | Base64 encoded contents of connect-distributed.properties file.
    propertiesFileContent :: Data.Sensitive Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateWorkerConfiguration' 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:
--
-- 'description', 'createWorkerConfiguration_description' - A summary description of the worker configuration.
--
-- 'name', 'createWorkerConfiguration_name' - The name of the worker configuration.
--
-- 'propertiesFileContent', 'createWorkerConfiguration_propertiesFileContent' - Base64 encoded contents of connect-distributed.properties file.
newCreateWorkerConfiguration ::
  -- | 'name'
  Prelude.Text ->
  -- | 'propertiesFileContent'
  Prelude.Text ->
  CreateWorkerConfiguration
newCreateWorkerConfiguration
  pName_
  pPropertiesFileContent_ =
    CreateWorkerConfiguration'
      { description =
          Prelude.Nothing,
        name = pName_,
        propertiesFileContent =
          Data._Sensitive Lens.# pPropertiesFileContent_
      }

-- | A summary description of the worker configuration.
createWorkerConfiguration_description :: Lens.Lens' CreateWorkerConfiguration (Prelude.Maybe Prelude.Text)
createWorkerConfiguration_description = Lens.lens (\CreateWorkerConfiguration' {description} -> description) (\s@CreateWorkerConfiguration' {} a -> s {description = a} :: CreateWorkerConfiguration)

-- | The name of the worker configuration.
createWorkerConfiguration_name :: Lens.Lens' CreateWorkerConfiguration Prelude.Text
createWorkerConfiguration_name = Lens.lens (\CreateWorkerConfiguration' {name} -> name) (\s@CreateWorkerConfiguration' {} a -> s {name = a} :: CreateWorkerConfiguration)

-- | Base64 encoded contents of connect-distributed.properties file.
createWorkerConfiguration_propertiesFileContent :: Lens.Lens' CreateWorkerConfiguration Prelude.Text
createWorkerConfiguration_propertiesFileContent = Lens.lens (\CreateWorkerConfiguration' {propertiesFileContent} -> propertiesFileContent) (\s@CreateWorkerConfiguration' {} a -> s {propertiesFileContent = a} :: CreateWorkerConfiguration) Prelude.. Data._Sensitive

instance Core.AWSRequest CreateWorkerConfiguration where
  type
    AWSResponse CreateWorkerConfiguration =
      CreateWorkerConfigurationResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          CreateWorkerConfigurationResponse'
            Prelude.<$> (x Data..?> "creationTime")
            Prelude.<*> (x Data..?> "latestRevision")
            Prelude.<*> (x Data..?> "name")
            Prelude.<*> (x Data..?> "workerConfigurationArn")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable CreateWorkerConfiguration where
  hashWithSalt _salt CreateWorkerConfiguration' {..} =
    _salt
      `Prelude.hashWithSalt` description
      `Prelude.hashWithSalt` name
      `Prelude.hashWithSalt` propertiesFileContent

instance Prelude.NFData CreateWorkerConfiguration where
  rnf CreateWorkerConfiguration' {..} =
    Prelude.rnf description
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf propertiesFileContent

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

instance Data.ToJSON CreateWorkerConfiguration where
  toJSON CreateWorkerConfiguration' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("description" Data..=) Prelude.<$> description,
            Prelude.Just ("name" Data..= name),
            Prelude.Just
              ( "propertiesFileContent"
                  Data..= propertiesFileContent
              )
          ]
      )

instance Data.ToPath CreateWorkerConfiguration where
  toPath = Prelude.const "/v1/worker-configurations"

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

-- | /See:/ 'newCreateWorkerConfigurationResponse' smart constructor.
data CreateWorkerConfigurationResponse = CreateWorkerConfigurationResponse'
  { -- | The time that the worker configuration was created.
    creationTime :: Prelude.Maybe Data.ISO8601,
    -- | The latest revision of the worker configuration.
    latestRevision :: Prelude.Maybe WorkerConfigurationRevisionSummary,
    -- | The name of the worker configuration.
    name :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) that Amazon assigned to the worker
    -- configuration.
    workerConfigurationArn :: 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 'CreateWorkerConfigurationResponse' 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:
--
-- 'creationTime', 'createWorkerConfigurationResponse_creationTime' - The time that the worker configuration was created.
--
-- 'latestRevision', 'createWorkerConfigurationResponse_latestRevision' - The latest revision of the worker configuration.
--
-- 'name', 'createWorkerConfigurationResponse_name' - The name of the worker configuration.
--
-- 'workerConfigurationArn', 'createWorkerConfigurationResponse_workerConfigurationArn' - The Amazon Resource Name (ARN) that Amazon assigned to the worker
-- configuration.
--
-- 'httpStatus', 'createWorkerConfigurationResponse_httpStatus' - The response's http status code.
newCreateWorkerConfigurationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateWorkerConfigurationResponse
newCreateWorkerConfigurationResponse pHttpStatus_ =
  CreateWorkerConfigurationResponse'
    { creationTime =
        Prelude.Nothing,
      latestRevision = Prelude.Nothing,
      name = Prelude.Nothing,
      workerConfigurationArn = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The time that the worker configuration was created.
createWorkerConfigurationResponse_creationTime :: Lens.Lens' CreateWorkerConfigurationResponse (Prelude.Maybe Prelude.UTCTime)
createWorkerConfigurationResponse_creationTime = Lens.lens (\CreateWorkerConfigurationResponse' {creationTime} -> creationTime) (\s@CreateWorkerConfigurationResponse' {} a -> s {creationTime = a} :: CreateWorkerConfigurationResponse) Prelude.. Lens.mapping Data._Time

-- | The latest revision of the worker configuration.
createWorkerConfigurationResponse_latestRevision :: Lens.Lens' CreateWorkerConfigurationResponse (Prelude.Maybe WorkerConfigurationRevisionSummary)
createWorkerConfigurationResponse_latestRevision = Lens.lens (\CreateWorkerConfigurationResponse' {latestRevision} -> latestRevision) (\s@CreateWorkerConfigurationResponse' {} a -> s {latestRevision = a} :: CreateWorkerConfigurationResponse)

-- | The name of the worker configuration.
createWorkerConfigurationResponse_name :: Lens.Lens' CreateWorkerConfigurationResponse (Prelude.Maybe Prelude.Text)
createWorkerConfigurationResponse_name = Lens.lens (\CreateWorkerConfigurationResponse' {name} -> name) (\s@CreateWorkerConfigurationResponse' {} a -> s {name = a} :: CreateWorkerConfigurationResponse)

-- | The Amazon Resource Name (ARN) that Amazon assigned to the worker
-- configuration.
createWorkerConfigurationResponse_workerConfigurationArn :: Lens.Lens' CreateWorkerConfigurationResponse (Prelude.Maybe Prelude.Text)
createWorkerConfigurationResponse_workerConfigurationArn = Lens.lens (\CreateWorkerConfigurationResponse' {workerConfigurationArn} -> workerConfigurationArn) (\s@CreateWorkerConfigurationResponse' {} a -> s {workerConfigurationArn = a} :: CreateWorkerConfigurationResponse)

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

instance
  Prelude.NFData
    CreateWorkerConfigurationResponse
  where
  rnf CreateWorkerConfigurationResponse' {..} =
    Prelude.rnf creationTime
      `Prelude.seq` Prelude.rnf latestRevision
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf workerConfigurationArn
      `Prelude.seq` Prelude.rnf httpStatus