{-# 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.GetPullRequestOverrideState
-- 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 whether approval rules have been set aside
-- (overridden) for a pull request, and if so, the Amazon Resource Name
-- (ARN) of the user or identity that overrode the rules and their
-- requirements for the pull request.
module Amazonka.CodeCommit.GetPullRequestOverrideState
  ( -- * Creating a Request
    GetPullRequestOverrideState (..),
    newGetPullRequestOverrideState,

    -- * Request Lenses
    getPullRequestOverrideState_pullRequestId,
    getPullRequestOverrideState_revisionId,

    -- * Destructuring the Response
    GetPullRequestOverrideStateResponse (..),
    newGetPullRequestOverrideStateResponse,

    -- * Response Lenses
    getPullRequestOverrideStateResponse_overridden,
    getPullRequestOverrideStateResponse_overrider,
    getPullRequestOverrideStateResponse_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:/ 'newGetPullRequestOverrideState' smart constructor.
data GetPullRequestOverrideState = GetPullRequestOverrideState'
  { -- | The ID of the pull request for which you want to get information about
    -- whether approval rules have been set aside (overridden).
    GetPullRequestOverrideState -> Text
pullRequestId :: Prelude.Text,
    -- | The system-generated ID of the revision for the pull request. To
    -- retrieve the most recent revision ID, use GetPullRequest.
    GetPullRequestOverrideState -> Text
revisionId :: Prelude.Text
  }
  deriving (GetPullRequestOverrideState -> GetPullRequestOverrideState -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPullRequestOverrideState -> GetPullRequestOverrideState -> Bool
$c/= :: GetPullRequestOverrideState -> GetPullRequestOverrideState -> Bool
== :: GetPullRequestOverrideState -> GetPullRequestOverrideState -> Bool
$c== :: GetPullRequestOverrideState -> GetPullRequestOverrideState -> Bool
Prelude.Eq, ReadPrec [GetPullRequestOverrideState]
ReadPrec GetPullRequestOverrideState
Int -> ReadS GetPullRequestOverrideState
ReadS [GetPullRequestOverrideState]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetPullRequestOverrideState]
$creadListPrec :: ReadPrec [GetPullRequestOverrideState]
readPrec :: ReadPrec GetPullRequestOverrideState
$creadPrec :: ReadPrec GetPullRequestOverrideState
readList :: ReadS [GetPullRequestOverrideState]
$creadList :: ReadS [GetPullRequestOverrideState]
readsPrec :: Int -> ReadS GetPullRequestOverrideState
$creadsPrec :: Int -> ReadS GetPullRequestOverrideState
Prelude.Read, Int -> GetPullRequestOverrideState -> ShowS
[GetPullRequestOverrideState] -> ShowS
GetPullRequestOverrideState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPullRequestOverrideState] -> ShowS
$cshowList :: [GetPullRequestOverrideState] -> ShowS
show :: GetPullRequestOverrideState -> String
$cshow :: GetPullRequestOverrideState -> String
showsPrec :: Int -> GetPullRequestOverrideState -> ShowS
$cshowsPrec :: Int -> GetPullRequestOverrideState -> ShowS
Prelude.Show, forall x.
Rep GetPullRequestOverrideState x -> GetPullRequestOverrideState
forall x.
GetPullRequestOverrideState -> Rep GetPullRequestOverrideState x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetPullRequestOverrideState x -> GetPullRequestOverrideState
$cfrom :: forall x.
GetPullRequestOverrideState -> Rep GetPullRequestOverrideState x
Prelude.Generic)

-- |
-- Create a value of 'GetPullRequestOverrideState' 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:
--
-- 'pullRequestId', 'getPullRequestOverrideState_pullRequestId' - The ID of the pull request for which you want to get information about
-- whether approval rules have been set aside (overridden).
--
-- 'revisionId', 'getPullRequestOverrideState_revisionId' - The system-generated ID of the revision for the pull request. To
-- retrieve the most recent revision ID, use GetPullRequest.
newGetPullRequestOverrideState ::
  -- | 'pullRequestId'
  Prelude.Text ->
  -- | 'revisionId'
  Prelude.Text ->
  GetPullRequestOverrideState
newGetPullRequestOverrideState :: Text -> Text -> GetPullRequestOverrideState
newGetPullRequestOverrideState
  Text
pPullRequestId_
  Text
pRevisionId_ =
    GetPullRequestOverrideState'
      { $sel:pullRequestId:GetPullRequestOverrideState' :: Text
pullRequestId =
          Text
pPullRequestId_,
        $sel:revisionId:GetPullRequestOverrideState' :: Text
revisionId = Text
pRevisionId_
      }

-- | The ID of the pull request for which you want to get information about
-- whether approval rules have been set aside (overridden).
getPullRequestOverrideState_pullRequestId :: Lens.Lens' GetPullRequestOverrideState Prelude.Text
getPullRequestOverrideState_pullRequestId :: Lens' GetPullRequestOverrideState Text
getPullRequestOverrideState_pullRequestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPullRequestOverrideState' {Text
pullRequestId :: Text
$sel:pullRequestId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
pullRequestId} -> Text
pullRequestId) (\s :: GetPullRequestOverrideState
s@GetPullRequestOverrideState' {} Text
a -> GetPullRequestOverrideState
s {$sel:pullRequestId:GetPullRequestOverrideState' :: Text
pullRequestId = Text
a} :: GetPullRequestOverrideState)

-- | The system-generated ID of the revision for the pull request. To
-- retrieve the most recent revision ID, use GetPullRequest.
getPullRequestOverrideState_revisionId :: Lens.Lens' GetPullRequestOverrideState Prelude.Text
getPullRequestOverrideState_revisionId :: Lens' GetPullRequestOverrideState Text
getPullRequestOverrideState_revisionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPullRequestOverrideState' {Text
revisionId :: Text
$sel:revisionId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
revisionId} -> Text
revisionId) (\s :: GetPullRequestOverrideState
s@GetPullRequestOverrideState' {} Text
a -> GetPullRequestOverrideState
s {$sel:revisionId:GetPullRequestOverrideState' :: Text
revisionId = Text
a} :: GetPullRequestOverrideState)

instance Core.AWSRequest GetPullRequestOverrideState where
  type
    AWSResponse GetPullRequestOverrideState =
      GetPullRequestOverrideStateResponse
  request :: (Service -> Service)
-> GetPullRequestOverrideState
-> Request GetPullRequestOverrideState
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 GetPullRequestOverrideState
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetPullRequestOverrideState)))
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 Bool
-> Maybe Text -> Int -> GetPullRequestOverrideStateResponse
GetPullRequestOverrideStateResponse'
            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
"overridden")
            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
"overrider")
            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 GetPullRequestOverrideState where
  hashWithSalt :: Int -> GetPullRequestOverrideState -> Int
hashWithSalt Int
_salt GetPullRequestOverrideState' {Text
revisionId :: Text
pullRequestId :: Text
$sel:revisionId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
$sel:pullRequestId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
pullRequestId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
revisionId

instance Prelude.NFData GetPullRequestOverrideState where
  rnf :: GetPullRequestOverrideState -> ()
rnf GetPullRequestOverrideState' {Text
revisionId :: Text
pullRequestId :: Text
$sel:revisionId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
$sel:pullRequestId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
pullRequestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
revisionId

instance Data.ToHeaders GetPullRequestOverrideState where
  toHeaders :: GetPullRequestOverrideState -> 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.GetPullRequestOverrideState" ::
                          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 GetPullRequestOverrideState where
  toJSON :: GetPullRequestOverrideState -> Value
toJSON GetPullRequestOverrideState' {Text
revisionId :: Text
pullRequestId :: Text
$sel:revisionId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
$sel:pullRequestId:GetPullRequestOverrideState' :: GetPullRequestOverrideState -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"pullRequestId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
pullRequestId),
            forall a. a -> Maybe a
Prelude.Just (Key
"revisionId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
revisionId)
          ]
      )

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

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

-- | /See:/ 'newGetPullRequestOverrideStateResponse' smart constructor.
data GetPullRequestOverrideStateResponse = GetPullRequestOverrideStateResponse'
  { -- | A Boolean value that indicates whether a pull request has had its rules
    -- set aside (TRUE) or whether all approval rules still apply (FALSE).
    GetPullRequestOverrideStateResponse -> Maybe Bool
overridden :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) of the user or identity that overrode the
    -- rules and their requirements for the pull request.
    GetPullRequestOverrideStateResponse -> Maybe Text
overrider :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetPullRequestOverrideStateResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetPullRequestOverrideStateResponse
-> GetPullRequestOverrideStateResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPullRequestOverrideStateResponse
-> GetPullRequestOverrideStateResponse -> Bool
$c/= :: GetPullRequestOverrideStateResponse
-> GetPullRequestOverrideStateResponse -> Bool
== :: GetPullRequestOverrideStateResponse
-> GetPullRequestOverrideStateResponse -> Bool
$c== :: GetPullRequestOverrideStateResponse
-> GetPullRequestOverrideStateResponse -> Bool
Prelude.Eq, ReadPrec [GetPullRequestOverrideStateResponse]
ReadPrec GetPullRequestOverrideStateResponse
Int -> ReadS GetPullRequestOverrideStateResponse
ReadS [GetPullRequestOverrideStateResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetPullRequestOverrideStateResponse]
$creadListPrec :: ReadPrec [GetPullRequestOverrideStateResponse]
readPrec :: ReadPrec GetPullRequestOverrideStateResponse
$creadPrec :: ReadPrec GetPullRequestOverrideStateResponse
readList :: ReadS [GetPullRequestOverrideStateResponse]
$creadList :: ReadS [GetPullRequestOverrideStateResponse]
readsPrec :: Int -> ReadS GetPullRequestOverrideStateResponse
$creadsPrec :: Int -> ReadS GetPullRequestOverrideStateResponse
Prelude.Read, Int -> GetPullRequestOverrideStateResponse -> ShowS
[GetPullRequestOverrideStateResponse] -> ShowS
GetPullRequestOverrideStateResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPullRequestOverrideStateResponse] -> ShowS
$cshowList :: [GetPullRequestOverrideStateResponse] -> ShowS
show :: GetPullRequestOverrideStateResponse -> String
$cshow :: GetPullRequestOverrideStateResponse -> String
showsPrec :: Int -> GetPullRequestOverrideStateResponse -> ShowS
$cshowsPrec :: Int -> GetPullRequestOverrideStateResponse -> ShowS
Prelude.Show, forall x.
Rep GetPullRequestOverrideStateResponse x
-> GetPullRequestOverrideStateResponse
forall x.
GetPullRequestOverrideStateResponse
-> Rep GetPullRequestOverrideStateResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetPullRequestOverrideStateResponse x
-> GetPullRequestOverrideStateResponse
$cfrom :: forall x.
GetPullRequestOverrideStateResponse
-> Rep GetPullRequestOverrideStateResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetPullRequestOverrideStateResponse' 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:
--
-- 'overridden', 'getPullRequestOverrideStateResponse_overridden' - A Boolean value that indicates whether a pull request has had its rules
-- set aside (TRUE) or whether all approval rules still apply (FALSE).
--
-- 'overrider', 'getPullRequestOverrideStateResponse_overrider' - The Amazon Resource Name (ARN) of the user or identity that overrode the
-- rules and their requirements for the pull request.
--
-- 'httpStatus', 'getPullRequestOverrideStateResponse_httpStatus' - The response's http status code.
newGetPullRequestOverrideStateResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetPullRequestOverrideStateResponse
newGetPullRequestOverrideStateResponse :: Int -> GetPullRequestOverrideStateResponse
newGetPullRequestOverrideStateResponse Int
pHttpStatus_ =
  GetPullRequestOverrideStateResponse'
    { $sel:overridden:GetPullRequestOverrideStateResponse' :: Maybe Bool
overridden =
        forall a. Maybe a
Prelude.Nothing,
      $sel:overrider:GetPullRequestOverrideStateResponse' :: Maybe Text
overrider = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetPullRequestOverrideStateResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A Boolean value that indicates whether a pull request has had its rules
-- set aside (TRUE) or whether all approval rules still apply (FALSE).
getPullRequestOverrideStateResponse_overridden :: Lens.Lens' GetPullRequestOverrideStateResponse (Prelude.Maybe Prelude.Bool)
getPullRequestOverrideStateResponse_overridden :: Lens' GetPullRequestOverrideStateResponse (Maybe Bool)
getPullRequestOverrideStateResponse_overridden = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPullRequestOverrideStateResponse' {Maybe Bool
overridden :: Maybe Bool
$sel:overridden:GetPullRequestOverrideStateResponse' :: GetPullRequestOverrideStateResponse -> Maybe Bool
overridden} -> Maybe Bool
overridden) (\s :: GetPullRequestOverrideStateResponse
s@GetPullRequestOverrideStateResponse' {} Maybe Bool
a -> GetPullRequestOverrideStateResponse
s {$sel:overridden:GetPullRequestOverrideStateResponse' :: Maybe Bool
overridden = Maybe Bool
a} :: GetPullRequestOverrideStateResponse)

-- | The Amazon Resource Name (ARN) of the user or identity that overrode the
-- rules and their requirements for the pull request.
getPullRequestOverrideStateResponse_overrider :: Lens.Lens' GetPullRequestOverrideStateResponse (Prelude.Maybe Prelude.Text)
getPullRequestOverrideStateResponse_overrider :: Lens' GetPullRequestOverrideStateResponse (Maybe Text)
getPullRequestOverrideStateResponse_overrider = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPullRequestOverrideStateResponse' {Maybe Text
overrider :: Maybe Text
$sel:overrider:GetPullRequestOverrideStateResponse' :: GetPullRequestOverrideStateResponse -> Maybe Text
overrider} -> Maybe Text
overrider) (\s :: GetPullRequestOverrideStateResponse
s@GetPullRequestOverrideStateResponse' {} Maybe Text
a -> GetPullRequestOverrideStateResponse
s {$sel:overrider:GetPullRequestOverrideStateResponse' :: Maybe Text
overrider = Maybe Text
a} :: GetPullRequestOverrideStateResponse)

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

instance
  Prelude.NFData
    GetPullRequestOverrideStateResponse
  where
  rnf :: GetPullRequestOverrideStateResponse -> ()
rnf GetPullRequestOverrideStateResponse' {Int
Maybe Bool
Maybe Text
httpStatus :: Int
overrider :: Maybe Text
overridden :: Maybe Bool
$sel:httpStatus:GetPullRequestOverrideStateResponse' :: GetPullRequestOverrideStateResponse -> Int
$sel:overrider:GetPullRequestOverrideStateResponse' :: GetPullRequestOverrideStateResponse -> Maybe Text
$sel:overridden:GetPullRequestOverrideStateResponse' :: GetPullRequestOverrideStateResponse -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
overridden
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
overrider
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus