{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RecordWildCards       #-}
{-# LANGUAGE TupleSections         #-}
{-# LANGUAGE TypeFamilies          #-}
module Aws.Iam.Commands.DeleteAccessKey
    ( DeleteAccessKey(..)
    , DeleteAccessKeyResponse(..)
    ) where

import           Aws.Core
import           Aws.Iam.Core
import           Aws.Iam.Internal
import           Control.Applicative
import           Data.Text           (Text)
import           Data.Typeable
import           Prelude

-- | Deletes the access key associated with the specified user.
--
-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html>
data DeleteAccessKey
    = DeleteAccessKey {
        DeleteAccessKey -> Text
dakAccessKeyId :: Text
      -- ^ ID of the access key to be deleted.
      , DeleteAccessKey -> Maybe Text
dakUserName    :: Maybe Text
      -- ^ User name with which the access key is associated.
      }
    deriving (DeleteAccessKey -> DeleteAccessKey -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteAccessKey -> DeleteAccessKey -> Bool
$c/= :: DeleteAccessKey -> DeleteAccessKey -> Bool
== :: DeleteAccessKey -> DeleteAccessKey -> Bool
$c== :: DeleteAccessKey -> DeleteAccessKey -> Bool
Eq, Eq DeleteAccessKey
DeleteAccessKey -> DeleteAccessKey -> Bool
DeleteAccessKey -> DeleteAccessKey -> Ordering
DeleteAccessKey -> DeleteAccessKey -> DeleteAccessKey
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
min :: DeleteAccessKey -> DeleteAccessKey -> DeleteAccessKey
$cmin :: DeleteAccessKey -> DeleteAccessKey -> DeleteAccessKey
max :: DeleteAccessKey -> DeleteAccessKey -> DeleteAccessKey
$cmax :: DeleteAccessKey -> DeleteAccessKey -> DeleteAccessKey
>= :: DeleteAccessKey -> DeleteAccessKey -> Bool
$c>= :: DeleteAccessKey -> DeleteAccessKey -> Bool
> :: DeleteAccessKey -> DeleteAccessKey -> Bool
$c> :: DeleteAccessKey -> DeleteAccessKey -> Bool
<= :: DeleteAccessKey -> DeleteAccessKey -> Bool
$c<= :: DeleteAccessKey -> DeleteAccessKey -> Bool
< :: DeleteAccessKey -> DeleteAccessKey -> Bool
$c< :: DeleteAccessKey -> DeleteAccessKey -> Bool
compare :: DeleteAccessKey -> DeleteAccessKey -> Ordering
$ccompare :: DeleteAccessKey -> DeleteAccessKey -> Ordering
Ord, Int -> DeleteAccessKey -> ShowS
[DeleteAccessKey] -> ShowS
DeleteAccessKey -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteAccessKey] -> ShowS
$cshowList :: [DeleteAccessKey] -> ShowS
show :: DeleteAccessKey -> String
$cshow :: DeleteAccessKey -> String
showsPrec :: Int -> DeleteAccessKey -> ShowS
$cshowsPrec :: Int -> DeleteAccessKey -> ShowS
Show, Typeable)

instance SignQuery DeleteAccessKey where
    type ServiceConfiguration DeleteAccessKey = IamConfiguration
    signQuery :: forall queryType.
DeleteAccessKey
-> ServiceConfiguration DeleteAccessKey queryType
-> SignatureData
-> SignedQuery
signQuery DeleteAccessKey{Maybe Text
Text
dakUserName :: Maybe Text
dakAccessKeyId :: Text
dakUserName :: DeleteAccessKey -> Maybe Text
dakAccessKeyId :: DeleteAccessKey -> Text
..}
        = forall qt.
ByteString
-> [Maybe (ByteString, Text)]
-> IamConfiguration qt
-> SignatureData
-> SignedQuery
iamAction' ByteString
"DeleteAccessKey" [
              forall a. a -> Maybe a
Just (ByteString
"AccessKeyId", Text
dakAccessKeyId)
            , (ByteString
"UserName",) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Text
dakUserName
            ]

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

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

instance Transaction DeleteAccessKey DeleteAccessKeyResponse

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