module Network.AWS.CloudHSM.ModifyLunaClient
    (
    
      modifyLunaClient
    , ModifyLunaClient
    
    , mlcClientARN
    , mlcCertificate
    
    , modifyLunaClientResponse
    , ModifyLunaClientResponse
    
    , mlcrsClientARN
    , mlcrsResponseStatus
    ) where
import Network.AWS.CloudHSM.Types
import Network.AWS.CloudHSM.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ModifyLunaClient = ModifyLunaClient'
  { _mlcClientARN   :: !Text
  , _mlcCertificate :: !Text
  } deriving (Eq, Read, Show, Data, Typeable, Generic)
modifyLunaClient
    :: Text 
    -> Text 
    -> ModifyLunaClient
modifyLunaClient pClientARN_ pCertificate_ =
  ModifyLunaClient'
  {_mlcClientARN = pClientARN_, _mlcCertificate = pCertificate_}
mlcClientARN :: Lens' ModifyLunaClient Text
mlcClientARN = lens _mlcClientARN (\ s a -> s{_mlcClientARN = a});
mlcCertificate :: Lens' ModifyLunaClient Text
mlcCertificate = lens _mlcCertificate (\ s a -> s{_mlcCertificate = a});
instance AWSRequest ModifyLunaClient where
        type Rs ModifyLunaClient = ModifyLunaClientResponse
        request = postJSON cloudHSM
        response
          = receiveJSON
              (\ s h x ->
                 ModifyLunaClientResponse' <$>
                   (x .?> "ClientArn") <*> (pure (fromEnum s)))
instance Hashable ModifyLunaClient where
instance NFData ModifyLunaClient where
instance ToHeaders ModifyLunaClient where
        toHeaders
          = const
              (mconcat
                 ["X-Amz-Target" =#
                    ("CloudHsmFrontendService.ModifyLunaClient" ::
                       ByteString),
                  "Content-Type" =#
                    ("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON ModifyLunaClient where
        toJSON ModifyLunaClient'{..}
          = object
              (catMaybes
                 [Just ("ClientArn" .= _mlcClientARN),
                  Just ("Certificate" .= _mlcCertificate)])
instance ToPath ModifyLunaClient where
        toPath = const "/"
instance ToQuery ModifyLunaClient where
        toQuery = const mempty
data ModifyLunaClientResponse = ModifyLunaClientResponse'
  { _mlcrsClientARN      :: !(Maybe Text)
  , _mlcrsResponseStatus :: !Int
  } deriving (Eq, Read, Show, Data, Typeable, Generic)
modifyLunaClientResponse
    :: Int 
    -> ModifyLunaClientResponse
modifyLunaClientResponse pResponseStatus_ =
  ModifyLunaClientResponse'
  {_mlcrsClientARN = Nothing, _mlcrsResponseStatus = pResponseStatus_}
mlcrsClientARN :: Lens' ModifyLunaClientResponse (Maybe Text)
mlcrsClientARN = lens _mlcrsClientARN (\ s a -> s{_mlcrsClientARN = a});
mlcrsResponseStatus :: Lens' ModifyLunaClientResponse Int
mlcrsResponseStatus = lens _mlcrsResponseStatus (\ s a -> s{_mlcrsResponseStatus = a});
instance NFData ModifyLunaClientResponse where