{-# 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.GetLogLevelsByResourceTypes
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns current default log levels or log levels by resource types.
-- Based on resource types, log levels can be for wireless device log
-- options or wireless gateway log options.
module Amazonka.IoTWireless.GetLogLevelsByResourceTypes
  ( -- * Creating a Request
    GetLogLevelsByResourceTypes (..),
    newGetLogLevelsByResourceTypes,

    -- * Destructuring the Response
    GetLogLevelsByResourceTypesResponse (..),
    newGetLogLevelsByResourceTypesResponse,

    -- * Response Lenses
    getLogLevelsByResourceTypesResponse_defaultLogLevel,
    getLogLevelsByResourceTypesResponse_wirelessDeviceLogOptions,
    getLogLevelsByResourceTypesResponse_wirelessGatewayLogOptions,
    getLogLevelsByResourceTypesResponse_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:/ 'newGetLogLevelsByResourceTypes' smart constructor.
data GetLogLevelsByResourceTypes = GetLogLevelsByResourceTypes'
  {
  }
  deriving (GetLogLevelsByResourceTypes -> GetLogLevelsByResourceTypes -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetLogLevelsByResourceTypes -> GetLogLevelsByResourceTypes -> Bool
$c/= :: GetLogLevelsByResourceTypes -> GetLogLevelsByResourceTypes -> Bool
== :: GetLogLevelsByResourceTypes -> GetLogLevelsByResourceTypes -> Bool
$c== :: GetLogLevelsByResourceTypes -> GetLogLevelsByResourceTypes -> Bool
Prelude.Eq, ReadPrec [GetLogLevelsByResourceTypes]
ReadPrec GetLogLevelsByResourceTypes
Int -> ReadS GetLogLevelsByResourceTypes
ReadS [GetLogLevelsByResourceTypes]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetLogLevelsByResourceTypes]
$creadListPrec :: ReadPrec [GetLogLevelsByResourceTypes]
readPrec :: ReadPrec GetLogLevelsByResourceTypes
$creadPrec :: ReadPrec GetLogLevelsByResourceTypes
readList :: ReadS [GetLogLevelsByResourceTypes]
$creadList :: ReadS [GetLogLevelsByResourceTypes]
readsPrec :: Int -> ReadS GetLogLevelsByResourceTypes
$creadsPrec :: Int -> ReadS GetLogLevelsByResourceTypes
Prelude.Read, Int -> GetLogLevelsByResourceTypes -> ShowS
[GetLogLevelsByResourceTypes] -> ShowS
GetLogLevelsByResourceTypes -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetLogLevelsByResourceTypes] -> ShowS
$cshowList :: [GetLogLevelsByResourceTypes] -> ShowS
show :: GetLogLevelsByResourceTypes -> String
$cshow :: GetLogLevelsByResourceTypes -> String
showsPrec :: Int -> GetLogLevelsByResourceTypes -> ShowS
$cshowsPrec :: Int -> GetLogLevelsByResourceTypes -> ShowS
Prelude.Show, forall x.
Rep GetLogLevelsByResourceTypes x -> GetLogLevelsByResourceTypes
forall x.
GetLogLevelsByResourceTypes -> Rep GetLogLevelsByResourceTypes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetLogLevelsByResourceTypes x -> GetLogLevelsByResourceTypes
$cfrom :: forall x.
GetLogLevelsByResourceTypes -> Rep GetLogLevelsByResourceTypes x
Prelude.Generic)

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

instance Core.AWSRequest GetLogLevelsByResourceTypes where
  type
    AWSResponse GetLogLevelsByResourceTypes =
      GetLogLevelsByResourceTypesResponse
  request :: (Service -> Service)
-> GetLogLevelsByResourceTypes
-> Request GetLogLevelsByResourceTypes
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetLogLevelsByResourceTypes
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetLogLevelsByResourceTypes)))
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 LogLevel
-> Maybe [WirelessDeviceLogOption]
-> Maybe [WirelessGatewayLogOption]
-> Int
-> GetLogLevelsByResourceTypesResponse
GetLogLevelsByResourceTypesResponse'
            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
"DefaultLogLevel")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"WirelessDeviceLogOptions"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"WirelessGatewayLogOptions"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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 GetLogLevelsByResourceTypes where
  hashWithSalt :: Int -> GetLogLevelsByResourceTypes -> Int
hashWithSalt Int
_salt GetLogLevelsByResourceTypes
_ =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ()

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

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

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

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

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

-- |
-- Create a value of 'GetLogLevelsByResourceTypesResponse' 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:
--
-- 'defaultLogLevel', 'getLogLevelsByResourceTypesResponse_defaultLogLevel' - Undocumented member.
--
-- 'wirelessDeviceLogOptions', 'getLogLevelsByResourceTypesResponse_wirelessDeviceLogOptions' - Undocumented member.
--
-- 'wirelessGatewayLogOptions', 'getLogLevelsByResourceTypesResponse_wirelessGatewayLogOptions' - Undocumented member.
--
-- 'httpStatus', 'getLogLevelsByResourceTypesResponse_httpStatus' - The response's http status code.
newGetLogLevelsByResourceTypesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetLogLevelsByResourceTypesResponse
newGetLogLevelsByResourceTypesResponse :: Int -> GetLogLevelsByResourceTypesResponse
newGetLogLevelsByResourceTypesResponse Int
pHttpStatus_ =
  GetLogLevelsByResourceTypesResponse'
    { $sel:defaultLogLevel:GetLogLevelsByResourceTypesResponse' :: Maybe LogLevel
defaultLogLevel =
        forall a. Maybe a
Prelude.Nothing,
      $sel:wirelessDeviceLogOptions:GetLogLevelsByResourceTypesResponse' :: Maybe [WirelessDeviceLogOption]
wirelessDeviceLogOptions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:wirelessGatewayLogOptions:GetLogLevelsByResourceTypesResponse' :: Maybe [WirelessGatewayLogOption]
wirelessGatewayLogOptions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetLogLevelsByResourceTypesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
getLogLevelsByResourceTypesResponse_defaultLogLevel :: Lens.Lens' GetLogLevelsByResourceTypesResponse (Prelude.Maybe LogLevel)
getLogLevelsByResourceTypesResponse_defaultLogLevel :: Lens' GetLogLevelsByResourceTypesResponse (Maybe LogLevel)
getLogLevelsByResourceTypesResponse_defaultLogLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLogLevelsByResourceTypesResponse' {Maybe LogLevel
defaultLogLevel :: Maybe LogLevel
$sel:defaultLogLevel:GetLogLevelsByResourceTypesResponse' :: GetLogLevelsByResourceTypesResponse -> Maybe LogLevel
defaultLogLevel} -> Maybe LogLevel
defaultLogLevel) (\s :: GetLogLevelsByResourceTypesResponse
s@GetLogLevelsByResourceTypesResponse' {} Maybe LogLevel
a -> GetLogLevelsByResourceTypesResponse
s {$sel:defaultLogLevel:GetLogLevelsByResourceTypesResponse' :: Maybe LogLevel
defaultLogLevel = Maybe LogLevel
a} :: GetLogLevelsByResourceTypesResponse)

-- | Undocumented member.
getLogLevelsByResourceTypesResponse_wirelessDeviceLogOptions :: Lens.Lens' GetLogLevelsByResourceTypesResponse (Prelude.Maybe [WirelessDeviceLogOption])
getLogLevelsByResourceTypesResponse_wirelessDeviceLogOptions :: Lens'
  GetLogLevelsByResourceTypesResponse
  (Maybe [WirelessDeviceLogOption])
getLogLevelsByResourceTypesResponse_wirelessDeviceLogOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLogLevelsByResourceTypesResponse' {Maybe [WirelessDeviceLogOption]
wirelessDeviceLogOptions :: Maybe [WirelessDeviceLogOption]
$sel:wirelessDeviceLogOptions:GetLogLevelsByResourceTypesResponse' :: GetLogLevelsByResourceTypesResponse
-> Maybe [WirelessDeviceLogOption]
wirelessDeviceLogOptions} -> Maybe [WirelessDeviceLogOption]
wirelessDeviceLogOptions) (\s :: GetLogLevelsByResourceTypesResponse
s@GetLogLevelsByResourceTypesResponse' {} Maybe [WirelessDeviceLogOption]
a -> GetLogLevelsByResourceTypesResponse
s {$sel:wirelessDeviceLogOptions:GetLogLevelsByResourceTypesResponse' :: Maybe [WirelessDeviceLogOption]
wirelessDeviceLogOptions = Maybe [WirelessDeviceLogOption]
a} :: GetLogLevelsByResourceTypesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Undocumented member.
getLogLevelsByResourceTypesResponse_wirelessGatewayLogOptions :: Lens.Lens' GetLogLevelsByResourceTypesResponse (Prelude.Maybe [WirelessGatewayLogOption])
getLogLevelsByResourceTypesResponse_wirelessGatewayLogOptions :: Lens'
  GetLogLevelsByResourceTypesResponse
  (Maybe [WirelessGatewayLogOption])
getLogLevelsByResourceTypesResponse_wirelessGatewayLogOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetLogLevelsByResourceTypesResponse' {Maybe [WirelessGatewayLogOption]
wirelessGatewayLogOptions :: Maybe [WirelessGatewayLogOption]
$sel:wirelessGatewayLogOptions:GetLogLevelsByResourceTypesResponse' :: GetLogLevelsByResourceTypesResponse
-> Maybe [WirelessGatewayLogOption]
wirelessGatewayLogOptions} -> Maybe [WirelessGatewayLogOption]
wirelessGatewayLogOptions) (\s :: GetLogLevelsByResourceTypesResponse
s@GetLogLevelsByResourceTypesResponse' {} Maybe [WirelessGatewayLogOption]
a -> GetLogLevelsByResourceTypesResponse
s {$sel:wirelessGatewayLogOptions:GetLogLevelsByResourceTypesResponse' :: Maybe [WirelessGatewayLogOption]
wirelessGatewayLogOptions = Maybe [WirelessGatewayLogOption]
a} :: GetLogLevelsByResourceTypesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance
  Prelude.NFData
    GetLogLevelsByResourceTypesResponse
  where
  rnf :: GetLogLevelsByResourceTypesResponse -> ()
rnf GetLogLevelsByResourceTypesResponse' {Int
Maybe [WirelessDeviceLogOption]
Maybe [WirelessGatewayLogOption]
Maybe LogLevel
httpStatus :: Int
wirelessGatewayLogOptions :: Maybe [WirelessGatewayLogOption]
wirelessDeviceLogOptions :: Maybe [WirelessDeviceLogOption]
defaultLogLevel :: Maybe LogLevel
$sel:httpStatus:GetLogLevelsByResourceTypesResponse' :: GetLogLevelsByResourceTypesResponse -> Int
$sel:wirelessGatewayLogOptions:GetLogLevelsByResourceTypesResponse' :: GetLogLevelsByResourceTypesResponse
-> Maybe [WirelessGatewayLogOption]
$sel:wirelessDeviceLogOptions:GetLogLevelsByResourceTypesResponse' :: GetLogLevelsByResourceTypesResponse
-> Maybe [WirelessDeviceLogOption]
$sel:defaultLogLevel:GetLogLevelsByResourceTypesResponse' :: GetLogLevelsByResourceTypesResponse -> Maybe LogLevel
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe LogLevel
defaultLogLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [WirelessDeviceLogOption]
wirelessDeviceLogOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [WirelessGatewayLogOption]
wirelessGatewayLogOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus