{-# 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.Greengrass.UpdateConnectorDefinition
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a connector definition.
module Amazonka.Greengrass.UpdateConnectorDefinition
  ( -- * Creating a Request
    UpdateConnectorDefinition (..),
    newUpdateConnectorDefinition,

    -- * Request Lenses
    updateConnectorDefinition_name,
    updateConnectorDefinition_connectorDefinitionId,

    -- * Destructuring the Response
    UpdateConnectorDefinitionResponse (..),
    newUpdateConnectorDefinitionResponse,

    -- * Response Lenses
    updateConnectorDefinitionResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'UpdateConnectorDefinition' 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', 'updateConnectorDefinition_name' - The name of the definition.
--
-- 'connectorDefinitionId', 'updateConnectorDefinition_connectorDefinitionId' - The ID of the connector definition.
newUpdateConnectorDefinition ::
  -- | 'connectorDefinitionId'
  Prelude.Text ->
  UpdateConnectorDefinition
newUpdateConnectorDefinition :: Text -> UpdateConnectorDefinition
newUpdateConnectorDefinition Text
pConnectorDefinitionId_ =
  UpdateConnectorDefinition'
    { $sel:name:UpdateConnectorDefinition' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:connectorDefinitionId:UpdateConnectorDefinition' :: Text
connectorDefinitionId = Text
pConnectorDefinitionId_
    }

-- | The name of the definition.
updateConnectorDefinition_name :: Lens.Lens' UpdateConnectorDefinition (Prelude.Maybe Prelude.Text)
updateConnectorDefinition_name :: Lens' UpdateConnectorDefinition (Maybe Text)
updateConnectorDefinition_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateConnectorDefinition' {Maybe Text
name :: Maybe Text
$sel:name:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Maybe Text
name} -> Maybe Text
name) (\s :: UpdateConnectorDefinition
s@UpdateConnectorDefinition' {} Maybe Text
a -> UpdateConnectorDefinition
s {$sel:name:UpdateConnectorDefinition' :: Maybe Text
name = Maybe Text
a} :: UpdateConnectorDefinition)

-- | The ID of the connector definition.
updateConnectorDefinition_connectorDefinitionId :: Lens.Lens' UpdateConnectorDefinition Prelude.Text
updateConnectorDefinition_connectorDefinitionId :: Lens' UpdateConnectorDefinition Text
updateConnectorDefinition_connectorDefinitionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateConnectorDefinition' {Text
connectorDefinitionId :: Text
$sel:connectorDefinitionId:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Text
connectorDefinitionId} -> Text
connectorDefinitionId) (\s :: UpdateConnectorDefinition
s@UpdateConnectorDefinition' {} Text
a -> UpdateConnectorDefinition
s {$sel:connectorDefinitionId:UpdateConnectorDefinition' :: Text
connectorDefinitionId = Text
a} :: UpdateConnectorDefinition)

instance Core.AWSRequest UpdateConnectorDefinition where
  type
    AWSResponse UpdateConnectorDefinition =
      UpdateConnectorDefinitionResponse
  request :: (Service -> Service)
-> UpdateConnectorDefinition -> Request UpdateConnectorDefinition
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateConnectorDefinition
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateConnectorDefinition)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> UpdateConnectorDefinitionResponse
UpdateConnectorDefinitionResponse'
            forall (f :: * -> *) a b. Functor 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 UpdateConnectorDefinition where
  hashWithSalt :: Int -> UpdateConnectorDefinition -> Int
hashWithSalt Int
_salt UpdateConnectorDefinition' {Maybe Text
Text
connectorDefinitionId :: Text
name :: Maybe Text
$sel:connectorDefinitionId:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Text
$sel:name:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
connectorDefinitionId

instance Prelude.NFData UpdateConnectorDefinition where
  rnf :: UpdateConnectorDefinition -> ()
rnf UpdateConnectorDefinition' {Maybe Text
Text
connectorDefinitionId :: Text
name :: Maybe Text
$sel:connectorDefinitionId:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Text
$sel:name:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> 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 Text
connectorDefinitionId

instance Data.ToHeaders UpdateConnectorDefinition where
  toHeaders :: UpdateConnectorDefinition -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateConnectorDefinition where
  toJSON :: UpdateConnectorDefinition -> Value
toJSON UpdateConnectorDefinition' {Maybe Text
Text
connectorDefinitionId :: Text
name :: Maybe Text
$sel:connectorDefinitionId:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Text
$sel:name:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [(Key
"Name" 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
name]
      )

instance Data.ToPath UpdateConnectorDefinition where
  toPath :: UpdateConnectorDefinition -> ByteString
toPath UpdateConnectorDefinition' {Maybe Text
Text
connectorDefinitionId :: Text
name :: Maybe Text
$sel:connectorDefinitionId:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Text
$sel:name:UpdateConnectorDefinition' :: UpdateConnectorDefinition -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/greengrass/definition/connectors/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
connectorDefinitionId
      ]

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

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

-- |
-- Create a value of 'UpdateConnectorDefinitionResponse' 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:
--
-- 'httpStatus', 'updateConnectorDefinitionResponse_httpStatus' - The response's http status code.
newUpdateConnectorDefinitionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateConnectorDefinitionResponse
newUpdateConnectorDefinitionResponse :: Int -> UpdateConnectorDefinitionResponse
newUpdateConnectorDefinitionResponse Int
pHttpStatus_ =
  UpdateConnectorDefinitionResponse'
    { $sel:httpStatus:UpdateConnectorDefinitionResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    UpdateConnectorDefinitionResponse
  where
  rnf :: UpdateConnectorDefinitionResponse -> ()
rnf UpdateConnectorDefinitionResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateConnectorDefinitionResponse' :: UpdateConnectorDefinitionResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus