{-# 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.CodeDeploy.ListApplicationRevisions
-- 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 information about revisions for an application.
--
-- This operation returns paginated results.
module Amazonka.CodeDeploy.ListApplicationRevisions
  ( -- * Creating a Request
    ListApplicationRevisions (..),
    newListApplicationRevisions,

    -- * Request Lenses
    listApplicationRevisions_deployed,
    listApplicationRevisions_nextToken,
    listApplicationRevisions_s3Bucket,
    listApplicationRevisions_s3KeyPrefix,
    listApplicationRevisions_sortBy,
    listApplicationRevisions_sortOrder,
    listApplicationRevisions_applicationName,

    -- * Destructuring the Response
    ListApplicationRevisionsResponse (..),
    newListApplicationRevisionsResponse,

    -- * Response Lenses
    listApplicationRevisionsResponse_nextToken,
    listApplicationRevisionsResponse_revisions,
    listApplicationRevisionsResponse_httpStatus,
  )
where

import Amazonka.CodeDeploy.Types
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
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Represents the input of a @ListApplicationRevisions@ operation.
--
-- /See:/ 'newListApplicationRevisions' smart constructor.
data ListApplicationRevisions = ListApplicationRevisions'
  { -- | Whether to list revisions based on whether the revision is the target
    -- revision of a deployment group:
    --
    -- -   @include@: List revisions that are target revisions of a deployment
    --     group.
    --
    -- -   @exclude@: Do not list revisions that are target revisions of a
    --     deployment group.
    --
    -- -   @ignore@: List all revisions.
    ListApplicationRevisions -> Maybe ListStateFilterAction
deployed :: Prelude.Maybe ListStateFilterAction,
    -- | An identifier returned from the previous @ListApplicationRevisions@
    -- call. It can be used to return the next set of applications in the list.
    ListApplicationRevisions -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | An Amazon S3 bucket name to limit the search for revisions.
    --
    -- If set to null, all of the user\'s buckets are searched.
    ListApplicationRevisions -> Maybe Text
s3Bucket :: Prelude.Maybe Prelude.Text,
    -- | A key prefix for the set of Amazon S3 objects to limit the search for
    -- revisions.
    ListApplicationRevisions -> Maybe Text
s3KeyPrefix :: Prelude.Maybe Prelude.Text,
    -- | The column name to use to sort the list results:
    --
    -- -   @registerTime@: Sort by the time the revisions were registered with
    --     CodeDeploy.
    --
    -- -   @firstUsedTime@: Sort by the time the revisions were first used in a
    --     deployment.
    --
    -- -   @lastUsedTime@: Sort by the time the revisions were last used in a
    --     deployment.
    --
    -- If not specified or set to null, the results are returned in an
    -- arbitrary order.
    ListApplicationRevisions -> Maybe ApplicationRevisionSortBy
sortBy :: Prelude.Maybe ApplicationRevisionSortBy,
    -- | The order in which to sort the list results:
    --
    -- -   @ascending@: ascending order.
    --
    -- -   @descending@: descending order.
    --
    -- If not specified, the results are sorted in ascending order.
    --
    -- If set to null, the results are sorted in an arbitrary order.
    ListApplicationRevisions -> Maybe SortOrder
sortOrder :: Prelude.Maybe SortOrder,
    -- | The name of an CodeDeploy application associated with the IAM user or
    -- Amazon Web Services account.
    ListApplicationRevisions -> Text
applicationName :: Prelude.Text
  }
  deriving (ListApplicationRevisions -> ListApplicationRevisions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListApplicationRevisions -> ListApplicationRevisions -> Bool
$c/= :: ListApplicationRevisions -> ListApplicationRevisions -> Bool
== :: ListApplicationRevisions -> ListApplicationRevisions -> Bool
$c== :: ListApplicationRevisions -> ListApplicationRevisions -> Bool
Prelude.Eq, ReadPrec [ListApplicationRevisions]
ReadPrec ListApplicationRevisions
Int -> ReadS ListApplicationRevisions
ReadS [ListApplicationRevisions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListApplicationRevisions]
$creadListPrec :: ReadPrec [ListApplicationRevisions]
readPrec :: ReadPrec ListApplicationRevisions
$creadPrec :: ReadPrec ListApplicationRevisions
readList :: ReadS [ListApplicationRevisions]
$creadList :: ReadS [ListApplicationRevisions]
readsPrec :: Int -> ReadS ListApplicationRevisions
$creadsPrec :: Int -> ReadS ListApplicationRevisions
Prelude.Read, Int -> ListApplicationRevisions -> ShowS
[ListApplicationRevisions] -> ShowS
ListApplicationRevisions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListApplicationRevisions] -> ShowS
$cshowList :: [ListApplicationRevisions] -> ShowS
show :: ListApplicationRevisions -> String
$cshow :: ListApplicationRevisions -> String
showsPrec :: Int -> ListApplicationRevisions -> ShowS
$cshowsPrec :: Int -> ListApplicationRevisions -> ShowS
Prelude.Show, forall x.
Rep ListApplicationRevisions x -> ListApplicationRevisions
forall x.
ListApplicationRevisions -> Rep ListApplicationRevisions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListApplicationRevisions x -> ListApplicationRevisions
$cfrom :: forall x.
ListApplicationRevisions -> Rep ListApplicationRevisions x
Prelude.Generic)

-- |
-- Create a value of 'ListApplicationRevisions' 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:
--
-- 'deployed', 'listApplicationRevisions_deployed' - Whether to list revisions based on whether the revision is the target
-- revision of a deployment group:
--
-- -   @include@: List revisions that are target revisions of a deployment
--     group.
--
-- -   @exclude@: Do not list revisions that are target revisions of a
--     deployment group.
--
-- -   @ignore@: List all revisions.
--
-- 'nextToken', 'listApplicationRevisions_nextToken' - An identifier returned from the previous @ListApplicationRevisions@
-- call. It can be used to return the next set of applications in the list.
--
-- 's3Bucket', 'listApplicationRevisions_s3Bucket' - An Amazon S3 bucket name to limit the search for revisions.
--
-- If set to null, all of the user\'s buckets are searched.
--
-- 's3KeyPrefix', 'listApplicationRevisions_s3KeyPrefix' - A key prefix for the set of Amazon S3 objects to limit the search for
-- revisions.
--
-- 'sortBy', 'listApplicationRevisions_sortBy' - The column name to use to sort the list results:
--
-- -   @registerTime@: Sort by the time the revisions were registered with
--     CodeDeploy.
--
-- -   @firstUsedTime@: Sort by the time the revisions were first used in a
--     deployment.
--
-- -   @lastUsedTime@: Sort by the time the revisions were last used in a
--     deployment.
--
-- If not specified or set to null, the results are returned in an
-- arbitrary order.
--
-- 'sortOrder', 'listApplicationRevisions_sortOrder' - The order in which to sort the list results:
--
-- -   @ascending@: ascending order.
--
-- -   @descending@: descending order.
--
-- If not specified, the results are sorted in ascending order.
--
-- If set to null, the results are sorted in an arbitrary order.
--
-- 'applicationName', 'listApplicationRevisions_applicationName' - The name of an CodeDeploy application associated with the IAM user or
-- Amazon Web Services account.
newListApplicationRevisions ::
  -- | 'applicationName'
  Prelude.Text ->
  ListApplicationRevisions
newListApplicationRevisions :: Text -> ListApplicationRevisions
newListApplicationRevisions Text
pApplicationName_ =
  ListApplicationRevisions'
    { $sel:deployed:ListApplicationRevisions' :: Maybe ListStateFilterAction
deployed =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListApplicationRevisions' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:s3Bucket:ListApplicationRevisions' :: Maybe Text
s3Bucket = forall a. Maybe a
Prelude.Nothing,
      $sel:s3KeyPrefix:ListApplicationRevisions' :: Maybe Text
s3KeyPrefix = forall a. Maybe a
Prelude.Nothing,
      $sel:sortBy:ListApplicationRevisions' :: Maybe ApplicationRevisionSortBy
sortBy = forall a. Maybe a
Prelude.Nothing,
      $sel:sortOrder:ListApplicationRevisions' :: Maybe SortOrder
sortOrder = forall a. Maybe a
Prelude.Nothing,
      $sel:applicationName:ListApplicationRevisions' :: Text
applicationName = Text
pApplicationName_
    }

-- | Whether to list revisions based on whether the revision is the target
-- revision of a deployment group:
--
-- -   @include@: List revisions that are target revisions of a deployment
--     group.
--
-- -   @exclude@: Do not list revisions that are target revisions of a
--     deployment group.
--
-- -   @ignore@: List all revisions.
listApplicationRevisions_deployed :: Lens.Lens' ListApplicationRevisions (Prelude.Maybe ListStateFilterAction)
listApplicationRevisions_deployed :: Lens' ListApplicationRevisions (Maybe ListStateFilterAction)
listApplicationRevisions_deployed = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisions' {Maybe ListStateFilterAction
deployed :: Maybe ListStateFilterAction
$sel:deployed:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ListStateFilterAction
deployed} -> Maybe ListStateFilterAction
deployed) (\s :: ListApplicationRevisions
s@ListApplicationRevisions' {} Maybe ListStateFilterAction
a -> ListApplicationRevisions
s {$sel:deployed:ListApplicationRevisions' :: Maybe ListStateFilterAction
deployed = Maybe ListStateFilterAction
a} :: ListApplicationRevisions)

-- | An identifier returned from the previous @ListApplicationRevisions@
-- call. It can be used to return the next set of applications in the list.
listApplicationRevisions_nextToken :: Lens.Lens' ListApplicationRevisions (Prelude.Maybe Prelude.Text)
listApplicationRevisions_nextToken :: Lens' ListApplicationRevisions (Maybe Text)
listApplicationRevisions_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisions' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListApplicationRevisions
s@ListApplicationRevisions' {} Maybe Text
a -> ListApplicationRevisions
s {$sel:nextToken:ListApplicationRevisions' :: Maybe Text
nextToken = Maybe Text
a} :: ListApplicationRevisions)

-- | An Amazon S3 bucket name to limit the search for revisions.
--
-- If set to null, all of the user\'s buckets are searched.
listApplicationRevisions_s3Bucket :: Lens.Lens' ListApplicationRevisions (Prelude.Maybe Prelude.Text)
listApplicationRevisions_s3Bucket :: Lens' ListApplicationRevisions (Maybe Text)
listApplicationRevisions_s3Bucket = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisions' {Maybe Text
s3Bucket :: Maybe Text
$sel:s3Bucket:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
s3Bucket} -> Maybe Text
s3Bucket) (\s :: ListApplicationRevisions
s@ListApplicationRevisions' {} Maybe Text
a -> ListApplicationRevisions
s {$sel:s3Bucket:ListApplicationRevisions' :: Maybe Text
s3Bucket = Maybe Text
a} :: ListApplicationRevisions)

-- | A key prefix for the set of Amazon S3 objects to limit the search for
-- revisions.
listApplicationRevisions_s3KeyPrefix :: Lens.Lens' ListApplicationRevisions (Prelude.Maybe Prelude.Text)
listApplicationRevisions_s3KeyPrefix :: Lens' ListApplicationRevisions (Maybe Text)
listApplicationRevisions_s3KeyPrefix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisions' {Maybe Text
s3KeyPrefix :: Maybe Text
$sel:s3KeyPrefix:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
s3KeyPrefix} -> Maybe Text
s3KeyPrefix) (\s :: ListApplicationRevisions
s@ListApplicationRevisions' {} Maybe Text
a -> ListApplicationRevisions
s {$sel:s3KeyPrefix:ListApplicationRevisions' :: Maybe Text
s3KeyPrefix = Maybe Text
a} :: ListApplicationRevisions)

-- | The column name to use to sort the list results:
--
-- -   @registerTime@: Sort by the time the revisions were registered with
--     CodeDeploy.
--
-- -   @firstUsedTime@: Sort by the time the revisions were first used in a
--     deployment.
--
-- -   @lastUsedTime@: Sort by the time the revisions were last used in a
--     deployment.
--
-- If not specified or set to null, the results are returned in an
-- arbitrary order.
listApplicationRevisions_sortBy :: Lens.Lens' ListApplicationRevisions (Prelude.Maybe ApplicationRevisionSortBy)
listApplicationRevisions_sortBy :: Lens' ListApplicationRevisions (Maybe ApplicationRevisionSortBy)
listApplicationRevisions_sortBy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisions' {Maybe ApplicationRevisionSortBy
sortBy :: Maybe ApplicationRevisionSortBy
$sel:sortBy:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ApplicationRevisionSortBy
sortBy} -> Maybe ApplicationRevisionSortBy
sortBy) (\s :: ListApplicationRevisions
s@ListApplicationRevisions' {} Maybe ApplicationRevisionSortBy
a -> ListApplicationRevisions
s {$sel:sortBy:ListApplicationRevisions' :: Maybe ApplicationRevisionSortBy
sortBy = Maybe ApplicationRevisionSortBy
a} :: ListApplicationRevisions)

-- | The order in which to sort the list results:
--
-- -   @ascending@: ascending order.
--
-- -   @descending@: descending order.
--
-- If not specified, the results are sorted in ascending order.
--
-- If set to null, the results are sorted in an arbitrary order.
listApplicationRevisions_sortOrder :: Lens.Lens' ListApplicationRevisions (Prelude.Maybe SortOrder)
listApplicationRevisions_sortOrder :: Lens' ListApplicationRevisions (Maybe SortOrder)
listApplicationRevisions_sortOrder = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisions' {Maybe SortOrder
sortOrder :: Maybe SortOrder
$sel:sortOrder:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe SortOrder
sortOrder} -> Maybe SortOrder
sortOrder) (\s :: ListApplicationRevisions
s@ListApplicationRevisions' {} Maybe SortOrder
a -> ListApplicationRevisions
s {$sel:sortOrder:ListApplicationRevisions' :: Maybe SortOrder
sortOrder = Maybe SortOrder
a} :: ListApplicationRevisions)

-- | The name of an CodeDeploy application associated with the IAM user or
-- Amazon Web Services account.
listApplicationRevisions_applicationName :: Lens.Lens' ListApplicationRevisions Prelude.Text
listApplicationRevisions_applicationName :: Lens' ListApplicationRevisions Text
listApplicationRevisions_applicationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisions' {Text
applicationName :: Text
$sel:applicationName:ListApplicationRevisions' :: ListApplicationRevisions -> Text
applicationName} -> Text
applicationName) (\s :: ListApplicationRevisions
s@ListApplicationRevisions' {} Text
a -> ListApplicationRevisions
s {$sel:applicationName:ListApplicationRevisions' :: Text
applicationName = Text
a} :: ListApplicationRevisions)

instance Core.AWSPager ListApplicationRevisions where
  page :: ListApplicationRevisions
-> AWSResponse ListApplicationRevisions
-> Maybe ListApplicationRevisions
page ListApplicationRevisions
rq AWSResponse ListApplicationRevisions
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListApplicationRevisions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListApplicationRevisionsResponse (Maybe Text)
listApplicationRevisionsResponse_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 ListApplicationRevisions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListApplicationRevisionsResponse (Maybe [RevisionLocation])
listApplicationRevisionsResponse_revisions
            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.$ ListApplicationRevisions
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListApplicationRevisions (Maybe Text)
listApplicationRevisions_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListApplicationRevisions
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListApplicationRevisionsResponse (Maybe Text)
listApplicationRevisionsResponse_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 ListApplicationRevisions where
  type
    AWSResponse ListApplicationRevisions =
      ListApplicationRevisionsResponse
  request :: (Service -> Service)
-> ListApplicationRevisions -> Request ListApplicationRevisions
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 ListApplicationRevisions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListApplicationRevisions)))
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 Text
-> Maybe [RevisionLocation]
-> Int
-> ListApplicationRevisionsResponse
ListApplicationRevisionsResponse'
            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
"nextToken")
            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
"revisions" 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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ListApplicationRevisions where
  hashWithSalt :: Int -> ListApplicationRevisions -> Int
hashWithSalt Int
_salt ListApplicationRevisions' {Maybe Text
Maybe ApplicationRevisionSortBy
Maybe ListStateFilterAction
Maybe SortOrder
Text
applicationName :: Text
sortOrder :: Maybe SortOrder
sortBy :: Maybe ApplicationRevisionSortBy
s3KeyPrefix :: Maybe Text
s3Bucket :: Maybe Text
nextToken :: Maybe Text
deployed :: Maybe ListStateFilterAction
$sel:applicationName:ListApplicationRevisions' :: ListApplicationRevisions -> Text
$sel:sortOrder:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe SortOrder
$sel:sortBy:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ApplicationRevisionSortBy
$sel:s3KeyPrefix:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:s3Bucket:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:nextToken:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:deployed:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ListStateFilterAction
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ListStateFilterAction
deployed
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
s3Bucket
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
s3KeyPrefix
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ApplicationRevisionSortBy
sortBy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SortOrder
sortOrder
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
applicationName

instance Prelude.NFData ListApplicationRevisions where
  rnf :: ListApplicationRevisions -> ()
rnf ListApplicationRevisions' {Maybe Text
Maybe ApplicationRevisionSortBy
Maybe ListStateFilterAction
Maybe SortOrder
Text
applicationName :: Text
sortOrder :: Maybe SortOrder
sortBy :: Maybe ApplicationRevisionSortBy
s3KeyPrefix :: Maybe Text
s3Bucket :: Maybe Text
nextToken :: Maybe Text
deployed :: Maybe ListStateFilterAction
$sel:applicationName:ListApplicationRevisions' :: ListApplicationRevisions -> Text
$sel:sortOrder:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe SortOrder
$sel:sortBy:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ApplicationRevisionSortBy
$sel:s3KeyPrefix:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:s3Bucket:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:nextToken:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:deployed:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ListStateFilterAction
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ListStateFilterAction
deployed
      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
s3Bucket
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
s3KeyPrefix
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ApplicationRevisionSortBy
sortBy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SortOrder
sortOrder
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
applicationName

instance Data.ToHeaders ListApplicationRevisions where
  toHeaders :: ListApplicationRevisions -> 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
"CodeDeploy_20141006.ListApplicationRevisions" ::
                          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 ListApplicationRevisions where
  toJSON :: ListApplicationRevisions -> Value
toJSON ListApplicationRevisions' {Maybe Text
Maybe ApplicationRevisionSortBy
Maybe ListStateFilterAction
Maybe SortOrder
Text
applicationName :: Text
sortOrder :: Maybe SortOrder
sortBy :: Maybe ApplicationRevisionSortBy
s3KeyPrefix :: Maybe Text
s3Bucket :: Maybe Text
nextToken :: Maybe Text
deployed :: Maybe ListStateFilterAction
$sel:applicationName:ListApplicationRevisions' :: ListApplicationRevisions -> Text
$sel:sortOrder:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe SortOrder
$sel:sortBy:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ApplicationRevisionSortBy
$sel:s3KeyPrefix:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:s3Bucket:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:nextToken:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe Text
$sel:deployed:ListApplicationRevisions' :: ListApplicationRevisions -> Maybe ListStateFilterAction
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"deployed" 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 ListStateFilterAction
deployed,
            (Key
"nextToken" 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
nextToken,
            (Key
"s3Bucket" 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
s3Bucket,
            (Key
"s3KeyPrefix" 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
s3KeyPrefix,
            (Key
"sortBy" 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 ApplicationRevisionSortBy
sortBy,
            (Key
"sortOrder" 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 SortOrder
sortOrder,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"applicationName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
applicationName)
          ]
      )

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

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

-- | Represents the output of a @ListApplicationRevisions@ operation.
--
-- /See:/ 'newListApplicationRevisionsResponse' smart constructor.
data ListApplicationRevisionsResponse = ListApplicationRevisionsResponse'
  { -- | If a large amount of information is returned, an identifier is also
    -- returned. It can be used in a subsequent list application revisions call
    -- to return the next set of application revisions in the list.
    ListApplicationRevisionsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of locations that contain the matching revisions.
    ListApplicationRevisionsResponse -> Maybe [RevisionLocation]
revisions :: Prelude.Maybe [RevisionLocation],
    -- | The response's http status code.
    ListApplicationRevisionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListApplicationRevisionsResponse
-> ListApplicationRevisionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListApplicationRevisionsResponse
-> ListApplicationRevisionsResponse -> Bool
$c/= :: ListApplicationRevisionsResponse
-> ListApplicationRevisionsResponse -> Bool
== :: ListApplicationRevisionsResponse
-> ListApplicationRevisionsResponse -> Bool
$c== :: ListApplicationRevisionsResponse
-> ListApplicationRevisionsResponse -> Bool
Prelude.Eq, ReadPrec [ListApplicationRevisionsResponse]
ReadPrec ListApplicationRevisionsResponse
Int -> ReadS ListApplicationRevisionsResponse
ReadS [ListApplicationRevisionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListApplicationRevisionsResponse]
$creadListPrec :: ReadPrec [ListApplicationRevisionsResponse]
readPrec :: ReadPrec ListApplicationRevisionsResponse
$creadPrec :: ReadPrec ListApplicationRevisionsResponse
readList :: ReadS [ListApplicationRevisionsResponse]
$creadList :: ReadS [ListApplicationRevisionsResponse]
readsPrec :: Int -> ReadS ListApplicationRevisionsResponse
$creadsPrec :: Int -> ReadS ListApplicationRevisionsResponse
Prelude.Read, Int -> ListApplicationRevisionsResponse -> ShowS
[ListApplicationRevisionsResponse] -> ShowS
ListApplicationRevisionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListApplicationRevisionsResponse] -> ShowS
$cshowList :: [ListApplicationRevisionsResponse] -> ShowS
show :: ListApplicationRevisionsResponse -> String
$cshow :: ListApplicationRevisionsResponse -> String
showsPrec :: Int -> ListApplicationRevisionsResponse -> ShowS
$cshowsPrec :: Int -> ListApplicationRevisionsResponse -> ShowS
Prelude.Show, forall x.
Rep ListApplicationRevisionsResponse x
-> ListApplicationRevisionsResponse
forall x.
ListApplicationRevisionsResponse
-> Rep ListApplicationRevisionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListApplicationRevisionsResponse x
-> ListApplicationRevisionsResponse
$cfrom :: forall x.
ListApplicationRevisionsResponse
-> Rep ListApplicationRevisionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListApplicationRevisionsResponse' 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:
--
-- 'nextToken', 'listApplicationRevisionsResponse_nextToken' - If a large amount of information is returned, an identifier is also
-- returned. It can be used in a subsequent list application revisions call
-- to return the next set of application revisions in the list.
--
-- 'revisions', 'listApplicationRevisionsResponse_revisions' - A list of locations that contain the matching revisions.
--
-- 'httpStatus', 'listApplicationRevisionsResponse_httpStatus' - The response's http status code.
newListApplicationRevisionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListApplicationRevisionsResponse
newListApplicationRevisionsResponse :: Int -> ListApplicationRevisionsResponse
newListApplicationRevisionsResponse Int
pHttpStatus_ =
  ListApplicationRevisionsResponse'
    { $sel:nextToken:ListApplicationRevisionsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:revisions:ListApplicationRevisionsResponse' :: Maybe [RevisionLocation]
revisions = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListApplicationRevisionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | If a large amount of information is returned, an identifier is also
-- returned. It can be used in a subsequent list application revisions call
-- to return the next set of application revisions in the list.
listApplicationRevisionsResponse_nextToken :: Lens.Lens' ListApplicationRevisionsResponse (Prelude.Maybe Prelude.Text)
listApplicationRevisionsResponse_nextToken :: Lens' ListApplicationRevisionsResponse (Maybe Text)
listApplicationRevisionsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisionsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListApplicationRevisionsResponse' :: ListApplicationRevisionsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListApplicationRevisionsResponse
s@ListApplicationRevisionsResponse' {} Maybe Text
a -> ListApplicationRevisionsResponse
s {$sel:nextToken:ListApplicationRevisionsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListApplicationRevisionsResponse)

-- | A list of locations that contain the matching revisions.
listApplicationRevisionsResponse_revisions :: Lens.Lens' ListApplicationRevisionsResponse (Prelude.Maybe [RevisionLocation])
listApplicationRevisionsResponse_revisions :: Lens' ListApplicationRevisionsResponse (Maybe [RevisionLocation])
listApplicationRevisionsResponse_revisions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisionsResponse' {Maybe [RevisionLocation]
revisions :: Maybe [RevisionLocation]
$sel:revisions:ListApplicationRevisionsResponse' :: ListApplicationRevisionsResponse -> Maybe [RevisionLocation]
revisions} -> Maybe [RevisionLocation]
revisions) (\s :: ListApplicationRevisionsResponse
s@ListApplicationRevisionsResponse' {} Maybe [RevisionLocation]
a -> ListApplicationRevisionsResponse
s {$sel:revisions:ListApplicationRevisionsResponse' :: Maybe [RevisionLocation]
revisions = Maybe [RevisionLocation]
a} :: ListApplicationRevisionsResponse) 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 response's http status code.
listApplicationRevisionsResponse_httpStatus :: Lens.Lens' ListApplicationRevisionsResponse Prelude.Int
listApplicationRevisionsResponse_httpStatus :: Lens' ListApplicationRevisionsResponse Int
listApplicationRevisionsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListApplicationRevisionsResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListApplicationRevisionsResponse' :: ListApplicationRevisionsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListApplicationRevisionsResponse
s@ListApplicationRevisionsResponse' {} Int
a -> ListApplicationRevisionsResponse
s {$sel:httpStatus:ListApplicationRevisionsResponse' :: Int
httpStatus = Int
a} :: ListApplicationRevisionsResponse)

instance
  Prelude.NFData
    ListApplicationRevisionsResponse
  where
  rnf :: ListApplicationRevisionsResponse -> ()
rnf ListApplicationRevisionsResponse' {Int
Maybe [RevisionLocation]
Maybe Text
httpStatus :: Int
revisions :: Maybe [RevisionLocation]
nextToken :: Maybe Text
$sel:httpStatus:ListApplicationRevisionsResponse' :: ListApplicationRevisionsResponse -> Int
$sel:revisions:ListApplicationRevisionsResponse' :: ListApplicationRevisionsResponse -> Maybe [RevisionLocation]
$sel:nextToken:ListApplicationRevisionsResponse' :: ListApplicationRevisionsResponse -> Maybe Text
..} =
    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 [RevisionLocation]
revisions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus