{-# 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.GetRepositoryTriggers
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets information about triggers configured for a repository.
module Amazonka.CodeCommit.GetRepositoryTriggers
  ( -- * Creating a Request
    GetRepositoryTriggers (..),
    newGetRepositoryTriggers,

    -- * Request Lenses
    getRepositoryTriggers_repositoryName,

    -- * Destructuring the Response
    GetRepositoryTriggersResponse (..),
    newGetRepositoryTriggersResponse,

    -- * Response Lenses
    getRepositoryTriggersResponse_configurationId,
    getRepositoryTriggersResponse_triggers,
    getRepositoryTriggersResponse_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

-- | Represents the input of a get repository triggers operation.
--
-- /See:/ 'newGetRepositoryTriggers' smart constructor.
data GetRepositoryTriggers = GetRepositoryTriggers'
  { -- | The name of the repository for which the trigger is configured.
    GetRepositoryTriggers -> Text
repositoryName :: Prelude.Text
  }
  deriving (GetRepositoryTriggers -> GetRepositoryTriggers -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetRepositoryTriggers -> GetRepositoryTriggers -> Bool
$c/= :: GetRepositoryTriggers -> GetRepositoryTriggers -> Bool
== :: GetRepositoryTriggers -> GetRepositoryTriggers -> Bool
$c== :: GetRepositoryTriggers -> GetRepositoryTriggers -> Bool
Prelude.Eq, ReadPrec [GetRepositoryTriggers]
ReadPrec GetRepositoryTriggers
Int -> ReadS GetRepositoryTriggers
ReadS [GetRepositoryTriggers]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetRepositoryTriggers]
$creadListPrec :: ReadPrec [GetRepositoryTriggers]
readPrec :: ReadPrec GetRepositoryTriggers
$creadPrec :: ReadPrec GetRepositoryTriggers
readList :: ReadS [GetRepositoryTriggers]
$creadList :: ReadS [GetRepositoryTriggers]
readsPrec :: Int -> ReadS GetRepositoryTriggers
$creadsPrec :: Int -> ReadS GetRepositoryTriggers
Prelude.Read, Int -> GetRepositoryTriggers -> ShowS
[GetRepositoryTriggers] -> ShowS
GetRepositoryTriggers -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetRepositoryTriggers] -> ShowS
$cshowList :: [GetRepositoryTriggers] -> ShowS
show :: GetRepositoryTriggers -> String
$cshow :: GetRepositoryTriggers -> String
showsPrec :: Int -> GetRepositoryTriggers -> ShowS
$cshowsPrec :: Int -> GetRepositoryTriggers -> ShowS
Prelude.Show, forall x. Rep GetRepositoryTriggers x -> GetRepositoryTriggers
forall x. GetRepositoryTriggers -> Rep GetRepositoryTriggers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetRepositoryTriggers x -> GetRepositoryTriggers
$cfrom :: forall x. GetRepositoryTriggers -> Rep GetRepositoryTriggers x
Prelude.Generic)

-- |
-- Create a value of 'GetRepositoryTriggers' 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:
--
-- 'repositoryName', 'getRepositoryTriggers_repositoryName' - The name of the repository for which the trigger is configured.
newGetRepositoryTriggers ::
  -- | 'repositoryName'
  Prelude.Text ->
  GetRepositoryTriggers
newGetRepositoryTriggers :: Text -> GetRepositoryTriggers
newGetRepositoryTriggers Text
pRepositoryName_ =
  GetRepositoryTriggers'
    { $sel:repositoryName:GetRepositoryTriggers' :: Text
repositoryName =
        Text
pRepositoryName_
    }

-- | The name of the repository for which the trigger is configured.
getRepositoryTriggers_repositoryName :: Lens.Lens' GetRepositoryTriggers Prelude.Text
getRepositoryTriggers_repositoryName :: Lens' GetRepositoryTriggers Text
getRepositoryTriggers_repositoryName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetRepositoryTriggers' {Text
repositoryName :: Text
$sel:repositoryName:GetRepositoryTriggers' :: GetRepositoryTriggers -> Text
repositoryName} -> Text
repositoryName) (\s :: GetRepositoryTriggers
s@GetRepositoryTriggers' {} Text
a -> GetRepositoryTriggers
s {$sel:repositoryName:GetRepositoryTriggers' :: Text
repositoryName = Text
a} :: GetRepositoryTriggers)

instance Core.AWSRequest GetRepositoryTriggers where
  type
    AWSResponse GetRepositoryTriggers =
      GetRepositoryTriggersResponse
  request :: (Service -> Service)
-> GetRepositoryTriggers -> Request GetRepositoryTriggers
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 GetRepositoryTriggers
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetRepositoryTriggers)))
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 [RepositoryTrigger]
-> Int
-> GetRepositoryTriggersResponse
GetRepositoryTriggersResponse'
            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
"configurationId")
            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
"triggers" 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 GetRepositoryTriggers where
  hashWithSalt :: Int -> GetRepositoryTriggers -> Int
hashWithSalt Int
_salt GetRepositoryTriggers' {Text
repositoryName :: Text
$sel:repositoryName:GetRepositoryTriggers' :: GetRepositoryTriggers -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
repositoryName

instance Prelude.NFData GetRepositoryTriggers where
  rnf :: GetRepositoryTriggers -> ()
rnf GetRepositoryTriggers' {Text
repositoryName :: Text
$sel:repositoryName:GetRepositoryTriggers' :: GetRepositoryTriggers -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
repositoryName

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

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

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

-- | Represents the output of a get repository triggers operation.
--
-- /See:/ 'newGetRepositoryTriggersResponse' smart constructor.
data GetRepositoryTriggersResponse = GetRepositoryTriggersResponse'
  { -- | The system-generated unique ID for the trigger.
    GetRepositoryTriggersResponse -> Maybe Text
configurationId :: Prelude.Maybe Prelude.Text,
    -- | The JSON block of configuration information for each trigger.
    GetRepositoryTriggersResponse -> Maybe [RepositoryTrigger]
triggers :: Prelude.Maybe [RepositoryTrigger],
    -- | The response's http status code.
    GetRepositoryTriggersResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetRepositoryTriggersResponse
-> GetRepositoryTriggersResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetRepositoryTriggersResponse
-> GetRepositoryTriggersResponse -> Bool
$c/= :: GetRepositoryTriggersResponse
-> GetRepositoryTriggersResponse -> Bool
== :: GetRepositoryTriggersResponse
-> GetRepositoryTriggersResponse -> Bool
$c== :: GetRepositoryTriggersResponse
-> GetRepositoryTriggersResponse -> Bool
Prelude.Eq, ReadPrec [GetRepositoryTriggersResponse]
ReadPrec GetRepositoryTriggersResponse
Int -> ReadS GetRepositoryTriggersResponse
ReadS [GetRepositoryTriggersResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetRepositoryTriggersResponse]
$creadListPrec :: ReadPrec [GetRepositoryTriggersResponse]
readPrec :: ReadPrec GetRepositoryTriggersResponse
$creadPrec :: ReadPrec GetRepositoryTriggersResponse
readList :: ReadS [GetRepositoryTriggersResponse]
$creadList :: ReadS [GetRepositoryTriggersResponse]
readsPrec :: Int -> ReadS GetRepositoryTriggersResponse
$creadsPrec :: Int -> ReadS GetRepositoryTriggersResponse
Prelude.Read, Int -> GetRepositoryTriggersResponse -> ShowS
[GetRepositoryTriggersResponse] -> ShowS
GetRepositoryTriggersResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetRepositoryTriggersResponse] -> ShowS
$cshowList :: [GetRepositoryTriggersResponse] -> ShowS
show :: GetRepositoryTriggersResponse -> String
$cshow :: GetRepositoryTriggersResponse -> String
showsPrec :: Int -> GetRepositoryTriggersResponse -> ShowS
$cshowsPrec :: Int -> GetRepositoryTriggersResponse -> ShowS
Prelude.Show, forall x.
Rep GetRepositoryTriggersResponse x
-> GetRepositoryTriggersResponse
forall x.
GetRepositoryTriggersResponse
-> Rep GetRepositoryTriggersResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetRepositoryTriggersResponse x
-> GetRepositoryTriggersResponse
$cfrom :: forall x.
GetRepositoryTriggersResponse
-> Rep GetRepositoryTriggersResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetRepositoryTriggersResponse' 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:
--
-- 'configurationId', 'getRepositoryTriggersResponse_configurationId' - The system-generated unique ID for the trigger.
--
-- 'triggers', 'getRepositoryTriggersResponse_triggers' - The JSON block of configuration information for each trigger.
--
-- 'httpStatus', 'getRepositoryTriggersResponse_httpStatus' - The response's http status code.
newGetRepositoryTriggersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetRepositoryTriggersResponse
newGetRepositoryTriggersResponse :: Int -> GetRepositoryTriggersResponse
newGetRepositoryTriggersResponse Int
pHttpStatus_ =
  GetRepositoryTriggersResponse'
    { $sel:configurationId:GetRepositoryTriggersResponse' :: Maybe Text
configurationId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:triggers:GetRepositoryTriggersResponse' :: Maybe [RepositoryTrigger]
triggers = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetRepositoryTriggersResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The system-generated unique ID for the trigger.
getRepositoryTriggersResponse_configurationId :: Lens.Lens' GetRepositoryTriggersResponse (Prelude.Maybe Prelude.Text)
getRepositoryTriggersResponse_configurationId :: Lens' GetRepositoryTriggersResponse (Maybe Text)
getRepositoryTriggersResponse_configurationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetRepositoryTriggersResponse' {Maybe Text
configurationId :: Maybe Text
$sel:configurationId:GetRepositoryTriggersResponse' :: GetRepositoryTriggersResponse -> Maybe Text
configurationId} -> Maybe Text
configurationId) (\s :: GetRepositoryTriggersResponse
s@GetRepositoryTriggersResponse' {} Maybe Text
a -> GetRepositoryTriggersResponse
s {$sel:configurationId:GetRepositoryTriggersResponse' :: Maybe Text
configurationId = Maybe Text
a} :: GetRepositoryTriggersResponse)

-- | The JSON block of configuration information for each trigger.
getRepositoryTriggersResponse_triggers :: Lens.Lens' GetRepositoryTriggersResponse (Prelude.Maybe [RepositoryTrigger])
getRepositoryTriggersResponse_triggers :: Lens' GetRepositoryTriggersResponse (Maybe [RepositoryTrigger])
getRepositoryTriggersResponse_triggers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetRepositoryTriggersResponse' {Maybe [RepositoryTrigger]
triggers :: Maybe [RepositoryTrigger]
$sel:triggers:GetRepositoryTriggersResponse' :: GetRepositoryTriggersResponse -> Maybe [RepositoryTrigger]
triggers} -> Maybe [RepositoryTrigger]
triggers) (\s :: GetRepositoryTriggersResponse
s@GetRepositoryTriggersResponse' {} Maybe [RepositoryTrigger]
a -> GetRepositoryTriggersResponse
s {$sel:triggers:GetRepositoryTriggersResponse' :: Maybe [RepositoryTrigger]
triggers = Maybe [RepositoryTrigger]
a} :: GetRepositoryTriggersResponse) 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.
getRepositoryTriggersResponse_httpStatus :: Lens.Lens' GetRepositoryTriggersResponse Prelude.Int
getRepositoryTriggersResponse_httpStatus :: Lens' GetRepositoryTriggersResponse Int
getRepositoryTriggersResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetRepositoryTriggersResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetRepositoryTriggersResponse' :: GetRepositoryTriggersResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetRepositoryTriggersResponse
s@GetRepositoryTriggersResponse' {} Int
a -> GetRepositoryTriggersResponse
s {$sel:httpStatus:GetRepositoryTriggersResponse' :: Int
httpStatus = Int
a} :: GetRepositoryTriggersResponse)

instance Prelude.NFData GetRepositoryTriggersResponse where
  rnf :: GetRepositoryTriggersResponse -> ()
rnf GetRepositoryTriggersResponse' {Int
Maybe [RepositoryTrigger]
Maybe Text
httpStatus :: Int
triggers :: Maybe [RepositoryTrigger]
configurationId :: Maybe Text
$sel:httpStatus:GetRepositoryTriggersResponse' :: GetRepositoryTriggersResponse -> Int
$sel:triggers:GetRepositoryTriggersResponse' :: GetRepositoryTriggersResponse -> Maybe [RepositoryTrigger]
$sel:configurationId:GetRepositoryTriggersResponse' :: GetRepositoryTriggersResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
configurationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [RepositoryTrigger]
triggers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus