{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric      #-}
{-# LANGUAGE OverloadedStrings  #-}
{-# LANGUAGE RecordWildCards    #-}
{-# LANGUAGE TypeFamilies       #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.IoT.DescribeAuthorizer
    (
    
      describeAuthorizer
    , DescribeAuthorizer
    
    , daAuthorizerName
    
    , describeAuthorizerResponse
    , DescribeAuthorizerResponse
    
    , darsAuthorizerDescription
    , darsResponseStatus
    ) where
import Network.AWS.IoT.Types
import Network.AWS.IoT.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
newtype DescribeAuthorizer = DescribeAuthorizer'
  { _daAuthorizerName :: Text
  } deriving (Eq, Read, Show, Data, Typeable, Generic)
describeAuthorizer
    :: Text 
    -> DescribeAuthorizer
describeAuthorizer pAuthorizerName_ =
  DescribeAuthorizer' {_daAuthorizerName = pAuthorizerName_}
daAuthorizerName :: Lens' DescribeAuthorizer Text
daAuthorizerName = lens _daAuthorizerName (\ s a -> s{_daAuthorizerName = a})
instance AWSRequest DescribeAuthorizer where
        type Rs DescribeAuthorizer =
             DescribeAuthorizerResponse
        request = get ioT
        response
          = receiveJSON
              (\ s h x ->
                 DescribeAuthorizerResponse' <$>
                   (x .?> "authorizerDescription") <*>
                     (pure (fromEnum s)))
instance Hashable DescribeAuthorizer where
instance NFData DescribeAuthorizer where
instance ToHeaders DescribeAuthorizer where
        toHeaders = const mempty
instance ToPath DescribeAuthorizer where
        toPath DescribeAuthorizer'{..}
          = mconcat ["/authorizer/", toBS _daAuthorizerName]
instance ToQuery DescribeAuthorizer where
        toQuery = const mempty
data DescribeAuthorizerResponse = DescribeAuthorizerResponse'
  { _darsAuthorizerDescription :: !(Maybe AuthorizerDescription)
  , _darsResponseStatus        :: !Int
  } deriving (Eq, Read, Show, Data, Typeable, Generic)
describeAuthorizerResponse
    :: Int 
    -> DescribeAuthorizerResponse
describeAuthorizerResponse pResponseStatus_ =
  DescribeAuthorizerResponse'
    { _darsAuthorizerDescription = Nothing
    , _darsResponseStatus = pResponseStatus_
    }
darsAuthorizerDescription :: Lens' DescribeAuthorizerResponse (Maybe AuthorizerDescription)
darsAuthorizerDescription = lens _darsAuthorizerDescription (\ s a -> s{_darsAuthorizerDescription = a})
darsResponseStatus :: Lens' DescribeAuthorizerResponse Int
darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a})
instance NFData DescribeAuthorizerResponse where