{-# 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.CodeCommit.GetDifferences
-- 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 information about the differences in a valid commit specifier
-- (such as a branch, tag, HEAD, commit ID, or other fully qualified
-- reference). Results can be limited to a specified path.
--
-- This operation returns paginated results.
module Amazonka.CodeCommit.GetDifferences
  ( -- * Creating a Request
    GetDifferences (..),
    newGetDifferences,

    -- * Request Lenses
    getDifferences_maxResults,
    getDifferences_nextToken,
    getDifferences_afterPath,
    getDifferences_beforeCommitSpecifier,
    getDifferences_beforePath,
    getDifferences_repositoryName,
    getDifferences_afterCommitSpecifier,

    -- * Destructuring the Response
    GetDifferencesResponse (..),
    newGetDifferencesResponse,

    -- * Response Lenses
    getDifferencesResponse_nextToken,
    getDifferencesResponse_differences,
    getDifferencesResponse_httpStatus,
  )
where

import Amazonka.CodeCommit.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

-- | /See:/ 'newGetDifferences' smart constructor.
data GetDifferences = GetDifferences'
  { -- | A non-zero, non-negative integer used to limit the number of returned
    -- results.
    GetDifferences -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | An enumeration token that, when provided in a request, returns the next
    -- batch of the results.
    GetDifferences -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The file path in which to check differences. Limits the results to this
    -- path. Can also be used to specify the changed name of a directory or
    -- folder, if it has changed. If not specified, differences are shown for
    -- all paths.
    GetDifferences -> Maybe Text
afterPath :: Prelude.Maybe Prelude.Text,
    -- | The branch, tag, HEAD, or other fully qualified reference used to
    -- identify a commit (for example, the full commit ID). Optional. If not
    -- specified, all changes before the @afterCommitSpecifier@ value are
    -- shown. If you do not use @beforeCommitSpecifier@ in your request,
    -- consider limiting the results with @maxResults@.
    GetDifferences -> Maybe Text
beforeCommitSpecifier :: Prelude.Maybe Prelude.Text,
    -- | The file path in which to check for differences. Limits the results to
    -- this path. Can also be used to specify the previous name of a directory
    -- or folder. If @beforePath@ and @afterPath@ are not specified,
    -- differences are shown for all paths.
    GetDifferences -> Maybe Text
beforePath :: Prelude.Maybe Prelude.Text,
    -- | The name of the repository where you want to get differences.
    GetDifferences -> Text
repositoryName :: Prelude.Text,
    -- | The branch, tag, HEAD, or other fully qualified reference used to
    -- identify a commit.
    GetDifferences -> Text
afterCommitSpecifier :: Prelude.Text
  }
  deriving (GetDifferences -> GetDifferences -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetDifferences -> GetDifferences -> Bool
$c/= :: GetDifferences -> GetDifferences -> Bool
== :: GetDifferences -> GetDifferences -> Bool
$c== :: GetDifferences -> GetDifferences -> Bool
Prelude.Eq, ReadPrec [GetDifferences]
ReadPrec GetDifferences
Int -> ReadS GetDifferences
ReadS [GetDifferences]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetDifferences]
$creadListPrec :: ReadPrec [GetDifferences]
readPrec :: ReadPrec GetDifferences
$creadPrec :: ReadPrec GetDifferences
readList :: ReadS [GetDifferences]
$creadList :: ReadS [GetDifferences]
readsPrec :: Int -> ReadS GetDifferences
$creadsPrec :: Int -> ReadS GetDifferences
Prelude.Read, Int -> GetDifferences -> ShowS
[GetDifferences] -> ShowS
GetDifferences -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetDifferences] -> ShowS
$cshowList :: [GetDifferences] -> ShowS
show :: GetDifferences -> String
$cshow :: GetDifferences -> String
showsPrec :: Int -> GetDifferences -> ShowS
$cshowsPrec :: Int -> GetDifferences -> ShowS
Prelude.Show, forall x. Rep GetDifferences x -> GetDifferences
forall x. GetDifferences -> Rep GetDifferences x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetDifferences x -> GetDifferences
$cfrom :: forall x. GetDifferences -> Rep GetDifferences x
Prelude.Generic)

-- |
-- Create a value of 'GetDifferences' 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:
--
-- 'maxResults', 'getDifferences_maxResults' - A non-zero, non-negative integer used to limit the number of returned
-- results.
--
-- 'nextToken', 'getDifferences_nextToken' - An enumeration token that, when provided in a request, returns the next
-- batch of the results.
--
-- 'afterPath', 'getDifferences_afterPath' - The file path in which to check differences. Limits the results to this
-- path. Can also be used to specify the changed name of a directory or
-- folder, if it has changed. If not specified, differences are shown for
-- all paths.
--
-- 'beforeCommitSpecifier', 'getDifferences_beforeCommitSpecifier' - The branch, tag, HEAD, or other fully qualified reference used to
-- identify a commit (for example, the full commit ID). Optional. If not
-- specified, all changes before the @afterCommitSpecifier@ value are
-- shown. If you do not use @beforeCommitSpecifier@ in your request,
-- consider limiting the results with @maxResults@.
--
-- 'beforePath', 'getDifferences_beforePath' - The file path in which to check for differences. Limits the results to
-- this path. Can also be used to specify the previous name of a directory
-- or folder. If @beforePath@ and @afterPath@ are not specified,
-- differences are shown for all paths.
--
-- 'repositoryName', 'getDifferences_repositoryName' - The name of the repository where you want to get differences.
--
-- 'afterCommitSpecifier', 'getDifferences_afterCommitSpecifier' - The branch, tag, HEAD, or other fully qualified reference used to
-- identify a commit.
newGetDifferences ::
  -- | 'repositoryName'
  Prelude.Text ->
  -- | 'afterCommitSpecifier'
  Prelude.Text ->
  GetDifferences
newGetDifferences :: Text -> Text -> GetDifferences
newGetDifferences
  Text
pRepositoryName_
  Text
pAfterCommitSpecifier_ =
    GetDifferences'
      { $sel:maxResults:GetDifferences' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:GetDifferences' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:afterPath:GetDifferences' :: Maybe Text
afterPath = forall a. Maybe a
Prelude.Nothing,
        $sel:beforeCommitSpecifier:GetDifferences' :: Maybe Text
beforeCommitSpecifier = forall a. Maybe a
Prelude.Nothing,
        $sel:beforePath:GetDifferences' :: Maybe Text
beforePath = forall a. Maybe a
Prelude.Nothing,
        $sel:repositoryName:GetDifferences' :: Text
repositoryName = Text
pRepositoryName_,
        $sel:afterCommitSpecifier:GetDifferences' :: Text
afterCommitSpecifier = Text
pAfterCommitSpecifier_
      }

-- | A non-zero, non-negative integer used to limit the number of returned
-- results.
getDifferences_maxResults :: Lens.Lens' GetDifferences (Prelude.Maybe Prelude.Int)
getDifferences_maxResults :: Lens' GetDifferences (Maybe Int)
getDifferences_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferences' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:GetDifferences' :: GetDifferences -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: GetDifferences
s@GetDifferences' {} Maybe Int
a -> GetDifferences
s {$sel:maxResults:GetDifferences' :: Maybe Int
maxResults = Maybe Int
a} :: GetDifferences)

-- | An enumeration token that, when provided in a request, returns the next
-- batch of the results.
getDifferences_nextToken :: Lens.Lens' GetDifferences (Prelude.Maybe Prelude.Text)
getDifferences_nextToken :: Lens' GetDifferences (Maybe Text)
getDifferences_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferences' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetDifferences' :: GetDifferences -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetDifferences
s@GetDifferences' {} Maybe Text
a -> GetDifferences
s {$sel:nextToken:GetDifferences' :: Maybe Text
nextToken = Maybe Text
a} :: GetDifferences)

-- | The file path in which to check differences. Limits the results to this
-- path. Can also be used to specify the changed name of a directory or
-- folder, if it has changed. If not specified, differences are shown for
-- all paths.
getDifferences_afterPath :: Lens.Lens' GetDifferences (Prelude.Maybe Prelude.Text)
getDifferences_afterPath :: Lens' GetDifferences (Maybe Text)
getDifferences_afterPath = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferences' {Maybe Text
afterPath :: Maybe Text
$sel:afterPath:GetDifferences' :: GetDifferences -> Maybe Text
afterPath} -> Maybe Text
afterPath) (\s :: GetDifferences
s@GetDifferences' {} Maybe Text
a -> GetDifferences
s {$sel:afterPath:GetDifferences' :: Maybe Text
afterPath = Maybe Text
a} :: GetDifferences)

-- | The branch, tag, HEAD, or other fully qualified reference used to
-- identify a commit (for example, the full commit ID). Optional. If not
-- specified, all changes before the @afterCommitSpecifier@ value are
-- shown. If you do not use @beforeCommitSpecifier@ in your request,
-- consider limiting the results with @maxResults@.
getDifferences_beforeCommitSpecifier :: Lens.Lens' GetDifferences (Prelude.Maybe Prelude.Text)
getDifferences_beforeCommitSpecifier :: Lens' GetDifferences (Maybe Text)
getDifferences_beforeCommitSpecifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferences' {Maybe Text
beforeCommitSpecifier :: Maybe Text
$sel:beforeCommitSpecifier:GetDifferences' :: GetDifferences -> Maybe Text
beforeCommitSpecifier} -> Maybe Text
beforeCommitSpecifier) (\s :: GetDifferences
s@GetDifferences' {} Maybe Text
a -> GetDifferences
s {$sel:beforeCommitSpecifier:GetDifferences' :: Maybe Text
beforeCommitSpecifier = Maybe Text
a} :: GetDifferences)

-- | The file path in which to check for differences. Limits the results to
-- this path. Can also be used to specify the previous name of a directory
-- or folder. If @beforePath@ and @afterPath@ are not specified,
-- differences are shown for all paths.
getDifferences_beforePath :: Lens.Lens' GetDifferences (Prelude.Maybe Prelude.Text)
getDifferences_beforePath :: Lens' GetDifferences (Maybe Text)
getDifferences_beforePath = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferences' {Maybe Text
beforePath :: Maybe Text
$sel:beforePath:GetDifferences' :: GetDifferences -> Maybe Text
beforePath} -> Maybe Text
beforePath) (\s :: GetDifferences
s@GetDifferences' {} Maybe Text
a -> GetDifferences
s {$sel:beforePath:GetDifferences' :: Maybe Text
beforePath = Maybe Text
a} :: GetDifferences)

-- | The name of the repository where you want to get differences.
getDifferences_repositoryName :: Lens.Lens' GetDifferences Prelude.Text
getDifferences_repositoryName :: Lens' GetDifferences Text
getDifferences_repositoryName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferences' {Text
repositoryName :: Text
$sel:repositoryName:GetDifferences' :: GetDifferences -> Text
repositoryName} -> Text
repositoryName) (\s :: GetDifferences
s@GetDifferences' {} Text
a -> GetDifferences
s {$sel:repositoryName:GetDifferences' :: Text
repositoryName = Text
a} :: GetDifferences)

-- | The branch, tag, HEAD, or other fully qualified reference used to
-- identify a commit.
getDifferences_afterCommitSpecifier :: Lens.Lens' GetDifferences Prelude.Text
getDifferences_afterCommitSpecifier :: Lens' GetDifferences Text
getDifferences_afterCommitSpecifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferences' {Text
afterCommitSpecifier :: Text
$sel:afterCommitSpecifier:GetDifferences' :: GetDifferences -> Text
afterCommitSpecifier} -> Text
afterCommitSpecifier) (\s :: GetDifferences
s@GetDifferences' {} Text
a -> GetDifferences
s {$sel:afterCommitSpecifier:GetDifferences' :: Text
afterCommitSpecifier = Text
a} :: GetDifferences)

instance Core.AWSPager GetDifferences where
  page :: GetDifferences
-> AWSResponse GetDifferences -> Maybe GetDifferences
page GetDifferences
rq AWSResponse GetDifferences
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetDifferences
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetDifferencesResponse (Maybe Text)
getDifferencesResponse_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 GetDifferences
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetDifferencesResponse (Maybe [Difference])
getDifferencesResponse_differences
            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.$ GetDifferences
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' GetDifferences (Maybe Text)
getDifferences_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetDifferences
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetDifferencesResponse (Maybe Text)
getDifferencesResponse_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 GetDifferences where
  type
    AWSResponse GetDifferences =
      GetDifferencesResponse
  request :: (Service -> Service) -> GetDifferences -> Request GetDifferences
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 GetDifferences
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetDifferences)))
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 [Difference] -> Int -> GetDifferencesResponse
GetDifferencesResponse'
            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
"differences" 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 GetDifferences where
  hashWithSalt :: Int -> GetDifferences -> Int
hashWithSalt Int
_salt GetDifferences' {Maybe Int
Maybe Text
Text
afterCommitSpecifier :: Text
repositoryName :: Text
beforePath :: Maybe Text
beforeCommitSpecifier :: Maybe Text
afterPath :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:afterCommitSpecifier:GetDifferences' :: GetDifferences -> Text
$sel:repositoryName:GetDifferences' :: GetDifferences -> Text
$sel:beforePath:GetDifferences' :: GetDifferences -> Maybe Text
$sel:beforeCommitSpecifier:GetDifferences' :: GetDifferences -> Maybe Text
$sel:afterPath:GetDifferences' :: GetDifferences -> Maybe Text
$sel:nextToken:GetDifferences' :: GetDifferences -> Maybe Text
$sel:maxResults:GetDifferences' :: GetDifferences -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
afterPath
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
beforeCommitSpecifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
beforePath
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
repositoryName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
afterCommitSpecifier

instance Prelude.NFData GetDifferences where
  rnf :: GetDifferences -> ()
rnf GetDifferences' {Maybe Int
Maybe Text
Text
afterCommitSpecifier :: Text
repositoryName :: Text
beforePath :: Maybe Text
beforeCommitSpecifier :: Maybe Text
afterPath :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:afterCommitSpecifier:GetDifferences' :: GetDifferences -> Text
$sel:repositoryName:GetDifferences' :: GetDifferences -> Text
$sel:beforePath:GetDifferences' :: GetDifferences -> Maybe Text
$sel:beforeCommitSpecifier:GetDifferences' :: GetDifferences -> Maybe Text
$sel:afterPath:GetDifferences' :: GetDifferences -> Maybe Text
$sel:nextToken:GetDifferences' :: GetDifferences -> Maybe Text
$sel:maxResults:GetDifferences' :: GetDifferences -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxResults
      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
afterPath
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
beforeCommitSpecifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
beforePath
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
repositoryName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
afterCommitSpecifier

instance Data.ToHeaders GetDifferences where
  toHeaders :: GetDifferences -> 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
"CodeCommit_20150413.GetDifferences" ::
                          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 GetDifferences where
  toJSON :: GetDifferences -> Value
toJSON GetDifferences' {Maybe Int
Maybe Text
Text
afterCommitSpecifier :: Text
repositoryName :: Text
beforePath :: Maybe Text
beforeCommitSpecifier :: Maybe Text
afterPath :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
$sel:afterCommitSpecifier:GetDifferences' :: GetDifferences -> Text
$sel:repositoryName:GetDifferences' :: GetDifferences -> Text
$sel:beforePath:GetDifferences' :: GetDifferences -> Maybe Text
$sel:beforeCommitSpecifier:GetDifferences' :: GetDifferences -> Maybe Text
$sel:afterPath:GetDifferences' :: GetDifferences -> Maybe Text
$sel:nextToken:GetDifferences' :: GetDifferences -> Maybe Text
$sel:maxResults:GetDifferences' :: GetDifferences -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"MaxResults" 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
maxResults,
            (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
"afterPath" 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
afterPath,
            (Key
"beforeCommitSpecifier" 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
beforeCommitSpecifier,
            (Key
"beforePath" 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
beforePath,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"repositoryName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
repositoryName),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"afterCommitSpecifier"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
afterCommitSpecifier
              )
          ]
      )

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

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

-- | /See:/ 'newGetDifferencesResponse' smart constructor.
data GetDifferencesResponse = GetDifferencesResponse'
  { -- | An enumeration token that can be used in a request to return the next
    -- batch of the results.
    GetDifferencesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A data type object that contains information about the differences,
    -- including whether the difference is added, modified, or deleted (A, D,
    -- M).
    GetDifferencesResponse -> Maybe [Difference]
differences :: Prelude.Maybe [Difference],
    -- | The response's http status code.
    GetDifferencesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetDifferencesResponse -> GetDifferencesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetDifferencesResponse -> GetDifferencesResponse -> Bool
$c/= :: GetDifferencesResponse -> GetDifferencesResponse -> Bool
== :: GetDifferencesResponse -> GetDifferencesResponse -> Bool
$c== :: GetDifferencesResponse -> GetDifferencesResponse -> Bool
Prelude.Eq, ReadPrec [GetDifferencesResponse]
ReadPrec GetDifferencesResponse
Int -> ReadS GetDifferencesResponse
ReadS [GetDifferencesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetDifferencesResponse]
$creadListPrec :: ReadPrec [GetDifferencesResponse]
readPrec :: ReadPrec GetDifferencesResponse
$creadPrec :: ReadPrec GetDifferencesResponse
readList :: ReadS [GetDifferencesResponse]
$creadList :: ReadS [GetDifferencesResponse]
readsPrec :: Int -> ReadS GetDifferencesResponse
$creadsPrec :: Int -> ReadS GetDifferencesResponse
Prelude.Read, Int -> GetDifferencesResponse -> ShowS
[GetDifferencesResponse] -> ShowS
GetDifferencesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetDifferencesResponse] -> ShowS
$cshowList :: [GetDifferencesResponse] -> ShowS
show :: GetDifferencesResponse -> String
$cshow :: GetDifferencesResponse -> String
showsPrec :: Int -> GetDifferencesResponse -> ShowS
$cshowsPrec :: Int -> GetDifferencesResponse -> ShowS
Prelude.Show, forall x. Rep GetDifferencesResponse x -> GetDifferencesResponse
forall x. GetDifferencesResponse -> Rep GetDifferencesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetDifferencesResponse x -> GetDifferencesResponse
$cfrom :: forall x. GetDifferencesResponse -> Rep GetDifferencesResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetDifferencesResponse' 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', 'getDifferencesResponse_nextToken' - An enumeration token that can be used in a request to return the next
-- batch of the results.
--
-- 'differences', 'getDifferencesResponse_differences' - A data type object that contains information about the differences,
-- including whether the difference is added, modified, or deleted (A, D,
-- M).
--
-- 'httpStatus', 'getDifferencesResponse_httpStatus' - The response's http status code.
newGetDifferencesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetDifferencesResponse
newGetDifferencesResponse :: Int -> GetDifferencesResponse
newGetDifferencesResponse Int
pHttpStatus_ =
  GetDifferencesResponse'
    { $sel:nextToken:GetDifferencesResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:differences:GetDifferencesResponse' :: Maybe [Difference]
differences = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetDifferencesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An enumeration token that can be used in a request to return the next
-- batch of the results.
getDifferencesResponse_nextToken :: Lens.Lens' GetDifferencesResponse (Prelude.Maybe Prelude.Text)
getDifferencesResponse_nextToken :: Lens' GetDifferencesResponse (Maybe Text)
getDifferencesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferencesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetDifferencesResponse' :: GetDifferencesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetDifferencesResponse
s@GetDifferencesResponse' {} Maybe Text
a -> GetDifferencesResponse
s {$sel:nextToken:GetDifferencesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetDifferencesResponse)

-- | A data type object that contains information about the differences,
-- including whether the difference is added, modified, or deleted (A, D,
-- M).
getDifferencesResponse_differences :: Lens.Lens' GetDifferencesResponse (Prelude.Maybe [Difference])
getDifferencesResponse_differences :: Lens' GetDifferencesResponse (Maybe [Difference])
getDifferencesResponse_differences = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferencesResponse' {Maybe [Difference]
differences :: Maybe [Difference]
$sel:differences:GetDifferencesResponse' :: GetDifferencesResponse -> Maybe [Difference]
differences} -> Maybe [Difference]
differences) (\s :: GetDifferencesResponse
s@GetDifferencesResponse' {} Maybe [Difference]
a -> GetDifferencesResponse
s {$sel:differences:GetDifferencesResponse' :: Maybe [Difference]
differences = Maybe [Difference]
a} :: GetDifferencesResponse) 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.
getDifferencesResponse_httpStatus :: Lens.Lens' GetDifferencesResponse Prelude.Int
getDifferencesResponse_httpStatus :: Lens' GetDifferencesResponse Int
getDifferencesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDifferencesResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetDifferencesResponse' :: GetDifferencesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetDifferencesResponse
s@GetDifferencesResponse' {} Int
a -> GetDifferencesResponse
s {$sel:httpStatus:GetDifferencesResponse' :: Int
httpStatus = Int
a} :: GetDifferencesResponse)

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