packages feed

tesla 0.2.0.0 → 0.3.0.1

raw patch · 5 files changed

+19/−13 lines, 5 files

Files

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 = [