{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} module Tesla.Car.Command.Doors ( actuateFrontTrunk, actuateRearTrunk, lockDoors, unlockDoors ) where import Control.Monad.IO.Class (MonadIO (..)) import Network.Wreq (FormParam (..)) import Tesla.Car.Command atr :: MonadIO m => String -> Car m CommandResponse atr :: String -> Car m CommandResponse atr String w = String -> [FormParam] -> Car m CommandResponse forall (m :: * -> *) p. (MonadIO m, Postable p) => String -> p -> Car m CommandResponse runCmd String "actuate_trunk" [ ByteString "which_trunk" ByteString -> String -> FormParam forall v. FormValue v => ByteString -> v -> FormParam := String w ] actuateFrontTrunk :: MonadIO m => Car m CommandResponse actuateFrontTrunk :: Car m CommandResponse actuateFrontTrunk = String -> Car m CommandResponse forall (m :: * -> *). MonadIO m => String -> Car m CommandResponse atr String "front" actuateRearTrunk :: MonadIO m => Car m CommandResponse actuateRearTrunk :: Car m CommandResponse actuateRearTrunk = String -> Car m CommandResponse forall (m :: * -> *). MonadIO m => String -> Car m CommandResponse atr String "rear" mkNamedCommands [("lockDoors", "door_lock"), ("unlockDoors", "door_unlock")]