packages feed

amazonka-license-manager-user-subscriptions-2.0: gen/Amazonka/LicenseManagerUserSubscriptions/Types/InstanceUserSummary.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.LicenseManagerUserSubscriptions.Types.InstanceUserSummary
-- 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.LicenseManagerUserSubscriptions.Types.InstanceUserSummary where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.LicenseManagerUserSubscriptions.Types.IdentityProvider
import qualified Amazonka.Prelude as Prelude

-- | Describes users of an EC2 instance providing user-based subscriptions.
--
-- /See:/ 'newInstanceUserSummary' smart constructor.
data InstanceUserSummary = InstanceUserSummary'
  { -- | The date a user was associated with an EC2 instance.
    associationDate :: Prelude.Maybe Prelude.Text,
    -- | The date a user was disassociated from an EC2 instance.
    disassociationDate :: Prelude.Maybe Prelude.Text,
    -- | The domain name of the user.
    domain :: Prelude.Maybe Prelude.Text,
    -- | The status message for users of an EC2 instance.
    statusMessage :: Prelude.Maybe Prelude.Text,
    -- | An object that specifies details for the identity provider.
    identityProvider :: IdentityProvider,
    -- | The ID of the EC2 instance, which provides user-based subscriptions.
    instanceId :: Prelude.Text,
    -- | The status of a user associated with an EC2 instance.
    status :: Prelude.Text,
    -- | The user name from the identity provider for the user.
    username :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'InstanceUserSummary' 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:
--
-- 'associationDate', 'instanceUserSummary_associationDate' - The date a user was associated with an EC2 instance.
--
-- 'disassociationDate', 'instanceUserSummary_disassociationDate' - The date a user was disassociated from an EC2 instance.
--
-- 'domain', 'instanceUserSummary_domain' - The domain name of the user.
--
-- 'statusMessage', 'instanceUserSummary_statusMessage' - The status message for users of an EC2 instance.
--
-- 'identityProvider', 'instanceUserSummary_identityProvider' - An object that specifies details for the identity provider.
--
-- 'instanceId', 'instanceUserSummary_instanceId' - The ID of the EC2 instance, which provides user-based subscriptions.
--
-- 'status', 'instanceUserSummary_status' - The status of a user associated with an EC2 instance.
--
-- 'username', 'instanceUserSummary_username' - The user name from the identity provider for the user.
newInstanceUserSummary ::
  -- | 'identityProvider'
  IdentityProvider ->
  -- | 'instanceId'
  Prelude.Text ->
  -- | 'status'
  Prelude.Text ->
  -- | 'username'
  Prelude.Text ->
  InstanceUserSummary
newInstanceUserSummary
  pIdentityProvider_
  pInstanceId_
  pStatus_
  pUsername_ =
    InstanceUserSummary'
      { associationDate =
          Prelude.Nothing,
        disassociationDate = Prelude.Nothing,
        domain = Prelude.Nothing,
        statusMessage = Prelude.Nothing,
        identityProvider = pIdentityProvider_,
        instanceId = pInstanceId_,
        status = pStatus_,
        username = pUsername_
      }

-- | The date a user was associated with an EC2 instance.
instanceUserSummary_associationDate :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
instanceUserSummary_associationDate = Lens.lens (\InstanceUserSummary' {associationDate} -> associationDate) (\s@InstanceUserSummary' {} a -> s {associationDate = a} :: InstanceUserSummary)

-- | The date a user was disassociated from an EC2 instance.
instanceUserSummary_disassociationDate :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
instanceUserSummary_disassociationDate = Lens.lens (\InstanceUserSummary' {disassociationDate} -> disassociationDate) (\s@InstanceUserSummary' {} a -> s {disassociationDate = a} :: InstanceUserSummary)

-- | The domain name of the user.
instanceUserSummary_domain :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
instanceUserSummary_domain = Lens.lens (\InstanceUserSummary' {domain} -> domain) (\s@InstanceUserSummary' {} a -> s {domain = a} :: InstanceUserSummary)

-- | The status message for users of an EC2 instance.
instanceUserSummary_statusMessage :: Lens.Lens' InstanceUserSummary (Prelude.Maybe Prelude.Text)
instanceUserSummary_statusMessage = Lens.lens (\InstanceUserSummary' {statusMessage} -> statusMessage) (\s@InstanceUserSummary' {} a -> s {statusMessage = a} :: InstanceUserSummary)

-- | An object that specifies details for the identity provider.
instanceUserSummary_identityProvider :: Lens.Lens' InstanceUserSummary IdentityProvider
instanceUserSummary_identityProvider = Lens.lens (\InstanceUserSummary' {identityProvider} -> identityProvider) (\s@InstanceUserSummary' {} a -> s {identityProvider = a} :: InstanceUserSummary)

-- | The ID of the EC2 instance, which provides user-based subscriptions.
instanceUserSummary_instanceId :: Lens.Lens' InstanceUserSummary Prelude.Text
instanceUserSummary_instanceId = Lens.lens (\InstanceUserSummary' {instanceId} -> instanceId) (\s@InstanceUserSummary' {} a -> s {instanceId = a} :: InstanceUserSummary)

-- | The status of a user associated with an EC2 instance.
instanceUserSummary_status :: Lens.Lens' InstanceUserSummary Prelude.Text
instanceUserSummary_status = Lens.lens (\InstanceUserSummary' {status} -> status) (\s@InstanceUserSummary' {} a -> s {status = a} :: InstanceUserSummary)

-- | The user name from the identity provider for the user.
instanceUserSummary_username :: Lens.Lens' InstanceUserSummary Prelude.Text
instanceUserSummary_username = Lens.lens (\InstanceUserSummary' {username} -> username) (\s@InstanceUserSummary' {} a -> s {username = a} :: InstanceUserSummary)

instance Data.FromJSON InstanceUserSummary where
  parseJSON =
    Data.withObject
      "InstanceUserSummary"
      ( \x ->
          InstanceUserSummary'
            Prelude.<$> (x Data..:? "AssociationDate")
            Prelude.<*> (x Data..:? "DisassociationDate")
            Prelude.<*> (x Data..:? "Domain")
            Prelude.<*> (x Data..:? "StatusMessage")
            Prelude.<*> (x Data..: "IdentityProvider")
            Prelude.<*> (x Data..: "InstanceId")
            Prelude.<*> (x Data..: "Status")
            Prelude.<*> (x Data..: "Username")
      )

instance Prelude.Hashable InstanceUserSummary where
  hashWithSalt _salt InstanceUserSummary' {..} =
    _salt
      `Prelude.hashWithSalt` associationDate
      `Prelude.hashWithSalt` disassociationDate
      `Prelude.hashWithSalt` domain
      `Prelude.hashWithSalt` statusMessage
      `Prelude.hashWithSalt` identityProvider
      `Prelude.hashWithSalt` instanceId
      `Prelude.hashWithSalt` status
      `Prelude.hashWithSalt` username

instance Prelude.NFData InstanceUserSummary where
  rnf InstanceUserSummary' {..} =
    Prelude.rnf associationDate
      `Prelude.seq` Prelude.rnf disassociationDate
      `Prelude.seq` Prelude.rnf domain
      `Prelude.seq` Prelude.rnf statusMessage
      `Prelude.seq` Prelude.rnf identityProvider
      `Prelude.seq` Prelude.rnf instanceId
      `Prelude.seq` Prelude.rnf status
      `Prelude.seq` Prelude.rnf username