{-# 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.EC2.ModifyNetworkInterfaceAttribute
    (
    
      modifyNetworkInterfaceAttribute
    , ModifyNetworkInterfaceAttribute
    
    , mniaGroups
    , mniaSourceDestCheck
    , mniaAttachment
    , mniaDescription
    , mniaDryRun
    , mniaNetworkInterfaceId
    
    , modifyNetworkInterfaceAttributeResponse
    , ModifyNetworkInterfaceAttributeResponse
    ) where
import Network.AWS.EC2.Types
import Network.AWS.EC2.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ModifyNetworkInterfaceAttribute = ModifyNetworkInterfaceAttribute'
  { _mniaGroups             :: !(Maybe [Text])
  , _mniaSourceDestCheck    :: !(Maybe AttributeBooleanValue)
  , _mniaAttachment         :: !(Maybe NetworkInterfaceAttachmentChanges)
  , _mniaDescription        :: !(Maybe AttributeValue)
  , _mniaDryRun             :: !(Maybe Bool)
  , _mniaNetworkInterfaceId :: !Text
  } deriving (Eq, Read, Show, Data, Typeable, Generic)
modifyNetworkInterfaceAttribute
    :: Text 
    -> ModifyNetworkInterfaceAttribute
modifyNetworkInterfaceAttribute pNetworkInterfaceId_ =
  ModifyNetworkInterfaceAttribute'
    { _mniaGroups = Nothing
    , _mniaSourceDestCheck = Nothing
    , _mniaAttachment = Nothing
    , _mniaDescription = Nothing
    , _mniaDryRun = Nothing
    , _mniaNetworkInterfaceId = pNetworkInterfaceId_
    }
mniaGroups :: Lens' ModifyNetworkInterfaceAttribute [Text]
mniaGroups = lens _mniaGroups (\ s a -> s{_mniaGroups = a}) . _Default . _Coerce
mniaSourceDestCheck :: Lens' ModifyNetworkInterfaceAttribute (Maybe AttributeBooleanValue)
mniaSourceDestCheck = lens _mniaSourceDestCheck (\ s a -> s{_mniaSourceDestCheck = a})
mniaAttachment :: Lens' ModifyNetworkInterfaceAttribute (Maybe NetworkInterfaceAttachmentChanges)
mniaAttachment = lens _mniaAttachment (\ s a -> s{_mniaAttachment = a})
mniaDescription :: Lens' ModifyNetworkInterfaceAttribute (Maybe AttributeValue)
mniaDescription = lens _mniaDescription (\ s a -> s{_mniaDescription = a})
mniaDryRun :: Lens' ModifyNetworkInterfaceAttribute (Maybe Bool)
mniaDryRun = lens _mniaDryRun (\ s a -> s{_mniaDryRun = a})
mniaNetworkInterfaceId :: Lens' ModifyNetworkInterfaceAttribute Text
mniaNetworkInterfaceId = lens _mniaNetworkInterfaceId (\ s a -> s{_mniaNetworkInterfaceId = a})
instance AWSRequest ModifyNetworkInterfaceAttribute
         where
        type Rs ModifyNetworkInterfaceAttribute =
             ModifyNetworkInterfaceAttributeResponse
        request = postQuery ec2
        response
          = receiveNull
              ModifyNetworkInterfaceAttributeResponse'
instance Hashable ModifyNetworkInterfaceAttribute
         where
instance NFData ModifyNetworkInterfaceAttribute where
instance ToHeaders ModifyNetworkInterfaceAttribute
         where
        toHeaders = const mempty
instance ToPath ModifyNetworkInterfaceAttribute where
        toPath = const "/"
instance ToQuery ModifyNetworkInterfaceAttribute
         where
        toQuery ModifyNetworkInterfaceAttribute'{..}
          = mconcat
              ["Action" =:
                 ("ModifyNetworkInterfaceAttribute" :: ByteString),
               "Version" =: ("2016-11-15" :: ByteString),
               toQuery
                 (toQueryList "SecurityGroupId" <$> _mniaGroups),
               "SourceDestCheck" =: _mniaSourceDestCheck,
               "Attachment" =: _mniaAttachment,
               "Description" =: _mniaDescription,
               "DryRun" =: _mniaDryRun,
               "NetworkInterfaceId" =: _mniaNetworkInterfaceId]
data ModifyNetworkInterfaceAttributeResponse =
  ModifyNetworkInterfaceAttributeResponse'
  deriving (Eq, Read, Show, Data, Typeable, Generic)
modifyNetworkInterfaceAttributeResponse
    :: ModifyNetworkInterfaceAttributeResponse
modifyNetworkInterfaceAttributeResponse =
  ModifyNetworkInterfaceAttributeResponse'
instance NFData
           ModifyNetworkInterfaceAttributeResponse
         where