{-# 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.ElasticBeanstalk.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)
--
-- Returns list of event descriptions matching criteria up to the last 6
-- weeks.
--
-- This action returns the most recent 1,000 events from the specified
-- @NextToken@.
--
-- This operation returns paginated results.
module Amazonka.ElasticBeanstalk.DescribeEvents
  ( -- * Creating a Request
    DescribeEvents (..),
    newDescribeEvents,

    -- * Request Lenses
    describeEvents_applicationName,
    describeEvents_endTime,
    describeEvents_environmentId,
    describeEvents_environmentName,
    describeEvents_maxRecords,
    describeEvents_nextToken,
    describeEvents_platformArn,
    describeEvents_requestId,
    describeEvents_severity,
    describeEvents_startTime,
    describeEvents_templateName,
    describeEvents_versionLabel,

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

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

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

-- | Request to retrieve a list of events for an environment.
--
-- /See:/ 'newDescribeEvents' smart constructor.
data DescribeEvents = DescribeEvents'
  { -- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
    -- to include only those associated with this application.
    DescribeEvents -> Maybe Text
applicationName :: Prelude.Maybe Prelude.Text,
    -- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
    -- to those that occur up to, but not including, the @EndTime@.
    DescribeEvents -> Maybe ISO8601
endTime :: Prelude.Maybe Data.ISO8601,
    -- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
    -- to those associated with this environment.
    DescribeEvents -> Maybe Text
environmentId :: Prelude.Maybe Prelude.Text,
    -- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
    -- to those associated with this environment.
    DescribeEvents -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text,
    -- | Specifies the maximum number of events that can be returned, beginning
    -- with the most recent event.
    DescribeEvents -> Maybe Natural
maxRecords :: Prelude.Maybe Prelude.Natural,
    -- | Pagination token. If specified, the events return the next batch of
    -- results.
    DescribeEvents -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The ARN of a custom platform version. If specified, AWS Elastic
    -- Beanstalk restricts the returned descriptions to those associated with
    -- this custom platform version.
    DescribeEvents -> Maybe Text
platformArn :: Prelude.Maybe Prelude.Text,
    -- | If specified, AWS Elastic Beanstalk restricts the described events to
    -- include only those associated with this request ID.
    DescribeEvents -> Maybe Text
requestId :: Prelude.Maybe Prelude.Text,
    -- | If specified, limits the events returned from this call to include only
    -- those with the specified severity or higher.
    DescribeEvents -> Maybe EventSeverity
severity :: Prelude.Maybe EventSeverity,
    -- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
    -- to those that occur on or after this time.
    DescribeEvents -> Maybe ISO8601
startTime :: Prelude.Maybe Data.ISO8601,
    -- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
    -- to those that are associated with this environment configuration.
    DescribeEvents -> Maybe Text
templateName :: Prelude.Maybe Prelude.Text,
    -- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
    -- to those associated with this application version.
    DescribeEvents -> Maybe Text
versionLabel :: Prelude.Maybe Prelude.Text
  }
  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:
--
-- 'applicationName', 'describeEvents_applicationName' - If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to include only those associated with this application.
--
-- 'endTime', 'describeEvents_endTime' - If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those that occur up to, but not including, the @EndTime@.
--
-- 'environmentId', 'describeEvents_environmentId' - If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those associated with this environment.
--
-- 'environmentName', 'describeEvents_environmentName' - If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those associated with this environment.
--
-- 'maxRecords', 'describeEvents_maxRecords' - Specifies the maximum number of events that can be returned, beginning
-- with the most recent event.
--
-- 'nextToken', 'describeEvents_nextToken' - Pagination token. If specified, the events return the next batch of
-- results.
--
-- 'platformArn', 'describeEvents_platformArn' - The ARN of a custom platform version. If specified, AWS Elastic
-- Beanstalk restricts the returned descriptions to those associated with
-- this custom platform version.
--
-- 'requestId', 'describeEvents_requestId' - If specified, AWS Elastic Beanstalk restricts the described events to
-- include only those associated with this request ID.
--
-- 'severity', 'describeEvents_severity' - If specified, limits the events returned from this call to include only
-- those with the specified severity or higher.
--
-- 'startTime', 'describeEvents_startTime' - If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those that occur on or after this time.
--
-- 'templateName', 'describeEvents_templateName' - If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those that are associated with this environment configuration.
--
-- 'versionLabel', 'describeEvents_versionLabel' - If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those associated with this application version.
newDescribeEvents ::
  DescribeEvents
newDescribeEvents :: DescribeEvents
newDescribeEvents =
  DescribeEvents'
    { $sel:applicationName:DescribeEvents' :: Maybe Text
applicationName = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:DescribeEvents' :: Maybe ISO8601
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:environmentId:DescribeEvents' :: Maybe Text
environmentId = forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:DescribeEvents' :: Maybe Text
environmentName = forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeEvents' :: Maybe Natural
maxRecords = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeEvents' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:platformArn:DescribeEvents' :: Maybe Text
platformArn = forall a. Maybe a
Prelude.Nothing,
      $sel:requestId:DescribeEvents' :: Maybe Text
requestId = forall a. Maybe a
Prelude.Nothing,
      $sel:severity:DescribeEvents' :: Maybe EventSeverity
severity = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:DescribeEvents' :: Maybe ISO8601
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:templateName:DescribeEvents' :: Maybe Text
templateName = forall a. Maybe a
Prelude.Nothing,
      $sel:versionLabel:DescribeEvents' :: Maybe Text
versionLabel = forall a. Maybe a
Prelude.Nothing
    }

-- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to include only those associated with this application.
describeEvents_applicationName :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_applicationName :: Lens' DescribeEvents (Maybe Text)
describeEvents_applicationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
applicationName :: Maybe Text
$sel:applicationName:DescribeEvents' :: DescribeEvents -> Maybe Text
applicationName} -> Maybe Text
applicationName) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:applicationName:DescribeEvents' :: Maybe Text
applicationName = Maybe Text
a} :: DescribeEvents)

-- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those that occur up to, but not including, the @EndTime@.
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 ISO8601
endTime :: Maybe ISO8601
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
endTime} -> Maybe ISO8601
endTime) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe ISO8601
a -> DescribeEvents
s {$sel:endTime:DescribeEvents' :: Maybe ISO8601
endTime = Maybe ISO8601
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

-- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those associated with this environment.
describeEvents_environmentId :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_environmentId :: Lens' DescribeEvents (Maybe Text)
describeEvents_environmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
environmentId :: Maybe Text
$sel:environmentId:DescribeEvents' :: DescribeEvents -> Maybe Text
environmentId} -> Maybe Text
environmentId) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:environmentId:DescribeEvents' :: Maybe Text
environmentId = Maybe Text
a} :: DescribeEvents)

-- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those associated with this environment.
describeEvents_environmentName :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_environmentName :: Lens' DescribeEvents (Maybe Text)
describeEvents_environmentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
environmentName :: Maybe Text
$sel:environmentName:DescribeEvents' :: DescribeEvents -> Maybe Text
environmentName} -> Maybe Text
environmentName) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:environmentName:DescribeEvents' :: Maybe Text
environmentName = Maybe Text
a} :: DescribeEvents)

-- | Specifies the maximum number of events that can be returned, beginning
-- with the most recent event.
describeEvents_maxRecords :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Natural)
describeEvents_maxRecords :: Lens' DescribeEvents (Maybe Natural)
describeEvents_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Natural
maxRecords :: Maybe Natural
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Natural
maxRecords} -> Maybe Natural
maxRecords) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Natural
a -> DescribeEvents
s {$sel:maxRecords:DescribeEvents' :: Maybe Natural
maxRecords = Maybe Natural
a} :: DescribeEvents)

-- | Pagination token. If specified, the events return the next batch of
-- results.
describeEvents_nextToken :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_nextToken :: Lens' DescribeEvents (Maybe Text)
describeEvents_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeEvents' :: DescribeEvents -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:nextToken:DescribeEvents' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeEvents)

-- | The ARN of a custom platform version. If specified, AWS Elastic
-- Beanstalk restricts the returned descriptions to those associated with
-- this custom platform version.
describeEvents_platformArn :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_platformArn :: Lens' DescribeEvents (Maybe Text)
describeEvents_platformArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
platformArn :: Maybe Text
$sel:platformArn:DescribeEvents' :: DescribeEvents -> Maybe Text
platformArn} -> Maybe Text
platformArn) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:platformArn:DescribeEvents' :: Maybe Text
platformArn = Maybe Text
a} :: DescribeEvents)

-- | If specified, AWS Elastic Beanstalk restricts the described events to
-- include only those associated with this request ID.
describeEvents_requestId :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_requestId :: Lens' DescribeEvents (Maybe Text)
describeEvents_requestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
requestId :: Maybe Text
$sel:requestId:DescribeEvents' :: DescribeEvents -> Maybe Text
requestId} -> Maybe Text
requestId) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:requestId:DescribeEvents' :: Maybe Text
requestId = Maybe Text
a} :: DescribeEvents)

-- | If specified, limits the events returned from this call to include only
-- those with the specified severity or higher.
describeEvents_severity :: Lens.Lens' DescribeEvents (Prelude.Maybe EventSeverity)
describeEvents_severity :: Lens' DescribeEvents (Maybe EventSeverity)
describeEvents_severity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe EventSeverity
severity :: Maybe EventSeverity
$sel:severity:DescribeEvents' :: DescribeEvents -> Maybe EventSeverity
severity} -> Maybe EventSeverity
severity) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe EventSeverity
a -> DescribeEvents
s {$sel:severity:DescribeEvents' :: Maybe EventSeverity
severity = Maybe EventSeverity
a} :: DescribeEvents)

-- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those that occur on or after this time.
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 ISO8601
startTime :: Maybe ISO8601
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
startTime} -> Maybe ISO8601
startTime) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe ISO8601
a -> DescribeEvents
s {$sel:startTime:DescribeEvents' :: Maybe ISO8601
startTime = Maybe ISO8601
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

-- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those that are associated with this environment configuration.
describeEvents_templateName :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_templateName :: Lens' DescribeEvents (Maybe Text)
describeEvents_templateName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
templateName :: Maybe Text
$sel:templateName:DescribeEvents' :: DescribeEvents -> Maybe Text
templateName} -> Maybe Text
templateName) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:templateName:DescribeEvents' :: Maybe Text
templateName = Maybe Text
a} :: DescribeEvents)

-- | If specified, AWS Elastic Beanstalk restricts the returned descriptions
-- to those associated with this application version.
describeEvents_versionLabel :: Lens.Lens' DescribeEvents (Prelude.Maybe Prelude.Text)
describeEvents_versionLabel :: Lens' DescribeEvents (Maybe Text)
describeEvents_versionLabel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEvents' {Maybe Text
versionLabel :: Maybe Text
$sel:versionLabel:DescribeEvents' :: DescribeEvents -> Maybe Text
versionLabel} -> Maybe Text
versionLabel) (\s :: DescribeEvents
s@DescribeEvents' {} Maybe Text
a -> DescribeEvents
s {$sel:versionLabel:DescribeEvents' :: Maybe Text
versionLabel = Maybe Text
a} :: DescribeEvents)

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_nextToken
            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 [EventDescription])
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_nextToken
          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_nextToken
          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 => Service -> a -> Request a
Request.postQuery (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 =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeEventsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [EventDescription]
-> Maybe Text -> Int -> DescribeEventsResponse
DescribeEventsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Events"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NextToken")
            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 Natural
Maybe Text
Maybe ISO8601
Maybe EventSeverity
versionLabel :: Maybe Text
templateName :: Maybe Text
startTime :: Maybe ISO8601
severity :: Maybe EventSeverity
requestId :: Maybe Text
platformArn :: Maybe Text
nextToken :: Maybe Text
maxRecords :: Maybe Natural
environmentName :: Maybe Text
environmentId :: Maybe Text
endTime :: Maybe ISO8601
applicationName :: Maybe Text
$sel:versionLabel:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:templateName:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
$sel:severity:DescribeEvents' :: DescribeEvents -> Maybe EventSeverity
$sel:requestId:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:platformArn:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:nextToken:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Natural
$sel:environmentName:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:environmentId:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
$sel:applicationName:DescribeEvents' :: DescribeEvents -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
applicationName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
environmentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
environmentName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxRecords
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
platformArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
requestId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventSeverity
severity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
templateName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
versionLabel

instance Prelude.NFData DescribeEvents where
  rnf :: DescribeEvents -> ()
rnf DescribeEvents' {Maybe Natural
Maybe Text
Maybe ISO8601
Maybe EventSeverity
versionLabel :: Maybe Text
templateName :: Maybe Text
startTime :: Maybe ISO8601
severity :: Maybe EventSeverity
requestId :: Maybe Text
platformArn :: Maybe Text
nextToken :: Maybe Text
maxRecords :: Maybe Natural
environmentName :: Maybe Text
environmentId :: Maybe Text
endTime :: Maybe ISO8601
applicationName :: Maybe Text
$sel:versionLabel:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:templateName:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
$sel:severity:DescribeEvents' :: DescribeEvents -> Maybe EventSeverity
$sel:requestId:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:platformArn:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:nextToken:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Natural
$sel:environmentName:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:environmentId:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
$sel:applicationName:DescribeEvents' :: DescribeEvents -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
applicationName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
environmentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
environmentName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platformArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
requestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventSeverity
severity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
templateName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
versionLabel

instance Data.ToHeaders DescribeEvents where
  toHeaders :: DescribeEvents -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

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 DescribeEvents' {Maybe Natural
Maybe Text
Maybe ISO8601
Maybe EventSeverity
versionLabel :: Maybe Text
templateName :: Maybe Text
startTime :: Maybe ISO8601
severity :: Maybe EventSeverity
requestId :: Maybe Text
platformArn :: Maybe Text
nextToken :: Maybe Text
maxRecords :: Maybe Natural
environmentName :: Maybe Text
environmentId :: Maybe Text
endTime :: Maybe ISO8601
applicationName :: Maybe Text
$sel:versionLabel:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:templateName:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:startTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
$sel:severity:DescribeEvents' :: DescribeEvents -> Maybe EventSeverity
$sel:requestId:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:platformArn:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:nextToken:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:maxRecords:DescribeEvents' :: DescribeEvents -> Maybe Natural
$sel:environmentName:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:environmentId:DescribeEvents' :: DescribeEvents -> Maybe Text
$sel:endTime:DescribeEvents' :: DescribeEvents -> Maybe ISO8601
$sel:applicationName:DescribeEvents' :: DescribeEvents -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeEvents" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-12-01" :: Prelude.ByteString),
        ByteString
"ApplicationName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
applicationName,
        ByteString
"EndTime" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
endTime,
        ByteString
"EnvironmentId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
environmentId,
        ByteString
"EnvironmentName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
environmentName,
        ByteString
"MaxRecords" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxRecords,
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"PlatformArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
platformArn,
        ByteString
"RequestId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
requestId,
        ByteString
"Severity" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe EventSeverity
severity,
        ByteString
"StartTime" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
startTime,
        ByteString
"TemplateName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
templateName,
        ByteString
"VersionLabel" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
versionLabel
      ]

-- | Result message wrapping a list of event descriptions.
--
-- /See:/ 'newDescribeEventsResponse' smart constructor.
data DescribeEventsResponse = DescribeEventsResponse'
  { -- | A list of EventDescription.
    DescribeEventsResponse -> Maybe [EventDescription]
events :: Prelude.Maybe [EventDescription],
    -- | If returned, this indicates that there are more results to obtain. Use
    -- this token in the next DescribeEvents call to get the next batch of
    -- events.
    DescribeEventsResponse -> Maybe Text
nextToken :: 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' - A list of EventDescription.
--
-- 'nextToken', 'describeEventsResponse_nextToken' - If returned, this indicates that there are more results to obtain. Use
-- this token in the next DescribeEvents call to get the next batch of
-- events.
--
-- '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 [EventDescription]
events = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeEventsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeEventsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | If returned, this indicates that there are more results to obtain. Use
-- this token in the next DescribeEvents call to get the next batch of
-- events.
describeEventsResponse_nextToken :: Lens.Lens' DescribeEventsResponse (Prelude.Maybe Prelude.Text)
describeEventsResponse_nextToken :: Lens' DescribeEventsResponse (Maybe Text)
describeEventsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEventsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeEventsResponse' :: DescribeEventsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeEventsResponse
s@DescribeEventsResponse' {} Maybe Text
a -> DescribeEventsResponse
s {$sel:nextToken:DescribeEventsResponse' :: Maybe Text
nextToken = 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 [EventDescription]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
events :: Maybe [EventDescription]
$sel:httpStatus:DescribeEventsResponse' :: DescribeEventsResponse -> Int
$sel:nextToken:DescribeEventsResponse' :: DescribeEventsResponse -> Maybe Text
$sel:events:DescribeEventsResponse' :: DescribeEventsResponse -> Maybe [EventDescription]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [EventDescription]
events
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus