module Strive.Utilities
( with,
altitudeStream,
cadenceStream,
distanceStream,
gradeSmoothStream,
heartrateStream,
latlngStream,
movingStream,
tempStream,
timeStream,
velocitySmoothStream,
wattsStream,
)
where
import Data.Aeson (FromJSON, Result (Error, Success), Value, fromJSON)
import Data.Default (Default, def)
import Data.Maybe (mapMaybe)
import Data.Text (pack)
import qualified Strive.Enums as Enums
import Strive.Types (StreamDetailed, streamDetailed_data, streamDetailed_type)
with :: (Default a) => [a -> a] -> a
with :: forall a. Default a => [a -> a] -> a
with = forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr forall a b. (a -> b) -> a -> b
($) forall a. Default a => a
def
altitudeStream :: StreamDetailed -> Maybe [Double]
altitudeStream :: StreamDetailed -> Maybe [Double]
altitudeStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.AltitudeStream
cadenceStream :: StreamDetailed -> Maybe [Integer]
cadenceStream :: StreamDetailed -> Maybe [Integer]
cadenceStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.CadenceStream
distanceStream :: StreamDetailed -> Maybe [Double]
distanceStream :: StreamDetailed -> Maybe [Double]
distanceStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.DistanceStream
gradeSmoothStream :: StreamDetailed -> Maybe [Double]
gradeSmoothStream :: StreamDetailed -> Maybe [Double]
gradeSmoothStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.GradeSmoothStream
heartrateStream :: StreamDetailed -> Maybe [Integer]
heartrateStream :: StreamDetailed -> Maybe [Integer]
heartrateStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.HeartrateStream
latlngStream :: StreamDetailed -> Maybe [(Double, Double)]
latlngStream :: StreamDetailed -> Maybe [(Double, Double)]
latlngStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.LatlngStream
movingStream :: StreamDetailed -> Maybe [Bool]
movingStream :: StreamDetailed -> Maybe [Bool]
movingStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.MovingStream
tempStream :: StreamDetailed -> Maybe [Integer]
tempStream :: StreamDetailed -> Maybe [Integer]
tempStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.TempStream
timeStream :: StreamDetailed -> Maybe [Integer]
timeStream :: StreamDetailed -> Maybe [Integer]
timeStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.TimeStream
velocitySmoothStream :: StreamDetailed -> Maybe [Double]
velocitySmoothStream :: StreamDetailed -> Maybe [Double]
velocitySmoothStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.VelocitySmoothStream
wattsStream :: StreamDetailed -> Maybe [Integer]
wattsStream :: StreamDetailed -> Maybe [Integer]
wattsStream = forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
Enums.WattsStream
lookupStream :: (FromJSON a) => Enums.StreamType -> StreamDetailed -> Maybe [a]
lookupStream :: forall a. FromJSON a => StreamType -> StreamDetailed -> Maybe [a]
lookupStream StreamType
streamType StreamDetailed
stream =
if StreamDetailed -> Text
streamDetailed_type StreamDetailed
stream forall a. Eq a => a -> a -> Bool
== String -> Text
pack (forall a. Show a => a -> String
show StreamType
streamType)
then forall a. a -> Maybe a
Just (forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe forall a. FromJSON a => Value -> Maybe a
maybeFromJson (StreamDetailed -> [Value]
streamDetailed_data StreamDetailed
stream))
else forall a. Maybe a
Nothing
maybeFromJson :: (FromJSON a) => Value -> Maybe a
maybeFromJson :: forall a. FromJSON a => Value -> Maybe a
maybeFromJson Value
value = case forall a. FromJSON a => Value -> Result a
fromJSON Value
value of
Success a
x -> forall a. a -> Maybe a
Just a
x
Error String
_ -> forall a. Maybe a
Nothing