{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies          #-}
module Aws.Iam.Commands.DeleteUser
    ( DeleteUser(..)
    , DeleteUserResponse(..)
    ) where

import           Aws.Core
import           Aws.Iam.Core
import           Aws.Iam.Internal
import           Data.Text          (Text)
import           Data.Typeable

-- | Deletes the specified user.
--
-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUser.html>
data DeleteUser = DeleteUser Text
    deriving (DeleteUser -> DeleteUser -> Bool
(DeleteUser -> DeleteUser -> Bool)
-> (DeleteUser -> DeleteUser -> Bool) -> Eq DeleteUser
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeleteUser -> DeleteUser -> Bool
== :: DeleteUser -> DeleteUser -> Bool
$c/= :: DeleteUser -> DeleteUser -> Bool
/= :: DeleteUser -> DeleteUser -> Bool
Eq, Eq DeleteUser
Eq DeleteUser =>
(DeleteUser -> DeleteUser -> Ordering)
-> (DeleteUser -> DeleteUser -> Bool)
-> (DeleteUser -> DeleteUser -> Bool)
-> (DeleteUser -> DeleteUser -> Bool)
-> (DeleteUser -> DeleteUser -> Bool)
-> (DeleteUser -> DeleteUser -> DeleteUser)
-> (DeleteUser -> DeleteUser -> DeleteUser)
-> Ord DeleteUser
DeleteUser -> DeleteUser -> Bool
DeleteUser -> DeleteUser -> Ordering
DeleteUser -> DeleteUser -> DeleteUser
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: DeleteUser -> DeleteUser -> Ordering
compare :: DeleteUser -> DeleteUser -> Ordering
$c< :: DeleteUser -> DeleteUser -> Bool
< :: DeleteUser -> DeleteUser -> Bool
$c<= :: DeleteUser -> DeleteUser -> Bool
<= :: DeleteUser -> DeleteUser -> Bool
$c> :: DeleteUser -> DeleteUser -> Bool
> :: DeleteUser -> DeleteUser -> Bool
$c>= :: DeleteUser -> DeleteUser -> Bool
>= :: DeleteUser -> DeleteUser -> Bool
$cmax :: DeleteUser -> DeleteUser -> DeleteUser
max :: DeleteUser -> DeleteUser -> DeleteUser
$cmin :: DeleteUser -> DeleteUser -> DeleteUser
min :: DeleteUser -> DeleteUser -> DeleteUser
Ord, Int -> DeleteUser -> ShowS
[DeleteUser] -> ShowS
DeleteUser -> String
(Int -> DeleteUser -> ShowS)
-> (DeleteUser -> String)
-> ([DeleteUser] -> ShowS)
-> Show DeleteUser
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeleteUser -> ShowS
showsPrec :: Int -> DeleteUser -> ShowS
$cshow :: DeleteUser -> String
show :: DeleteUser -> String
$cshowList :: [DeleteUser] -> ShowS
showList :: [DeleteUser] -> ShowS
Show, Typeable)

instance SignQuery DeleteUser where
    type ServiceConfiguration DeleteUser = IamConfiguration
    signQuery :: forall queryType.
DeleteUser
-> ServiceConfiguration DeleteUser queryType
-> SignatureData
-> SignedQuery
signQuery (DeleteUser Text
userName)
        = ByteString
-> [(ByteString, Text)]
-> IamConfiguration queryType
-> SignatureData
-> SignedQuery
forall qt.
ByteString
-> [(ByteString, Text)]
-> IamConfiguration qt
-> SignatureData
-> SignedQuery
iamAction ByteString
"DeleteUser" [(ByteString
"UserName", Text
userName)]

data DeleteUserResponse = DeleteUserResponse
    deriving (DeleteUserResponse -> DeleteUserResponse -> Bool
(DeleteUserResponse -> DeleteUserResponse -> Bool)
-> (DeleteUserResponse -> DeleteUserResponse -> Bool)
-> Eq DeleteUserResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeleteUserResponse -> DeleteUserResponse -> Bool
== :: DeleteUserResponse -> DeleteUserResponse -> Bool
$c/= :: DeleteUserResponse -> DeleteUserResponse -> Bool
/= :: DeleteUserResponse -> DeleteUserResponse -> Bool
Eq, Eq DeleteUserResponse
Eq DeleteUserResponse =>
(DeleteUserResponse -> DeleteUserResponse -> Ordering)
-> (DeleteUserResponse -> DeleteUserResponse -> Bool)
-> (DeleteUserResponse -> DeleteUserResponse -> Bool)
-> (DeleteUserResponse -> DeleteUserResponse -> Bool)
-> (DeleteUserResponse -> DeleteUserResponse -> Bool)
-> (DeleteUserResponse -> DeleteUserResponse -> DeleteUserResponse)
-> (DeleteUserResponse -> DeleteUserResponse -> DeleteUserResponse)
-> Ord DeleteUserResponse
DeleteUserResponse -> DeleteUserResponse -> Bool
DeleteUserResponse -> DeleteUserResponse -> Ordering
DeleteUserResponse -> DeleteUserResponse -> DeleteUserResponse
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: DeleteUserResponse -> DeleteUserResponse -> Ordering
compare :: DeleteUserResponse -> DeleteUserResponse -> Ordering
$c< :: DeleteUserResponse -> DeleteUserResponse -> Bool
< :: DeleteUserResponse -> DeleteUserResponse -> Bool
$c<= :: DeleteUserResponse -> DeleteUserResponse -> Bool
<= :: DeleteUserResponse -> DeleteUserResponse -> Bool
$c> :: DeleteUserResponse -> DeleteUserResponse -> Bool
> :: DeleteUserResponse -> DeleteUserResponse -> Bool
$c>= :: DeleteUserResponse -> DeleteUserResponse -> Bool
>= :: DeleteUserResponse -> DeleteUserResponse -> Bool
$cmax :: DeleteUserResponse -> DeleteUserResponse -> DeleteUserResponse
max :: DeleteUserResponse -> DeleteUserResponse -> DeleteUserResponse
$cmin :: DeleteUserResponse -> DeleteUserResponse -> DeleteUserResponse
min :: DeleteUserResponse -> DeleteUserResponse -> DeleteUserResponse
Ord, Int -> DeleteUserResponse -> ShowS
[DeleteUserResponse] -> ShowS
DeleteUserResponse -> String
(Int -> DeleteUserResponse -> ShowS)
-> (DeleteUserResponse -> String)
-> ([DeleteUserResponse] -> ShowS)
-> Show DeleteUserResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeleteUserResponse -> ShowS
showsPrec :: Int -> DeleteUserResponse -> ShowS
$cshow :: DeleteUserResponse -> String
show :: DeleteUserResponse -> String
$cshowList :: [DeleteUserResponse] -> ShowS
showList :: [DeleteUserResponse] -> ShowS
Show, Typeable)

instance ResponseConsumer DeleteUser DeleteUserResponse where
    type ResponseMetadata DeleteUserResponse = IamMetadata
    responseConsumer :: Request
-> DeleteUser
-> IORef (ResponseMetadata DeleteUserResponse)
-> HTTPResponseConsumer DeleteUserResponse
responseConsumer Request
_ DeleteUser
_
        = (Cursor -> Response IamMetadata DeleteUserResponse)
-> IORef IamMetadata -> HTTPResponseConsumer DeleteUserResponse
forall a.
(Cursor -> Response IamMetadata a)
-> IORef IamMetadata -> HTTPResponseConsumer a
iamResponseConsumer (Response IamMetadata DeleteUserResponse
-> Cursor -> Response IamMetadata DeleteUserResponse
forall a b. a -> b -> a
const (Response IamMetadata DeleteUserResponse
 -> Cursor -> Response IamMetadata DeleteUserResponse)
-> Response IamMetadata DeleteUserResponse
-> Cursor
-> Response IamMetadata DeleteUserResponse
forall a b. (a -> b) -> a -> b
$ DeleteUserResponse -> Response IamMetadata DeleteUserResponse
forall a. a -> Response IamMetadata a
forall (m :: * -> *) a. Monad m => a -> m a
return DeleteUserResponse
DeleteUserResponse)

instance Transaction DeleteUser DeleteUserResponse

instance AsMemoryResponse DeleteUserResponse where
    type MemoryResponse DeleteUserResponse = DeleteUserResponse
    loadToMemory :: DeleteUserResponse
-> ResourceT IO (MemoryResponse DeleteUserResponse)
loadToMemory = DeleteUserResponse
-> ResourceT IO (MemoryResponse DeleteUserResponse)
DeleteUserResponse -> ResourceT IO DeleteUserResponse
forall a. a -> ResourceT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return