{-# 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.IoTWireless.ResetResourceLogLevel
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Removes the log-level override, if any, for a specific resource-ID and
-- resource-type. It can be used for a wireless device or a wireless
-- gateway.
module Amazonka.IoTWireless.ResetResourceLogLevel
  ( -- * Creating a Request
    ResetResourceLogLevel (..),
    newResetResourceLogLevel,

    -- * Request Lenses
    resetResourceLogLevel_resourceIdentifier,
    resetResourceLogLevel_resourceType,

    -- * Destructuring the Response
    ResetResourceLogLevelResponse (..),
    newResetResourceLogLevelResponse,

    -- * Response Lenses
    resetResourceLogLevelResponse_httpStatus,
  )
where

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

-- | /See:/ 'newResetResourceLogLevel' smart constructor.
data ResetResourceLogLevel = ResetResourceLogLevel'
  { ResetResourceLogLevel -> Text
resourceIdentifier :: Prelude.Text,
    -- | The type of the resource, which can be @WirelessDevice@ or
    -- @WirelessGateway@.
    ResetResourceLogLevel -> Text
resourceType :: Prelude.Text
  }
  deriving (ResetResourceLogLevel -> ResetResourceLogLevel -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ResetResourceLogLevel -> ResetResourceLogLevel -> Bool
$c/= :: ResetResourceLogLevel -> ResetResourceLogLevel -> Bool
== :: ResetResourceLogLevel -> ResetResourceLogLevel -> Bool
$c== :: ResetResourceLogLevel -> ResetResourceLogLevel -> Bool
Prelude.Eq, ReadPrec [ResetResourceLogLevel]
ReadPrec ResetResourceLogLevel
Int -> ReadS ResetResourceLogLevel
ReadS [ResetResourceLogLevel]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ResetResourceLogLevel]
$creadListPrec :: ReadPrec [ResetResourceLogLevel]
readPrec :: ReadPrec ResetResourceLogLevel
$creadPrec :: ReadPrec ResetResourceLogLevel
readList :: ReadS [ResetResourceLogLevel]
$creadList :: ReadS [ResetResourceLogLevel]
readsPrec :: Int -> ReadS ResetResourceLogLevel
$creadsPrec :: Int -> ReadS ResetResourceLogLevel
Prelude.Read, Int -> ResetResourceLogLevel -> ShowS
[ResetResourceLogLevel] -> ShowS
ResetResourceLogLevel -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ResetResourceLogLevel] -> ShowS
$cshowList :: [ResetResourceLogLevel] -> ShowS
show :: ResetResourceLogLevel -> String
$cshow :: ResetResourceLogLevel -> String
showsPrec :: Int -> ResetResourceLogLevel -> ShowS
$cshowsPrec :: Int -> ResetResourceLogLevel -> ShowS
Prelude.Show, forall x. Rep ResetResourceLogLevel x -> ResetResourceLogLevel
forall x. ResetResourceLogLevel -> Rep ResetResourceLogLevel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ResetResourceLogLevel x -> ResetResourceLogLevel
$cfrom :: forall x. ResetResourceLogLevel -> Rep ResetResourceLogLevel x
Prelude.Generic)

-- |
-- Create a value of 'ResetResourceLogLevel' 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:
--
-- 'resourceIdentifier', 'resetResourceLogLevel_resourceIdentifier' - Undocumented member.
--
-- 'resourceType', 'resetResourceLogLevel_resourceType' - The type of the resource, which can be @WirelessDevice@ or
-- @WirelessGateway@.
newResetResourceLogLevel ::
  -- | 'resourceIdentifier'
  Prelude.Text ->
  -- | 'resourceType'
  Prelude.Text ->
  ResetResourceLogLevel
newResetResourceLogLevel :: Text -> Text -> ResetResourceLogLevel
newResetResourceLogLevel
  Text
pResourceIdentifier_
  Text
pResourceType_ =
    ResetResourceLogLevel'
      { $sel:resourceIdentifier:ResetResourceLogLevel' :: Text
resourceIdentifier =
          Text
pResourceIdentifier_,
        $sel:resourceType:ResetResourceLogLevel' :: Text
resourceType = Text
pResourceType_
      }

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

-- | The type of the resource, which can be @WirelessDevice@ or
-- @WirelessGateway@.
resetResourceLogLevel_resourceType :: Lens.Lens' ResetResourceLogLevel Prelude.Text
resetResourceLogLevel_resourceType :: Lens' ResetResourceLogLevel Text
resetResourceLogLevel_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResetResourceLogLevel' {Text
resourceType :: Text
$sel:resourceType:ResetResourceLogLevel' :: ResetResourceLogLevel -> Text
resourceType} -> Text
resourceType) (\s :: ResetResourceLogLevel
s@ResetResourceLogLevel' {} Text
a -> ResetResourceLogLevel
s {$sel:resourceType:ResetResourceLogLevel' :: Text
resourceType = Text
a} :: ResetResourceLogLevel)

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

instance Prelude.NFData ResetResourceLogLevel where
  rnf :: ResetResourceLogLevel -> ()
rnf ResetResourceLogLevel' {Text
resourceType :: Text
resourceIdentifier :: Text
$sel:resourceType:ResetResourceLogLevel' :: ResetResourceLogLevel -> Text
$sel:resourceIdentifier:ResetResourceLogLevel' :: ResetResourceLogLevel -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
resourceIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
resourceType

instance Data.ToHeaders ResetResourceLogLevel where
  toHeaders :: ResetResourceLogLevel -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath ResetResourceLogLevel where
  toPath :: ResetResourceLogLevel -> ByteString
toPath ResetResourceLogLevel' {Text
resourceType :: Text
resourceIdentifier :: Text
$sel:resourceType:ResetResourceLogLevel' :: ResetResourceLogLevel -> Text
$sel:resourceIdentifier:ResetResourceLogLevel' :: ResetResourceLogLevel -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/log-levels/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
resourceIdentifier]

instance Data.ToQuery ResetResourceLogLevel where
  toQuery :: ResetResourceLogLevel -> QueryString
toQuery ResetResourceLogLevel' {Text
resourceType :: Text
resourceIdentifier :: Text
$sel:resourceType:ResetResourceLogLevel' :: ResetResourceLogLevel -> Text
$sel:resourceIdentifier:ResetResourceLogLevel' :: ResetResourceLogLevel -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"resourceType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
resourceType]

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

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

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

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