module Network.AWS.KMS.CreateKey
(
createKey
, CreateKey
, ckKeyUsage
, ckPolicy
, ckDescription
, createKeyResponse
, CreateKeyResponse
, ckrsKeyMetadata
, ckrsResponseStatus
) where
import Network.AWS.KMS.Types
import Network.AWS.KMS.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateKey = CreateKey'
{ _ckKeyUsage :: !(Maybe KeyUsageType)
, _ckPolicy :: !(Maybe Text)
, _ckDescription :: !(Maybe Text)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createKey
:: CreateKey
createKey =
CreateKey'
{ _ckKeyUsage = Nothing
, _ckPolicy = Nothing
, _ckDescription = Nothing
}
ckKeyUsage :: Lens' CreateKey (Maybe KeyUsageType)
ckKeyUsage = lens _ckKeyUsage (\ s a -> s{_ckKeyUsage = a});
ckPolicy :: Lens' CreateKey (Maybe Text)
ckPolicy = lens _ckPolicy (\ s a -> s{_ckPolicy = a});
ckDescription :: Lens' CreateKey (Maybe Text)
ckDescription = lens _ckDescription (\ s a -> s{_ckDescription = a});
instance AWSRequest CreateKey where
type Rs CreateKey = CreateKeyResponse
request = postJSON kms
response
= receiveJSON
(\ s h x ->
CreateKeyResponse' <$>
(x .?> "KeyMetadata") <*> (pure (fromEnum s)))
instance Hashable CreateKey
instance ToHeaders CreateKey where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("TrentService.CreateKey" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateKey where
toJSON CreateKey'{..}
= object
(catMaybes
[("KeyUsage" .=) <$> _ckKeyUsage,
("Policy" .=) <$> _ckPolicy,
("Description" .=) <$> _ckDescription])
instance ToPath CreateKey where
toPath = const "/"
instance ToQuery CreateKey where
toQuery = const mempty
data CreateKeyResponse = CreateKeyResponse'
{ _ckrsKeyMetadata :: !(Maybe KeyMetadata)
, _ckrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createKeyResponse
:: Int
-> CreateKeyResponse
createKeyResponse pResponseStatus_ =
CreateKeyResponse'
{ _ckrsKeyMetadata = Nothing
, _ckrsResponseStatus = pResponseStatus_
}
ckrsKeyMetadata :: Lens' CreateKeyResponse (Maybe KeyMetadata)
ckrsKeyMetadata = lens _ckrsKeyMetadata (\ s a -> s{_ckrsKeyMetadata = a});
ckrsResponseStatus :: Lens' CreateKeyResponse Int
ckrsResponseStatus = lens _ckrsResponseStatus (\ s a -> s{_ckrsResponseStatus = a});