module AWS.EC2.Route
( createRoute
, deleteRoute
, replaceRoute
) where
import Data.ByteString (ByteString)
import Data.Conduit (MonadBaseControl, MonadResource)
import Data.IP (AddrRange, IPv4)
import Data.Text (Text)
import AWS.EC2.Internal (EC2)
import AWS.EC2.Query (ec2Query, (|=))
import AWS.EC2.Types (CreateRouteRequest(..))
import AWS.Lib.Parser (getT)
import AWS.Util (toText)
createRoute
:: (MonadResource m, MonadBaseControl IO m)
=> CreateRouteRequest
-> EC2 m Bool
createRoute = routeRequest "CreateRoute"
deleteRoute
:: (MonadResource m, MonadBaseControl IO m)
=> Text
-> AddrRange IPv4
-> EC2 m Bool
deleteRoute tableId cidrBlock =
ec2Query "DeleteRoute"
[ "RouteTableId" |= tableId
, "DestinationCidrBlock" |= toText cidrBlock
] $ getT "return"
replaceRoute
:: (MonadResource m, MonadBaseControl IO m)
=> CreateRouteRequest
-> EC2 m Bool
replaceRoute = routeRequest "ReplaceRoute"
routeRequest
:: (MonadResource m, MonadBaseControl IO m)
=> ByteString
-> CreateRouteRequest
-> EC2 m Bool
routeRequest action (CreateRouteToGateway{..}) =
routeRequest' action createRouteTableId createRouteDestinationCidrBlock "GatewayId" createRouteGatewayId
routeRequest action (CreateRouteToInstance{..}) =
routeRequest' action createRouteTableId createRouteDestinationCidrBlock "InstanceId" createRouteInstanceId
routeRequest action (CreateRouteToNetworkInterface{..}) =
routeRequest' action createRouteTableId createRouteDestinationCidrBlock "NetworkInterfaceId" createRouteNetworkInterfaceId
routeRequest'
:: (MonadResource m, MonadBaseControl IO m)
=> ByteString
-> Text
-> AddrRange IPv4
-> Text
-> Text
-> EC2 m Bool
routeRequest' action tableId cidrBlock targetName targetId =
ec2Query action
[ "RouteTableId" |= tableId
, "DestinationCidrBlock" |= toText cidrBlock
, targetName |= targetId
] $ getT "return"