{-# 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.Glue.StartTrigger
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Starts an existing trigger. See
-- <https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html Triggering Jobs>
-- for information about how different types of trigger are started.
module Amazonka.Glue.StartTrigger
  ( -- * Creating a Request
    StartTrigger (..),
    newStartTrigger,

    -- * Request Lenses
    startTrigger_name,

    -- * Destructuring the Response
    StartTriggerResponse (..),
    newStartTriggerResponse,

    -- * Response Lenses
    startTriggerResponse_name,
    startTriggerResponse_httpStatus,
  )
where

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

-- | /See:/ 'newStartTrigger' smart constructor.
data StartTrigger = StartTrigger'
  { -- | The name of the trigger to start.
    StartTrigger -> Text
name :: Prelude.Text
  }
  deriving (StartTrigger -> StartTrigger -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartTrigger -> StartTrigger -> Bool
$c/= :: StartTrigger -> StartTrigger -> Bool
== :: StartTrigger -> StartTrigger -> Bool
$c== :: StartTrigger -> StartTrigger -> Bool
Prelude.Eq, ReadPrec [StartTrigger]
ReadPrec StartTrigger
Int -> ReadS StartTrigger
ReadS [StartTrigger]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartTrigger]
$creadListPrec :: ReadPrec [StartTrigger]
readPrec :: ReadPrec StartTrigger
$creadPrec :: ReadPrec StartTrigger
readList :: ReadS [StartTrigger]
$creadList :: ReadS [StartTrigger]
readsPrec :: Int -> ReadS StartTrigger
$creadsPrec :: Int -> ReadS StartTrigger
Prelude.Read, Int -> StartTrigger -> ShowS
[StartTrigger] -> ShowS
StartTrigger -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartTrigger] -> ShowS
$cshowList :: [StartTrigger] -> ShowS
show :: StartTrigger -> String
$cshow :: StartTrigger -> String
showsPrec :: Int -> StartTrigger -> ShowS
$cshowsPrec :: Int -> StartTrigger -> ShowS
Prelude.Show, forall x. Rep StartTrigger x -> StartTrigger
forall x. StartTrigger -> Rep StartTrigger x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StartTrigger x -> StartTrigger
$cfrom :: forall x. StartTrigger -> Rep StartTrigger x
Prelude.Generic)

-- |
-- Create a value of 'StartTrigger' 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:
--
-- 'name', 'startTrigger_name' - The name of the trigger to start.
newStartTrigger ::
  -- | 'name'
  Prelude.Text ->
  StartTrigger
newStartTrigger :: Text -> StartTrigger
newStartTrigger Text
pName_ = StartTrigger' {$sel:name:StartTrigger' :: Text
name = Text
pName_}

-- | The name of the trigger to start.
startTrigger_name :: Lens.Lens' StartTrigger Prelude.Text
startTrigger_name :: Lens' StartTrigger Text
startTrigger_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartTrigger' {Text
name :: Text
$sel:name:StartTrigger' :: StartTrigger -> Text
name} -> Text
name) (\s :: StartTrigger
s@StartTrigger' {} Text
a -> StartTrigger
s {$sel:name:StartTrigger' :: Text
name = Text
a} :: StartTrigger)

instance Core.AWSRequest StartTrigger where
  type AWSResponse StartTrigger = StartTriggerResponse
  request :: (Service -> Service) -> StartTrigger -> Request StartTrigger
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 StartTrigger
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse StartTrigger)))
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 -> Int -> StartTriggerResponse
StartTriggerResponse'
            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
"Name")
            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 StartTrigger where
  hashWithSalt :: Int -> StartTrigger -> Int
hashWithSalt Int
_salt StartTrigger' {Text
name :: Text
$sel:name:StartTrigger' :: StartTrigger -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

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

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

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

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

-- | /See:/ 'newStartTriggerResponse' smart constructor.
data StartTriggerResponse = StartTriggerResponse'
  { -- | The name of the trigger that was started.
    StartTriggerResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    StartTriggerResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (StartTriggerResponse -> StartTriggerResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartTriggerResponse -> StartTriggerResponse -> Bool
$c/= :: StartTriggerResponse -> StartTriggerResponse -> Bool
== :: StartTriggerResponse -> StartTriggerResponse -> Bool
$c== :: StartTriggerResponse -> StartTriggerResponse -> Bool
Prelude.Eq, ReadPrec [StartTriggerResponse]
ReadPrec StartTriggerResponse
Int -> ReadS StartTriggerResponse
ReadS [StartTriggerResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartTriggerResponse]
$creadListPrec :: ReadPrec [StartTriggerResponse]
readPrec :: ReadPrec StartTriggerResponse
$creadPrec :: ReadPrec StartTriggerResponse
readList :: ReadS [StartTriggerResponse]
$creadList :: ReadS [StartTriggerResponse]
readsPrec :: Int -> ReadS StartTriggerResponse
$creadsPrec :: Int -> ReadS StartTriggerResponse
Prelude.Read, Int -> StartTriggerResponse -> ShowS
[StartTriggerResponse] -> ShowS
StartTriggerResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartTriggerResponse] -> ShowS
$cshowList :: [StartTriggerResponse] -> ShowS
show :: StartTriggerResponse -> String
$cshow :: StartTriggerResponse -> String
showsPrec :: Int -> StartTriggerResponse -> ShowS
$cshowsPrec :: Int -> StartTriggerResponse -> ShowS
Prelude.Show, forall x. Rep StartTriggerResponse x -> StartTriggerResponse
forall x. StartTriggerResponse -> Rep StartTriggerResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StartTriggerResponse x -> StartTriggerResponse
$cfrom :: forall x. StartTriggerResponse -> Rep StartTriggerResponse x
Prelude.Generic)

-- |
-- Create a value of 'StartTriggerResponse' 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:
--
-- 'name', 'startTriggerResponse_name' - The name of the trigger that was started.
--
-- 'httpStatus', 'startTriggerResponse_httpStatus' - The response's http status code.
newStartTriggerResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartTriggerResponse
newStartTriggerResponse :: Int -> StartTriggerResponse
newStartTriggerResponse Int
pHttpStatus_ =
  StartTriggerResponse'
    { $sel:name:StartTriggerResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:StartTriggerResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The name of the trigger that was started.
startTriggerResponse_name :: Lens.Lens' StartTriggerResponse (Prelude.Maybe Prelude.Text)
startTriggerResponse_name :: Lens' StartTriggerResponse (Maybe Text)
startTriggerResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartTriggerResponse' {Maybe Text
name :: Maybe Text
$sel:name:StartTriggerResponse' :: StartTriggerResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: StartTriggerResponse
s@StartTriggerResponse' {} Maybe Text
a -> StartTriggerResponse
s {$sel:name:StartTriggerResponse' :: Maybe Text
name = Maybe Text
a} :: StartTriggerResponse)

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

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