tesla 0.2.0.0 → 0.3.0.1
raw patch · 5 files changed
+19/−13 lines, 5 files
Files
- src/Tesla.hs +5/−5
- src/Tesla/Auth.hs +5/−1
- src/Tesla/Car.hs +1/−2
- tesla.cabal +2/−2
- test/Spec.hs +6/−3
src/Tesla.hs view
@@ -3,7 +3,7 @@ Description: Tesla API implementation. 'Tesla' is intended to provide access to all known Tesla APIs as-documented at https://tesla-api.timdorr.com/+documented at https://www.teslaapi.io/ -} {-# LANGUAGE OverloadedStrings #-}@@ -90,9 +90,9 @@ products ai = decodeProducts <$> jgetWith (authOpts ai) productsURL -- | Get a mapping of vehicle name to vehicle ID.-vehicles :: MonadIO m => AuthInfo -> m (Map Text Text)-vehicles = fmap (Map.fromList . toListOf (folded . _ProductVehicle)) . products+vehicles :: [Product] -> (Map Text Text)+vehicles = Map.fromList . toListOf (folded . _ProductVehicle) -- | Get a list of Solar ID installations.-energyIDs :: MonadIO m => AuthInfo -> m [EnergyID]-energyIDs = fmap (toListOf $ folded . _ProductEnergy) . products+energyIDs :: [Product] -> [EnergyID]+energyIDs = toListOf (folded . energyID)
src/Tesla/Auth.hs view
@@ -17,7 +17,8 @@ ) where import Control.Lens-import Data.Aeson (FromJSON (..), Options, defaultOptions, fieldLabelModifier, genericParseJSON)+import Data.Aeson (FromJSON (..), Options, ToJSON (..), defaultOptions, fieldLabelModifier,+ genericParseJSON, genericToJSON) import Generics.Deriving.Base (Generic) -- | An Authentication request.@@ -56,3 +57,6 @@ instance FromJSON AuthResponse where parseJSON = genericParseJSON jsonOpts++instance ToJSON AuthResponse where+ toJSON = genericToJSON jsonOpts
src/Tesla/Car.hs view
@@ -41,7 +41,6 @@ import Control.Lens import Control.Monad ((<=<)) import Control.Monad.Catch (MonadCatch (..), MonadMask (..), MonadThrow (..))-import Control.Monad.Fail (MonadFail (..)) import Control.Monad.IO.Class (MonadIO (..)) import Control.Monad.IO.Unlift (MonadUnliftIO, withRunInIO) import Control.Monad.Logger (MonadLogger)@@ -108,7 +107,7 @@ runNamedCar :: MonadIO m => Text -> IO AuthInfo -> Car m a -> m a runNamedCar name ai f = do a <- liftIO ai- vs <- vehicles a+ vs <- vehicles <$> products a c <- case Map.lookup name vs of Nothing -> throw $ mconcat [show name, " is not a valid vehicle name. Try one of: ", show $ Map.keys vs]
tesla.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 8d58aba9e4939289760f458ed52ae77cefb0e80437c28f6672627ef98afe987f+-- hash: e88c4dc4c9bcb802b86bb2418fc6188ea7f37139b888b3cc1d9eded702299a5a name: tesla-version: 0.2.0.0+version: 0.3.0.1 synopsis: Tesla API client. description: Please see the README on GitHub at <https://github.com/dustin/tesla#readme> category: Web
test/Spec.hs view
@@ -5,6 +5,7 @@ import Test.Tasty.QuickCheck as QC import Data.Aeson+import qualified Data.Map.Strict as Map import Data.Maybe (fromJust) import Data.Ratio import Data.Time.Clock (UTCTime)@@ -40,9 +41,11 @@ testOpenDoors = assertEqual "open" [RearTrunk] (openDoors sampleVehicleData) testParseProducts :: Assertion-testParseProducts = assertEqual "products" [ProductVehicle "MyCar" "848528",- ProductEnergy 2848535]- (decodeProducts sampleProducts)+testParseProducts = do+ let prods = decodeProducts sampleProducts+ assertEqual "products" [ProductVehicle "MyCar" "848528", ProductEnergy 2848535] prods+ assertEqual "vehicles" (Map.fromList [("MyCar", "848528")]) $ vehicles prods+ assertEqual "energy" [2848535] $ energyIDs prods tests :: [TestTree] tests = [