packages feed

amazonka-cognito-idp-2.0: gen/Amazonka/CognitoIdentityProvider/Types/AuthEventType.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.CognitoIdentityProvider.Types.AuthEventType
-- 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.CognitoIdentityProvider.Types.AuthEventType where

import Amazonka.CognitoIdentityProvider.Types.ChallengeResponseType
import Amazonka.CognitoIdentityProvider.Types.EventContextDataType
import Amazonka.CognitoIdentityProvider.Types.EventFeedbackType
import Amazonka.CognitoIdentityProvider.Types.EventResponseType
import Amazonka.CognitoIdentityProvider.Types.EventRiskType
import Amazonka.CognitoIdentityProvider.Types.EventType
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

-- | The authentication event type.
--
-- /See:/ 'newAuthEventType' smart constructor.
data AuthEventType = AuthEventType'
  { -- | The challenge responses.
    challengeResponses :: Prelude.Maybe [ChallengeResponseType],
    -- | The creation date
    creationDate :: Prelude.Maybe Data.POSIX,
    -- | The user context data captured at the time of an event request. This
    -- value provides additional information about the client from which event
    -- the request is received.
    eventContextData :: Prelude.Maybe EventContextDataType,
    -- | A flag specifying the user feedback captured at the time of an event
    -- request is good or bad.
    eventFeedback :: Prelude.Maybe EventFeedbackType,
    -- | The event ID.
    eventId :: Prelude.Maybe Prelude.Text,
    -- | The event response.
    eventResponse :: Prelude.Maybe EventResponseType,
    -- | The event risk.
    eventRisk :: Prelude.Maybe EventRiskType,
    -- | The event type.
    eventType :: Prelude.Maybe EventType
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AuthEventType' 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:
--
-- 'challengeResponses', 'authEventType_challengeResponses' - The challenge responses.
--
-- 'creationDate', 'authEventType_creationDate' - The creation date
--
-- 'eventContextData', 'authEventType_eventContextData' - The user context data captured at the time of an event request. This
-- value provides additional information about the client from which event
-- the request is received.
--
-- 'eventFeedback', 'authEventType_eventFeedback' - A flag specifying the user feedback captured at the time of an event
-- request is good or bad.
--
-- 'eventId', 'authEventType_eventId' - The event ID.
--
-- 'eventResponse', 'authEventType_eventResponse' - The event response.
--
-- 'eventRisk', 'authEventType_eventRisk' - The event risk.
--
-- 'eventType', 'authEventType_eventType' - The event type.
newAuthEventType ::
  AuthEventType
newAuthEventType =
  AuthEventType'
    { challengeResponses =
        Prelude.Nothing,
      creationDate = Prelude.Nothing,
      eventContextData = Prelude.Nothing,
      eventFeedback = Prelude.Nothing,
      eventId = Prelude.Nothing,
      eventResponse = Prelude.Nothing,
      eventRisk = Prelude.Nothing,
      eventType = Prelude.Nothing
    }

-- | The challenge responses.
authEventType_challengeResponses :: Lens.Lens' AuthEventType (Prelude.Maybe [ChallengeResponseType])
authEventType_challengeResponses = Lens.lens (\AuthEventType' {challengeResponses} -> challengeResponses) (\s@AuthEventType' {} a -> s {challengeResponses = a} :: AuthEventType) Prelude.. Lens.mapping Lens.coerced

-- | The creation date
authEventType_creationDate :: Lens.Lens' AuthEventType (Prelude.Maybe Prelude.UTCTime)
authEventType_creationDate = Lens.lens (\AuthEventType' {creationDate} -> creationDate) (\s@AuthEventType' {} a -> s {creationDate = a} :: AuthEventType) Prelude.. Lens.mapping Data._Time

-- | The user context data captured at the time of an event request. This
-- value provides additional information about the client from which event
-- the request is received.
authEventType_eventContextData :: Lens.Lens' AuthEventType (Prelude.Maybe EventContextDataType)
authEventType_eventContextData = Lens.lens (\AuthEventType' {eventContextData} -> eventContextData) (\s@AuthEventType' {} a -> s {eventContextData = a} :: AuthEventType)

-- | A flag specifying the user feedback captured at the time of an event
-- request is good or bad.
authEventType_eventFeedback :: Lens.Lens' AuthEventType (Prelude.Maybe EventFeedbackType)
authEventType_eventFeedback = Lens.lens (\AuthEventType' {eventFeedback} -> eventFeedback) (\s@AuthEventType' {} a -> s {eventFeedback = a} :: AuthEventType)

-- | The event ID.
authEventType_eventId :: Lens.Lens' AuthEventType (Prelude.Maybe Prelude.Text)
authEventType_eventId = Lens.lens (\AuthEventType' {eventId} -> eventId) (\s@AuthEventType' {} a -> s {eventId = a} :: AuthEventType)

-- | The event response.
authEventType_eventResponse :: Lens.Lens' AuthEventType (Prelude.Maybe EventResponseType)
authEventType_eventResponse = Lens.lens (\AuthEventType' {eventResponse} -> eventResponse) (\s@AuthEventType' {} a -> s {eventResponse = a} :: AuthEventType)

-- | The event risk.
authEventType_eventRisk :: Lens.Lens' AuthEventType (Prelude.Maybe EventRiskType)
authEventType_eventRisk = Lens.lens (\AuthEventType' {eventRisk} -> eventRisk) (\s@AuthEventType' {} a -> s {eventRisk = a} :: AuthEventType)

-- | The event type.
authEventType_eventType :: Lens.Lens' AuthEventType (Prelude.Maybe EventType)
authEventType_eventType = Lens.lens (\AuthEventType' {eventType} -> eventType) (\s@AuthEventType' {} a -> s {eventType = a} :: AuthEventType)

instance Data.FromJSON AuthEventType where
  parseJSON =
    Data.withObject
      "AuthEventType"
      ( \x ->
          AuthEventType'
            Prelude.<$> ( x
                            Data..:? "ChallengeResponses"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "CreationDate")
            Prelude.<*> (x Data..:? "EventContextData")
            Prelude.<*> (x Data..:? "EventFeedback")
            Prelude.<*> (x Data..:? "EventId")
            Prelude.<*> (x Data..:? "EventResponse")
            Prelude.<*> (x Data..:? "EventRisk")
            Prelude.<*> (x Data..:? "EventType")
      )

instance Prelude.Hashable AuthEventType where
  hashWithSalt _salt AuthEventType' {..} =
    _salt
      `Prelude.hashWithSalt` challengeResponses
      `Prelude.hashWithSalt` creationDate
      `Prelude.hashWithSalt` eventContextData
      `Prelude.hashWithSalt` eventFeedback
      `Prelude.hashWithSalt` eventId
      `Prelude.hashWithSalt` eventResponse
      `Prelude.hashWithSalt` eventRisk
      `Prelude.hashWithSalt` eventType

instance Prelude.NFData AuthEventType where
  rnf AuthEventType' {..} =
    Prelude.rnf challengeResponses
      `Prelude.seq` Prelude.rnf creationDate
      `Prelude.seq` Prelude.rnf eventContextData
      `Prelude.seq` Prelude.rnf eventFeedback
      `Prelude.seq` Prelude.rnf eventId
      `Prelude.seq` Prelude.rnf eventResponse
      `Prelude.seq` Prelude.rnf eventRisk
      `Prelude.seq` Prelude.rnf eventType