{-# LANGUAGE TypeFamilies
           , MultiParamTypeClasses
           , FlexibleInstances
           , OverloadedStrings
           , RecordWildCards
           , TemplateHaskell
           #-}

module Aws.Ec2.Commands.ModifyVpcAttribute where

import Aws.Ec2.TH

data VpcAttribute = EnableDnsSupport Bool | EnableDnsHostnames Bool
                  deriving (Show)

data ModifyVpcAttribute = ModifyVpcAttribute
               { mva_vpcId :: Text
               , mva_attribute :: VpcAttribute
               } deriving (Show)

instance SignQuery ModifyVpcAttribute where
    type ServiceConfiguration ModifyVpcAttribute = EC2Configuration
    signQuery ModifyVpcAttribute{..} = ec2SignQuery $
                                           [ ("VpcId", qArg mva_vpcId)
                                           , ("Action", qArg "ModifyVpcAttribute")
                                           , defVersion
                                           ] +++ case mva_attribute of
                                                   EnableDnsSupport es -> [("EnableDnsSupport.Value", qShow es)]
                                                   EnableDnsHostnames eh -> [("EnableDnsHostnames.Value", qShow eh)]

EC2VALUETRANSACTION(ModifyVpcAttribute,"return")