{-# 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.DMS.DescribeEvents
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists events for a given source identifier and source type. You can also
-- specify a start and end time. For more information on DMS events, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html Working with Events and Notifications>
-- in the /Database Migration Service User Guide./
--
-- This operation returns paginated results.
module Amazonka.DMS.DescribeEvents
  ( -- * Creating a Request
    DescribeEvents (..),
    newDescribeEvents,

    -- * Request Lenses
    describeEvents_duration,
    describeEvents_endTime,
    describeEvents_eventCategories,
    describeEvents_filters,
    describeEvents_marker,
    describeEvents_maxRecords,
    describeEvents_sourceIdentifier,
    describeEvents_sourceType,
    describeEvents_startTime,

    -- * Destructuring the Response
    DescribeEventsResponse (..),
    newDescribeEventsResponse,

    -- * Response Lenses
    describeEventsResponse_events,
    describeEventsResponse_marker,
    describeEventsResponse_httpStatus,
  )
where

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

-- |
--
-- /See:/ 'newDescribeEvents' smart constructor.
data DescribeEvents = DescribeEvents'
  { -- | The duration of the events to be listed.
    DescribeEvents -> Maybe Int
duration :: Prelude.Maybe Prelude.Int,
    -- | The end time for the events to be listed.
    DescribeEvents -> Maybe POSIX
endTime :: Prelude.Maybe Data.POSIX,
    -- | A list of event categories for the source type that you\'ve chosen.
    DescribeEvents -> Maybe [Text]
eventCategories :: Prelude.Maybe [Prelude.Text],
    -- | Filters applied to events. The only valid filter is
    -- @replication-instance-id@.
    DescribeEvents -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | An optional pagination token provided by a previous request. If this
    -- parameter is specified, the response includes only records beyond the
    -- marker, up to the value specified by @MaxRecords@.
    DescribeEvents -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of records to include in the response. If more
    -- records exist than the specified @MaxRecords@ value, a pagination token
    -- called a marker is included in the response so that the remaining
    -- results can be retrieved.
    --
    -- Default: 100
    --
    -- Constraints: Minimum 20, maximum 100.
    DescribeEvents -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int,
    -- | The identifier of an event source.
    DescribeEvents -> Maybe Text
sourceIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The type of DMS resource that generates events.
    --
    -- Valid values: replication-instance | replication-task
    DescribeEvents -> Maybe SourceType
sourceType :: Prelude.Maybe SourceType,
    -- | The start time for the events to be listed.
    DescribeEvents -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX
  }
  deriving (DescribeEvents -> DescribeEvents -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEvents -> DescribeEvents -> Bool
$c/= :: DescribeEvents -> DescribeEvents -> Bool
== :: DescribeEvents -> DescribeEvents -> Bool
$c== :: DescribeEvents -> DescribeEvents -> Bool
Prelude.Eq, ReadPrec [DescribeEvents]
ReadPrec DescribeEvents
Int -> ReadS DescribeEvents
ReadS [DescribeEvents]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEvents]
$creadListPrec :: ReadPrec [DescribeEvents]
readPrec :: ReadPrec DescribeEvents
$creadPrec :: ReadPrec DescribeEvents
readList :: ReadS [DescribeEvents]
$creadList :: ReadS [DescribeEvents]
readsPrec :: Int -> ReadS DescribeEvents
$creadsPrec :: Int -> ReadS DescribeEvents
Prelude.Read, Int -> DescribeEvents -> ShowS
[DescribeEvents] -> ShowS
DescribeEvents -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEvents] -> ShowS
$cshowList :: [DescribeEvents] -> ShowS
show :: DescribeEvents -> String
$cshow :: DescribeEvents -> String
showsPrec :: Int -> DescribeEvents -> ShowS
$cshowsPrec :: Int -> DescribeEvents -> ShowS
Prelude.Show, forall x. Rep DescribeEvents x -> DescribeEvents
forall x. DescribeEvents -> Rep DescribeEvents x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeEvents x -> DescribeEvents
$cfrom :: forall x. DescribeEvents -> Rep DescribeEvents x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEvents' 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:
--
-- 'duration', 'describeEvents_duration' - The duration of the events to be listed.
--
-- 'endTime', 'describeEvents_endTime' - The end time for the events to be listed.
--
-- 'eventCategories', 'describeEvents_eventCategories' - A list of event categories for the source type that you\'ve chosen.
--
-- 'filters', 'describeEvents_filters' - Filters applied to events. The only valid filter is
-- @replication-instance-id@.
--
-- 'marker', 'describeEvents_marker' - An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
--
-- 'maxRecords', 'describeEvents_maxRecords' - The maximum number of records to include in the response. If more
-- records exist than the specified @MaxRecords@ value, a pagination token
-- called a marker is included in the response so that the remaining
-- results can be retrieved.
--
-- Default: 100
--
-- Constraints: Minimum 20, maximum 100.
--
-- 'sourceIdentifier', 'describeEvents_sourceIdentifier' - The identifier of an event source.
--
-- 'sourceType', 'describeEvents_sourceType' - The type of DMS resource that generates events.
--
-- Valid values: replication-instance | replication-task
--
-- 'startTime', 'describeEvents_startTime' - The start time for the events to be listed.
newDescribeEvents ::
  DescribeEvents
newDescribeEvents :: DescribeEvents
newDescribeEvents =
  DescribeEvents'
    { $sel:duration:DescribeEvents' :: Maybe Int
duration = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:DescribeEvents' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:eventCategories:DescribeEvents' :: Maybe [Text]
eventCategories = forall a. Maybe a
Prelude.Nothing,
      $sel:filters:DescribeEvents' :: Maybe [Filter]
filters = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeEvents' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeEvents' :: Maybe Int
maxRecords = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceIdentifier:DescribeEvents' :: Maybe Text
sourceIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceType:DescribeEvents' :: Maybe SourceType
sourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:DescribeEvents' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing
    }

-- | The duration of the events to be listed.
describeEvents_duration :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Int)
describeEvents_duration :: Lens' DescribeEvents (Maybe Int)
describeEvents_duration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Int
duration :: Maybe Int
$sel:duration:DescribeEvents' :: DescribeEvents -> Maybe Int
duration} -> Maybe Int
duration) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Int
a -> DescribeEvents
s {$sel:duration:DescribeEvents' :: Maybe Int
duration = Maybe Int
a} :: DescribeEvents)

-- | The end time for the events to be listed.
describeEvents_endTime :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.UTCTime)
describeEvents_endTime :: Lens' DescribeEvents (Maybe UTCTime)
describeEvents_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe POSIX
a -> DescribeEvents
s {$sel:endTime:DescribeEvents' :: Maybe POSIX
endTime = Maybe POSIX
a} :: DescribeEvents) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A list of event categories for the source type that you\'ve chosen.
describeEvents_eventCategories :: Lens.Lens' DescribeEvents (Prelude.Maybe [Prelude.Text])
describeEvents_eventCategories :: Lens' DescribeEvents (Maybe [Text])
describeEvents_eventCategories = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe [Text]
eventCategories :: Maybe [Text]
$sel:eventCategories:DescribeEvents' :: DescribeEvents -> Maybe [Text]
eventCategories} -> Maybe [Text]
eventCategories) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe [Text]
a -> DescribeEvents
s {$sel:eventCategories:DescribeEvents' :: Maybe [Text]
eventCategories = Maybe [Text]
a} :: DescribeEvents) 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

-- | Filters applied to events. The only valid filter is
-- @replication-instance-id@.
describeEvents_filters :: Lens.Lens' DescribeEvents (Prelude.Maybe [Filter])
describeEvents_filters :: Lens' DescribeEvents (Maybe [Filter])
describeEvents_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:DescribeEvents' :: DescribeEvents -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe [Filter]
a -> DescribeEvents
s {$sel:filters:DescribeEvents' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: DescribeEvents) 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

-- | An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
describeEvents_marker :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_marker :: Lens' DescribeEvents (Maybe Text)
describeEvents_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeEvents' :: DescribeEvents -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:marker:DescribeEvents' :: Maybe Text
marker = Maybe Text
a} :: DescribeEvents)

-- | The maximum number of records to include in the response. If more
-- records exist than the specified @MaxRecords@ value, a pagination token
-- called a marker is included in the response so that the remaining
-- results can be retrieved.
--
-- Default: 100
--
-- Constraints: Minimum 20, maximum 100.
describeEvents_maxRecords :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Int)
describeEvents_maxRecords :: Lens' DescribeEvents (Maybe Int)
describeEvents_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Int
maxRecords :: Maybe Int
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Int
maxRecords} -> Maybe Int
maxRecords) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Int
a -> DescribeEvents
s {$sel:maxRecords:DescribeEvents' :: Maybe Int
maxRecords = Maybe Int
a} :: DescribeEvents)

-- | The identifier of an event source.
describeEvents_sourceIdentifier :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_sourceIdentifier :: Lens' DescribeEvents (Maybe Text)
describeEvents_sourceIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
sourceIdentifier :: Maybe Text
$sel:sourceIdentifier:DescribeEvents' :: DescribeEvents -> Maybe Text
sourceIdentifier} -> Maybe Text
sourceIdentifier) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:sourceIdentifier:DescribeEvents' :: Maybe Text
sourceIdentifier = Maybe Text
a} :: DescribeEvents)

-- | The type of DMS resource that generates events.
--
-- Valid values: replication-instance | replication-task
describeEvents_sourceType :: Lens.Lens' DescribeEvents (Prelude.Maybe SourceType)
describeEvents_sourceType :: Lens' DescribeEvents (Maybe SourceType)
describeEvents_sourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe SourceType
sourceType :: Maybe SourceType
$sel:sourceType:DescribeEvents' :: DescribeEvents -> Maybe SourceType
sourceType} -> Maybe SourceType
sourceType) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe SourceType
a -> DescribeEvents
s {$sel:sourceType:DescribeEvents' :: Maybe SourceType
sourceType = Maybe SourceType
a} :: DescribeEvents)

-- | The start time for the events to be listed.
describeEvents_startTime :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.UTCTime)
describeEvents_startTime :: Lens' DescribeEvents (Maybe UTCTime)
describeEvents_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe POSIX
a -> DescribeEvents
s {$sel:startTime:DescribeEvents' :: Maybe POSIX
startTime = Maybe POSIX
a} :: DescribeEvents) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Core.AWSPager DescribeEvents where
  page :: DescribeEvents
-> AWSResponse DescribeEvents -> Maybe DescribeEvents
page DescribeEvents
rq AWSResponse DescribeEvents
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeEvents
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEventsResponse (Maybe Text)
describeEventsResponse_marker
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeEvents
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEventsResponse (Maybe [Event])
describeEventsResponse_events
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeEvents
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeEvents (Maybe Text)
describeEvents_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeEvents
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEventsResponse (Maybe Text)
describeEventsResponse_marker
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeEvents where
  type
    AWSResponse DescribeEvents =
      DescribeEventsResponse
  request :: (Service -> Service) -> DescribeEvents -> Request DescribeEvents
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeEvents
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeEvents)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe [Event] -> Maybe Text -> Int -> DescribeEventsResponse
DescribeEventsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Events" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ 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 -> Either String (Maybe a)
Data..?> Key
"Marker")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeEvents where
  hashWithSalt :: Int -> DescribeEvents -> Int
hashWithSalt Int
_salt DescribeEvents' {Maybe Int
Maybe [Text]
Maybe [Filter]
Maybe Text
Maybe POSIX
Maybe SourceType
startTime :: Maybe POSIX
sourceType :: Maybe SourceType
sourceIdentifier :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
filters :: Maybe [Filter]
eventCategories :: Maybe [Text]
endTime :: Maybe POSIX
duration :: Maybe Int
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
$sel:sourceType:DescribeEvents' :: DescribeEvents -> Maybe SourceType
$sel:sourceIdentifier:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Int
$sel:marker:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:filters:DescribeEvents' :: DescribeEvents -> Maybe [Filter]
$sel:eventCategories:DescribeEvents' :: DescribeEvents -> Maybe [Text]
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
$sel:duration:DescribeEvents' :: DescribeEvents -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
duration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
eventCategories
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Filter]
filters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxRecords
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SourceType
sourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
startTime

instance Prelude.NFData DescribeEvents where
  rnf :: DescribeEvents -> ()
rnf DescribeEvents' {Maybe Int
Maybe [Text]
Maybe [Filter]
Maybe Text
Maybe POSIX
Maybe SourceType
startTime :: Maybe POSIX
sourceType :: Maybe SourceType
sourceIdentifier :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
filters :: Maybe [Filter]
eventCategories :: Maybe [Text]
endTime :: Maybe POSIX
duration :: Maybe Int
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
$sel:sourceType:DescribeEvents' :: DescribeEvents -> Maybe SourceType
$sel:sourceIdentifier:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Int
$sel:marker:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:filters:DescribeEvents' :: DescribeEvents -> Maybe [Filter]
$sel:eventCategories:DescribeEvents' :: DescribeEvents -> Maybe [Text]
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
$sel:duration:DescribeEvents' :: DescribeEvents -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
duration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
eventCategories
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Filter]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SourceType
sourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime

instance Data.ToHeaders DescribeEvents where
  toHeaders :: DescribeEvents -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AmazonDMSv20160101.DescribeEvents" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeEvents where
  toJSON :: DescribeEvents -> Value
toJSON DescribeEvents' {Maybe Int
Maybe [Text]
Maybe [Filter]
Maybe Text
Maybe POSIX
Maybe SourceType
startTime :: Maybe POSIX
sourceType :: Maybe SourceType
sourceIdentifier :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
filters :: Maybe [Filter]
eventCategories :: Maybe [Text]
endTime :: Maybe POSIX
duration :: Maybe Int
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
$sel:sourceType:DescribeEvents' :: DescribeEvents -> Maybe SourceType
$sel:sourceIdentifier:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Int
$sel:marker:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:filters:DescribeEvents' :: DescribeEvents -> Maybe [Filter]
$sel:eventCategories:DescribeEvents' :: DescribeEvents -> Maybe [Text]
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe POSIX
$sel:duration:DescribeEvents' :: DescribeEvents -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Duration" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
duration,
            (Key
"EndTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe POSIX
endTime,
            (Key
"EventCategories" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
eventCategories,
            (Key
"Filters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Filter]
filters,
            (Key
"Marker" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
marker,
            (Key
"MaxRecords" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxRecords,
            (Key
"SourceIdentifier" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
sourceIdentifier,
            (Key
"SourceType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SourceType
sourceType,
            (Key
"StartTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe POSIX
startTime
          ]
      )

instance Data.ToPath DescribeEvents where
  toPath :: DescribeEvents -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeEvents where
  toQuery :: DescribeEvents -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- |
--
-- /See:/ 'newDescribeEventsResponse' smart constructor.
data DescribeEventsResponse = DescribeEventsResponse'
  { -- | The events described.
    DescribeEventsResponse -> Maybe [Event]
events :: Prelude.Maybe [Event],
    -- | An optional pagination token provided by a previous request. If this
    -- parameter is specified, the response includes only records beyond the
    -- marker, up to the value specified by @MaxRecords@.
    DescribeEventsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeEventsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeEventsResponse -> DescribeEventsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEventsResponse -> DescribeEventsResponse -> Bool
$c/= :: DescribeEventsResponse -> DescribeEventsResponse -> Bool
== :: DescribeEventsResponse -> DescribeEventsResponse -> Bool
$c== :: DescribeEventsResponse -> DescribeEventsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeEventsResponse]
ReadPrec DescribeEventsResponse
Int -> ReadS DescribeEventsResponse
ReadS [DescribeEventsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEventsResponse]
$creadListPrec :: ReadPrec [DescribeEventsResponse]
readPrec :: ReadPrec DescribeEventsResponse
$creadPrec :: ReadPrec DescribeEventsResponse
readList :: ReadS [DescribeEventsResponse]
$creadList :: ReadS [DescribeEventsResponse]
readsPrec :: Int -> ReadS DescribeEventsResponse
$creadsPrec :: Int -> ReadS DescribeEventsResponse
Prelude.Read, Int -> DescribeEventsResponse -> ShowS
[DescribeEventsResponse] -> ShowS
DescribeEventsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEventsResponse] -> ShowS
$cshowList :: [DescribeEventsResponse] -> ShowS
show :: DescribeEventsResponse -> String
$cshow :: DescribeEventsResponse -> String
showsPrec :: Int -> DescribeEventsResponse -> ShowS
$cshowsPrec :: Int -> DescribeEventsResponse -> ShowS
Prelude.Show, forall x. Rep DescribeEventsResponse x -> DescribeEventsResponse
forall x. DescribeEventsResponse -> Rep DescribeEventsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeEventsResponse x -> DescribeEventsResponse
$cfrom :: forall x. DescribeEventsResponse -> Rep DescribeEventsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEventsResponse' 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:
--
-- 'events', 'describeEventsResponse_events' - The events described.
--
-- 'marker', 'describeEventsResponse_marker' - An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
--
-- 'httpStatus', 'describeEventsResponse_httpStatus' - The response's http status code.
newDescribeEventsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeEventsResponse
newDescribeEventsResponse :: Int -> DescribeEventsResponse
newDescribeEventsResponse Int
pHttpStatus_ =
  DescribeEventsResponse'
    { $sel:events:DescribeEventsResponse' :: Maybe [Event]
events = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeEventsResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeEventsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The events described.
describeEventsResponse_events :: Lens.Lens' DescribeEventsResponse (Prelude.Maybe [Event])
describeEventsResponse_events :: Lens' DescribeEventsResponse (Maybe [Event])
describeEventsResponse_events = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEventsResponse' {Maybe [Event]
events :: Maybe [Event]
$sel:events:DescribeEventsResponse' :: DescribeEventsResponse -> Maybe [Event]
events} -> Maybe [Event]
events) (\s :: DescribeEventsResponse
s@DescribeEventsResponse' {} Maybe [Event]
a -> DescribeEventsResponse
s {$sel:events:DescribeEventsResponse' :: Maybe [Event]
events = Maybe [Event]
a} :: DescribeEventsResponse) 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

-- | An optional pagination token provided by a previous request. If this
-- parameter is specified, the response includes only records beyond the
-- marker, up to the value specified by @MaxRecords@.
describeEventsResponse_marker :: Lens.Lens' DescribeEventsResponse (Prelude.Maybe Prelude.Text)
describeEventsResponse_marker :: Lens' DescribeEventsResponse (Maybe Text)
describeEventsResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEventsResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeEventsResponse' :: DescribeEventsResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeEventsResponse
s@DescribeEventsResponse' {} Maybe Text
a -> DescribeEventsResponse
s {$sel:marker:DescribeEventsResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeEventsResponse)

-- | The response's http status code.
describeEventsResponse_httpStatus :: Lens.Lens' DescribeEventsResponse Prelude.Int
describeEventsResponse_httpStatus :: Lens' DescribeEventsResponse Int
describeEventsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEventsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeEventsResponse' :: DescribeEventsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeEventsResponse
s@DescribeEventsResponse' {} Int
a -> DescribeEventsResponse
s {$sel:httpStatus:DescribeEventsResponse' :: Int
httpStatus = Int
a} :: DescribeEventsResponse)

instance Prelude.NFData DescribeEventsResponse where
  rnf :: DescribeEventsResponse -> ()
rnf DescribeEventsResponse' {Int
Maybe [Event]
Maybe Text
httpStatus :: Int
marker :: Maybe Text
events :: Maybe [Event]
$sel:httpStatus:DescribeEventsResponse' :: DescribeEventsResponse -> Int
$sel:marker:DescribeEventsResponse' :: DescribeEventsResponse -> Maybe Text
$sel:events:DescribeEventsResponse' :: DescribeEventsResponse -> Maybe [Event]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Event]
events
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus