packages feed

amazonka-iotevents-2.0: gen/Amazonka/IoTEvents/Types/InputConfiguration.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.IoTEvents.Types.InputConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.IoTEvents.Types.InputConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoTEvents.Types.InputStatus
import qualified Amazonka.Prelude as Prelude

-- | Information about the configuration of an input.
--
-- /See:/ 'newInputConfiguration' smart constructor.
data InputConfiguration = InputConfiguration'
  { -- | A brief description of the input.
    inputDescription :: Prelude.Maybe Prelude.Text,
    -- | The name of the input.
    inputName :: Prelude.Text,
    -- | The ARN of the input.
    inputArn :: Prelude.Text,
    -- | The time the input was created.
    creationTime :: Data.POSIX,
    -- | The last time the input was updated.
    lastUpdateTime :: Data.POSIX,
    -- | The status of the input.
    status :: InputStatus
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'InputConfiguration' 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:
--
-- 'inputDescription', 'inputConfiguration_inputDescription' - A brief description of the input.
--
-- 'inputName', 'inputConfiguration_inputName' - The name of the input.
--
-- 'inputArn', 'inputConfiguration_inputArn' - The ARN of the input.
--
-- 'creationTime', 'inputConfiguration_creationTime' - The time the input was created.
--
-- 'lastUpdateTime', 'inputConfiguration_lastUpdateTime' - The last time the input was updated.
--
-- 'status', 'inputConfiguration_status' - The status of the input.
newInputConfiguration ::
  -- | 'inputName'
  Prelude.Text ->
  -- | 'inputArn'
  Prelude.Text ->
  -- | 'creationTime'
  Prelude.UTCTime ->
  -- | 'lastUpdateTime'
  Prelude.UTCTime ->
  -- | 'status'
  InputStatus ->
  InputConfiguration
newInputConfiguration
  pInputName_
  pInputArn_
  pCreationTime_
  pLastUpdateTime_
  pStatus_ =
    InputConfiguration'
      { inputDescription =
          Prelude.Nothing,
        inputName = pInputName_,
        inputArn = pInputArn_,
        creationTime = Data._Time Lens.# pCreationTime_,
        lastUpdateTime = Data._Time Lens.# pLastUpdateTime_,
        status = pStatus_
      }

-- | A brief description of the input.
inputConfiguration_inputDescription :: Lens.Lens' InputConfiguration (Prelude.Maybe Prelude.Text)
inputConfiguration_inputDescription = Lens.lens (\InputConfiguration' {inputDescription} -> inputDescription) (\s@InputConfiguration' {} a -> s {inputDescription = a} :: InputConfiguration)

-- | The name of the input.
inputConfiguration_inputName :: Lens.Lens' InputConfiguration Prelude.Text
inputConfiguration_inputName = Lens.lens (\InputConfiguration' {inputName} -> inputName) (\s@InputConfiguration' {} a -> s {inputName = a} :: InputConfiguration)

-- | The ARN of the input.
inputConfiguration_inputArn :: Lens.Lens' InputConfiguration Prelude.Text
inputConfiguration_inputArn = Lens.lens (\InputConfiguration' {inputArn} -> inputArn) (\s@InputConfiguration' {} a -> s {inputArn = a} :: InputConfiguration)

-- | The time the input was created.
inputConfiguration_creationTime :: Lens.Lens' InputConfiguration Prelude.UTCTime
inputConfiguration_creationTime = Lens.lens (\InputConfiguration' {creationTime} -> creationTime) (\s@InputConfiguration' {} a -> s {creationTime = a} :: InputConfiguration) Prelude.. Data._Time

-- | The last time the input was updated.
inputConfiguration_lastUpdateTime :: Lens.Lens' InputConfiguration Prelude.UTCTime
inputConfiguration_lastUpdateTime = Lens.lens (\InputConfiguration' {lastUpdateTime} -> lastUpdateTime) (\s@InputConfiguration' {} a -> s {lastUpdateTime = a} :: InputConfiguration) Prelude.. Data._Time

-- | The status of the input.
inputConfiguration_status :: Lens.Lens' InputConfiguration InputStatus
inputConfiguration_status = Lens.lens (\InputConfiguration' {status} -> status) (\s@InputConfiguration' {} a -> s {status = a} :: InputConfiguration)

instance Data.FromJSON InputConfiguration where
  parseJSON =
    Data.withObject
      "InputConfiguration"
      ( \x ->
          InputConfiguration'
            Prelude.<$> (x Data..:? "inputDescription")
            Prelude.<*> (x Data..: "inputName")
            Prelude.<*> (x Data..: "inputArn")
            Prelude.<*> (x Data..: "creationTime")
            Prelude.<*> (x Data..: "lastUpdateTime")
            Prelude.<*> (x Data..: "status")
      )

instance Prelude.Hashable InputConfiguration where
  hashWithSalt _salt InputConfiguration' {..} =
    _salt
      `Prelude.hashWithSalt` inputDescription
      `Prelude.hashWithSalt` inputName
      `Prelude.hashWithSalt` inputArn
      `Prelude.hashWithSalt` creationTime
      `Prelude.hashWithSalt` lastUpdateTime
      `Prelude.hashWithSalt` status

instance Prelude.NFData InputConfiguration where
  rnf InputConfiguration' {..} =
    Prelude.rnf inputDescription
      `Prelude.seq` Prelude.rnf inputName
      `Prelude.seq` Prelude.rnf inputArn
      `Prelude.seq` Prelude.rnf creationTime
      `Prelude.seq` Prelude.rnf lastUpdateTime
      `Prelude.seq` Prelude.rnf status