{-# 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.AppIntegrationS.Types.EventIntegrationAssociation
-- 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.AppIntegrationS.Types.EventIntegrationAssociation where

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 event integration association.
--
-- /See:/ 'newEventIntegrationAssociation' smart constructor.
data EventIntegrationAssociation = EventIntegrationAssociation'
  { -- | The metadata associated with the client.
    EventIntegrationAssociation -> Maybe (HashMap Text Text)
clientAssociationMetadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The identifier for the client that is associated with the event
    -- integration.
    EventIntegrationAssociation -> Maybe Text
clientId :: Prelude.Maybe Prelude.Text,
    -- | The name of the EventBridge rule.
    EventIntegrationAssociation -> Maybe Text
eventBridgeRuleName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) for the event integration association.
    EventIntegrationAssociation -> Maybe Text
eventIntegrationAssociationArn :: Prelude.Maybe Prelude.Text,
    -- | The identifier for the event integration association.
    EventIntegrationAssociation -> Maybe Text
eventIntegrationAssociationId :: Prelude.Maybe Prelude.Text,
    -- | The name of the event integration.
    EventIntegrationAssociation -> Maybe Text
eventIntegrationName :: Prelude.Maybe Prelude.Text
  }
  deriving (EventIntegrationAssociation -> EventIntegrationAssociation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EventIntegrationAssociation -> EventIntegrationAssociation -> Bool
$c/= :: EventIntegrationAssociation -> EventIntegrationAssociation -> Bool
== :: EventIntegrationAssociation -> EventIntegrationAssociation -> Bool
$c== :: EventIntegrationAssociation -> EventIntegrationAssociation -> Bool
Prelude.Eq, ReadPrec [EventIntegrationAssociation]
ReadPrec EventIntegrationAssociation
Int -> ReadS EventIntegrationAssociation
ReadS [EventIntegrationAssociation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EventIntegrationAssociation]
$creadListPrec :: ReadPrec [EventIntegrationAssociation]
readPrec :: ReadPrec EventIntegrationAssociation
$creadPrec :: ReadPrec EventIntegrationAssociation
readList :: ReadS [EventIntegrationAssociation]
$creadList :: ReadS [EventIntegrationAssociation]
readsPrec :: Int -> ReadS EventIntegrationAssociation
$creadsPrec :: Int -> ReadS EventIntegrationAssociation
Prelude.Read, Int -> EventIntegrationAssociation -> ShowS
[EventIntegrationAssociation] -> ShowS
EventIntegrationAssociation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EventIntegrationAssociation] -> ShowS
$cshowList :: [EventIntegrationAssociation] -> ShowS
show :: EventIntegrationAssociation -> String
$cshow :: EventIntegrationAssociation -> String
showsPrec :: Int -> EventIntegrationAssociation -> ShowS
$cshowsPrec :: Int -> EventIntegrationAssociation -> ShowS
Prelude.Show, forall x.
Rep EventIntegrationAssociation x -> EventIntegrationAssociation
forall x.
EventIntegrationAssociation -> Rep EventIntegrationAssociation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep EventIntegrationAssociation x -> EventIntegrationAssociation
$cfrom :: forall x.
EventIntegrationAssociation -> Rep EventIntegrationAssociation x
Prelude.Generic)

-- |
-- Create a value of 'EventIntegrationAssociation' 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:
--
-- 'clientAssociationMetadata', 'eventIntegrationAssociation_clientAssociationMetadata' - The metadata associated with the client.
--
-- 'clientId', 'eventIntegrationAssociation_clientId' - The identifier for the client that is associated with the event
-- integration.
--
-- 'eventBridgeRuleName', 'eventIntegrationAssociation_eventBridgeRuleName' - The name of the EventBridge rule.
--
-- 'eventIntegrationAssociationArn', 'eventIntegrationAssociation_eventIntegrationAssociationArn' - The Amazon Resource Name (ARN) for the event integration association.
--
-- 'eventIntegrationAssociationId', 'eventIntegrationAssociation_eventIntegrationAssociationId' - The identifier for the event integration association.
--
-- 'eventIntegrationName', 'eventIntegrationAssociation_eventIntegrationName' - The name of the event integration.
newEventIntegrationAssociation ::
  EventIntegrationAssociation
newEventIntegrationAssociation :: EventIntegrationAssociation
newEventIntegrationAssociation =
  EventIntegrationAssociation'
    { $sel:clientAssociationMetadata:EventIntegrationAssociation' :: Maybe (HashMap Text Text)
clientAssociationMetadata =
        forall a. Maybe a
Prelude.Nothing,
      $sel:clientId:EventIntegrationAssociation' :: Maybe Text
clientId = forall a. Maybe a
Prelude.Nothing,
      $sel:eventBridgeRuleName:EventIntegrationAssociation' :: Maybe Text
eventBridgeRuleName = forall a. Maybe a
Prelude.Nothing,
      $sel:eventIntegrationAssociationArn:EventIntegrationAssociation' :: Maybe Text
eventIntegrationAssociationArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:eventIntegrationAssociationId:EventIntegrationAssociation' :: Maybe Text
eventIntegrationAssociationId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:eventIntegrationName:EventIntegrationAssociation' :: Maybe Text
eventIntegrationName = forall a. Maybe a
Prelude.Nothing
    }

-- | The metadata associated with the client.
eventIntegrationAssociation_clientAssociationMetadata :: Lens.Lens' EventIntegrationAssociation (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
eventIntegrationAssociation_clientAssociationMetadata :: Lens' EventIntegrationAssociation (Maybe (HashMap Text Text))
eventIntegrationAssociation_clientAssociationMetadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventIntegrationAssociation' {Maybe (HashMap Text Text)
clientAssociationMetadata :: Maybe (HashMap Text Text)
$sel:clientAssociationMetadata:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe (HashMap Text Text)
clientAssociationMetadata} -> Maybe (HashMap Text Text)
clientAssociationMetadata) (\s :: EventIntegrationAssociation
s@EventIntegrationAssociation' {} Maybe (HashMap Text Text)
a -> EventIntegrationAssociation
s {$sel:clientAssociationMetadata:EventIntegrationAssociation' :: Maybe (HashMap Text Text)
clientAssociationMetadata = Maybe (HashMap Text Text)
a} :: EventIntegrationAssociation) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The identifier for the client that is associated with the event
-- integration.
eventIntegrationAssociation_clientId :: Lens.Lens' EventIntegrationAssociation (Prelude.Maybe Prelude.Text)
eventIntegrationAssociation_clientId :: Lens' EventIntegrationAssociation (Maybe Text)
eventIntegrationAssociation_clientId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventIntegrationAssociation' {Maybe Text
clientId :: Maybe Text
$sel:clientId:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
clientId} -> Maybe Text
clientId) (\s :: EventIntegrationAssociation
s@EventIntegrationAssociation' {} Maybe Text
a -> EventIntegrationAssociation
s {$sel:clientId:EventIntegrationAssociation' :: Maybe Text
clientId = Maybe Text
a} :: EventIntegrationAssociation)

-- | The name of the EventBridge rule.
eventIntegrationAssociation_eventBridgeRuleName :: Lens.Lens' EventIntegrationAssociation (Prelude.Maybe Prelude.Text)
eventIntegrationAssociation_eventBridgeRuleName :: Lens' EventIntegrationAssociation (Maybe Text)
eventIntegrationAssociation_eventBridgeRuleName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventIntegrationAssociation' {Maybe Text
eventBridgeRuleName :: Maybe Text
$sel:eventBridgeRuleName:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
eventBridgeRuleName} -> Maybe Text
eventBridgeRuleName) (\s :: EventIntegrationAssociation
s@EventIntegrationAssociation' {} Maybe Text
a -> EventIntegrationAssociation
s {$sel:eventBridgeRuleName:EventIntegrationAssociation' :: Maybe Text
eventBridgeRuleName = Maybe Text
a} :: EventIntegrationAssociation)

-- | The Amazon Resource Name (ARN) for the event integration association.
eventIntegrationAssociation_eventIntegrationAssociationArn :: Lens.Lens' EventIntegrationAssociation (Prelude.Maybe Prelude.Text)
eventIntegrationAssociation_eventIntegrationAssociationArn :: Lens' EventIntegrationAssociation (Maybe Text)
eventIntegrationAssociation_eventIntegrationAssociationArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventIntegrationAssociation' {Maybe Text
eventIntegrationAssociationArn :: Maybe Text
$sel:eventIntegrationAssociationArn:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
eventIntegrationAssociationArn} -> Maybe Text
eventIntegrationAssociationArn) (\s :: EventIntegrationAssociation
s@EventIntegrationAssociation' {} Maybe Text
a -> EventIntegrationAssociation
s {$sel:eventIntegrationAssociationArn:EventIntegrationAssociation' :: Maybe Text
eventIntegrationAssociationArn = Maybe Text
a} :: EventIntegrationAssociation)

-- | The identifier for the event integration association.
eventIntegrationAssociation_eventIntegrationAssociationId :: Lens.Lens' EventIntegrationAssociation (Prelude.Maybe Prelude.Text)
eventIntegrationAssociation_eventIntegrationAssociationId :: Lens' EventIntegrationAssociation (Maybe Text)
eventIntegrationAssociation_eventIntegrationAssociationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventIntegrationAssociation' {Maybe Text
eventIntegrationAssociationId :: Maybe Text
$sel:eventIntegrationAssociationId:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
eventIntegrationAssociationId} -> Maybe Text
eventIntegrationAssociationId) (\s :: EventIntegrationAssociation
s@EventIntegrationAssociation' {} Maybe Text
a -> EventIntegrationAssociation
s {$sel:eventIntegrationAssociationId:EventIntegrationAssociation' :: Maybe Text
eventIntegrationAssociationId = Maybe Text
a} :: EventIntegrationAssociation)

-- | The name of the event integration.
eventIntegrationAssociation_eventIntegrationName :: Lens.Lens' EventIntegrationAssociation (Prelude.Maybe Prelude.Text)
eventIntegrationAssociation_eventIntegrationName :: Lens' EventIntegrationAssociation (Maybe Text)
eventIntegrationAssociation_eventIntegrationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EventIntegrationAssociation' {Maybe Text
eventIntegrationName :: Maybe Text
$sel:eventIntegrationName:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
eventIntegrationName} -> Maybe Text
eventIntegrationName) (\s :: EventIntegrationAssociation
s@EventIntegrationAssociation' {} Maybe Text
a -> EventIntegrationAssociation
s {$sel:eventIntegrationName:EventIntegrationAssociation' :: Maybe Text
eventIntegrationName = Maybe Text
a} :: EventIntegrationAssociation)

instance Data.FromJSON EventIntegrationAssociation where
  parseJSON :: Value -> Parser EventIntegrationAssociation
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"EventIntegrationAssociation"
      ( \Object
x ->
          Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> EventIntegrationAssociation
EventIntegrationAssociation'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ClientAssociationMetadata"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ClientId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EventBridgeRuleName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EventIntegrationAssociationArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EventIntegrationAssociationId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EventIntegrationName")
      )

instance Prelude.Hashable EventIntegrationAssociation where
  hashWithSalt :: Int -> EventIntegrationAssociation -> Int
hashWithSalt Int
_salt EventIntegrationAssociation' {Maybe Text
Maybe (HashMap Text Text)
eventIntegrationName :: Maybe Text
eventIntegrationAssociationId :: Maybe Text
eventIntegrationAssociationArn :: Maybe Text
eventBridgeRuleName :: Maybe Text
clientId :: Maybe Text
clientAssociationMetadata :: Maybe (HashMap Text Text)
$sel:eventIntegrationName:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:eventIntegrationAssociationId:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:eventIntegrationAssociationArn:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:eventBridgeRuleName:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:clientId:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:clientAssociationMetadata:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe (HashMap Text Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
clientAssociationMetadata
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventBridgeRuleName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventIntegrationAssociationArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventIntegrationAssociationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventIntegrationName

instance Prelude.NFData EventIntegrationAssociation where
  rnf :: EventIntegrationAssociation -> ()
rnf EventIntegrationAssociation' {Maybe Text
Maybe (HashMap Text Text)
eventIntegrationName :: Maybe Text
eventIntegrationAssociationId :: Maybe Text
eventIntegrationAssociationArn :: Maybe Text
eventBridgeRuleName :: Maybe Text
clientId :: Maybe Text
clientAssociationMetadata :: Maybe (HashMap Text Text)
$sel:eventIntegrationName:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:eventIntegrationAssociationId:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:eventIntegrationAssociationArn:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:eventBridgeRuleName:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:clientId:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe Text
$sel:clientAssociationMetadata:EventIntegrationAssociation' :: EventIntegrationAssociation -> Maybe (HashMap Text Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
clientAssociationMetadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventBridgeRuleName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventIntegrationAssociationArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventIntegrationAssociationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventIntegrationName