{-# 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.Lambda.DeleteLayerVersion
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a version of an
-- <https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html Lambda layer>.
-- Deleted versions can no longer be viewed or added to functions. To avoid
-- breaking functions, a copy of the version remains in Lambda until no
-- functions refer to it.
module Amazonka.Lambda.DeleteLayerVersion
  ( -- * Creating a Request
    DeleteLayerVersion (..),
    newDeleteLayerVersion,

    -- * Request Lenses
    deleteLayerVersion_layerName,
    deleteLayerVersion_versionNumber,

    -- * Destructuring the Response
    DeleteLayerVersionResponse (..),
    newDeleteLayerVersionResponse,
  )
where

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

-- | /See:/ 'newDeleteLayerVersion' smart constructor.
data DeleteLayerVersion = DeleteLayerVersion'
  { -- | The name or Amazon Resource Name (ARN) of the layer.
    DeleteLayerVersion -> Text
layerName :: Prelude.Text,
    -- | The version number.
    DeleteLayerVersion -> Integer
versionNumber :: Prelude.Integer
  }
  deriving (DeleteLayerVersion -> DeleteLayerVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteLayerVersion -> DeleteLayerVersion -> Bool
$c/= :: DeleteLayerVersion -> DeleteLayerVersion -> Bool
== :: DeleteLayerVersion -> DeleteLayerVersion -> Bool
$c== :: DeleteLayerVersion -> DeleteLayerVersion -> Bool
Prelude.Eq, ReadPrec [DeleteLayerVersion]
ReadPrec DeleteLayerVersion
Int -> ReadS DeleteLayerVersion
ReadS [DeleteLayerVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteLayerVersion]
$creadListPrec :: ReadPrec [DeleteLayerVersion]
readPrec :: ReadPrec DeleteLayerVersion
$creadPrec :: ReadPrec DeleteLayerVersion
readList :: ReadS [DeleteLayerVersion]
$creadList :: ReadS [DeleteLayerVersion]
readsPrec :: Int -> ReadS DeleteLayerVersion
$creadsPrec :: Int -> ReadS DeleteLayerVersion
Prelude.Read, Int -> DeleteLayerVersion -> ShowS
[DeleteLayerVersion] -> ShowS
DeleteLayerVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteLayerVersion] -> ShowS
$cshowList :: [DeleteLayerVersion] -> ShowS
show :: DeleteLayerVersion -> String
$cshow :: DeleteLayerVersion -> String
showsPrec :: Int -> DeleteLayerVersion -> ShowS
$cshowsPrec :: Int -> DeleteLayerVersion -> ShowS
Prelude.Show, forall x. Rep DeleteLayerVersion x -> DeleteLayerVersion
forall x. DeleteLayerVersion -> Rep DeleteLayerVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteLayerVersion x -> DeleteLayerVersion
$cfrom :: forall x. DeleteLayerVersion -> Rep DeleteLayerVersion x
Prelude.Generic)

-- |
-- Create a value of 'DeleteLayerVersion' 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:
--
-- 'layerName', 'deleteLayerVersion_layerName' - The name or Amazon Resource Name (ARN) of the layer.
--
-- 'versionNumber', 'deleteLayerVersion_versionNumber' - The version number.
newDeleteLayerVersion ::
  -- | 'layerName'
  Prelude.Text ->
  -- | 'versionNumber'
  Prelude.Integer ->
  DeleteLayerVersion
newDeleteLayerVersion :: Text -> Integer -> DeleteLayerVersion
newDeleteLayerVersion Text
pLayerName_ Integer
pVersionNumber_ =
  DeleteLayerVersion'
    { $sel:layerName:DeleteLayerVersion' :: Text
layerName = Text
pLayerName_,
      $sel:versionNumber:DeleteLayerVersion' :: Integer
versionNumber = Integer
pVersionNumber_
    }

-- | The name or Amazon Resource Name (ARN) of the layer.
deleteLayerVersion_layerName :: Lens.Lens' DeleteLayerVersion Prelude.Text
deleteLayerVersion_layerName :: Lens' DeleteLayerVersion Text
deleteLayerVersion_layerName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteLayerVersion' {Text
layerName :: Text
$sel:layerName:DeleteLayerVersion' :: DeleteLayerVersion -> Text
layerName} -> Text
layerName) (\s :: DeleteLayerVersion
s@DeleteLayerVersion' {} Text
a -> DeleteLayerVersion
s {$sel:layerName:DeleteLayerVersion' :: Text
layerName = Text
a} :: DeleteLayerVersion)

-- | The version number.
deleteLayerVersion_versionNumber :: Lens.Lens' DeleteLayerVersion Prelude.Integer
deleteLayerVersion_versionNumber :: Lens' DeleteLayerVersion Integer
deleteLayerVersion_versionNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteLayerVersion' {Integer
versionNumber :: Integer
$sel:versionNumber:DeleteLayerVersion' :: DeleteLayerVersion -> Integer
versionNumber} -> Integer
versionNumber) (\s :: DeleteLayerVersion
s@DeleteLayerVersion' {} Integer
a -> DeleteLayerVersion
s {$sel:versionNumber:DeleteLayerVersion' :: Integer
versionNumber = Integer
a} :: DeleteLayerVersion)

instance Core.AWSRequest DeleteLayerVersion where
  type
    AWSResponse DeleteLayerVersion =
      DeleteLayerVersionResponse
  request :: (Service -> Service)
-> DeleteLayerVersion -> Request DeleteLayerVersion
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteLayerVersion
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteLayerVersion)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteLayerVersionResponse
DeleteLayerVersionResponse'

instance Prelude.Hashable DeleteLayerVersion where
  hashWithSalt :: Int -> DeleteLayerVersion -> Int
hashWithSalt Int
_salt DeleteLayerVersion' {Integer
Text
versionNumber :: Integer
layerName :: Text
$sel:versionNumber:DeleteLayerVersion' :: DeleteLayerVersion -> Integer
$sel:layerName:DeleteLayerVersion' :: DeleteLayerVersion -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
layerName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Integer
versionNumber

instance Prelude.NFData DeleteLayerVersion where
  rnf :: DeleteLayerVersion -> ()
rnf DeleteLayerVersion' {Integer
Text
versionNumber :: Integer
layerName :: Text
$sel:versionNumber:DeleteLayerVersion' :: DeleteLayerVersion -> Integer
$sel:layerName:DeleteLayerVersion' :: DeleteLayerVersion -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
layerName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Integer
versionNumber

instance Data.ToHeaders DeleteLayerVersion where
  toHeaders :: DeleteLayerVersion -> [Header]
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DeleteLayerVersion where
  toPath :: DeleteLayerVersion -> ByteString
toPath DeleteLayerVersion' {Integer
Text
versionNumber :: Integer
layerName :: Text
$sel:versionNumber:DeleteLayerVersion' :: DeleteLayerVersion -> Integer
$sel:layerName:DeleteLayerVersion' :: DeleteLayerVersion -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2018-10-31/layers/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
layerName,
        ByteString
"/versions/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Integer
versionNumber
      ]

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

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

-- |
-- Create a value of 'DeleteLayerVersionResponse' 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.
newDeleteLayerVersionResponse ::
  DeleteLayerVersionResponse
newDeleteLayerVersionResponse :: DeleteLayerVersionResponse
newDeleteLayerVersionResponse =
  DeleteLayerVersionResponse
DeleteLayerVersionResponse'

instance Prelude.NFData DeleteLayerVersionResponse where
  rnf :: DeleteLayerVersionResponse -> ()
rnf DeleteLayerVersionResponse
_ = ()