{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} module Tesla.Car.Command.Wake ( wakeUp ) where import Control.Lens import Control.Monad.IO.Class (MonadIO (..)) import Data.Aeson import Data.Aeson.Lens import qualified Data.ByteString.Lazy as BL import Tesla.Car (currentVehicleID, vehicleURL) import Tesla.Car.Command import Tesla.Internal.HTTP (jpostAuth) wakeUp :: MonadIO m => Car m (Maybe Value) wakeUp :: forall (m :: * -> *). MonadIO m => Car m (Maybe Value) wakeUp = do VehicleID v <- forall (m :: * -> *). MonadReader CarEnv m => m VehicleID currentVehicleID forall s (m :: * -> *) a. MonadReader s m => Getting (First a) s a -> m (Maybe a) preview (forall a b. Prism (Maybe a) (Maybe b) a b _Just forall b c a. (b -> c) -> (a -> b) -> a -> c . forall t. AsValue t => Key -> Traversal' t Value key Key "response") forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall (m :: * -> *) j a. (HasTeslaAuth m, FromJSON j, Postable a, MonadIO m) => String -> a -> m j jpostAuth @_ @(Maybe Value) (VehicleID -> String -> String vehicleURL VehicleID v String "wake_up") ByteString BL.empty