{-# 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.IoTRoboRunner.DeleteSite
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Grants permission to delete a site
module Amazonka.IoTRoboRunner.DeleteSite
  ( -- * Creating a Request
    DeleteSite (..),
    newDeleteSite,

    -- * Request Lenses
    deleteSite_id,

    -- * Destructuring the Response
    DeleteSiteResponse (..),
    newDeleteSiteResponse,

    -- * Response Lenses
    deleteSiteResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'DeleteSite' 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:
--
-- 'id', 'deleteSite_id' - Undocumented member.
newDeleteSite ::
  -- | 'id'
  Prelude.Text ->
  DeleteSite
newDeleteSite :: Text -> DeleteSite
newDeleteSite Text
pId_ = DeleteSite' {$sel:id:DeleteSite' :: Text
id = Text
pId_}

-- | Undocumented member.
deleteSite_id :: Lens.Lens' DeleteSite Prelude.Text
deleteSite_id :: Lens' DeleteSite Text
deleteSite_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSite' {Text
id :: Text
$sel:id:DeleteSite' :: DeleteSite -> Text
id} -> Text
id) (\s :: DeleteSite
s@DeleteSite' {} Text
a -> DeleteSite
s {$sel:id:DeleteSite' :: Text
id = Text
a} :: DeleteSite)

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

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

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

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

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

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

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

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

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