{-# LANGUAGE OverloadedStrings #-}
module Strive.Types.Efforts
( EffortDetailed(..)
) where
import Control.Applicative (empty)
import Data.Aeson ((.:), (.:?), FromJSON, Value(Object), parseJSON)
import Data.Text (Text)
import Data.Time.Clock (UTCTime)
import Strive.Enums (ResourceState)
import Strive.Types.Segments (SegmentSummary)
data EffortDetailed = EffortDetailed
{ EffortDetailed -> Integer
effortDetailed_activityId :: Integer
, EffortDetailed -> Integer
effortDetailed_athleteId :: Integer
, EffortDetailed -> Maybe Double
effortDetailed_averageCadence :: Maybe Double
, EffortDetailed -> Maybe Double
effortDetailed_averageHeartrate :: Maybe Double
, EffortDetailed -> Maybe Double
effortDetailed_averageWatts :: Maybe Double
, EffortDetailed -> Double
effortDetailed_distance :: Double
, EffortDetailed -> Integer
effortDetailed_elapsedTime :: Integer
, EffortDetailed -> Integer
effortDetailed_endIndex :: Integer
, EffortDetailed -> Maybe Bool
effortDetailed_hidden :: Maybe Bool
, EffortDetailed -> Integer
effortDetailed_id :: Integer
, EffortDetailed -> Maybe Integer
effortDetailed_komRank :: Maybe Integer
, EffortDetailed -> Maybe Integer
effortDetailed_maxHeartrate :: Maybe Integer
, EffortDetailed -> Integer
effortDetailed_movingTime :: Integer
, EffortDetailed -> Text
effortDetailed_name :: Text
, EffortDetailed -> Maybe Integer
effortDetailed_prRank :: Maybe Integer
, EffortDetailed -> ResourceState
effortDetailed_resourceState :: ResourceState
, EffortDetailed -> SegmentSummary
effortDetailed_segment :: SegmentSummary
, EffortDetailed -> UTCTime
effortDetailed_startDate :: UTCTime
, EffortDetailed -> UTCTime
effortDetailed_startDateLocal :: UTCTime
, EffortDetailed -> Integer
effortDetailed_startIndex :: Integer
}
deriving Int -> EffortDetailed -> ShowS
[EffortDetailed] -> ShowS
EffortDetailed -> String
(Int -> EffortDetailed -> ShowS)
-> (EffortDetailed -> String)
-> ([EffortDetailed] -> ShowS)
-> Show EffortDetailed
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EffortDetailed] -> ShowS
$cshowList :: [EffortDetailed] -> ShowS
show :: EffortDetailed -> String
$cshow :: EffortDetailed -> String
showsPrec :: Int -> EffortDetailed -> ShowS
$cshowsPrec :: Int -> EffortDetailed -> ShowS
Show
instance FromJSON EffortDetailed where
parseJSON :: Value -> Parser EffortDetailed
parseJSON (Object Object
o) =
Integer
-> Integer
-> Maybe Double
-> Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed
EffortDetailed
(Integer
-> Integer
-> Maybe Double
-> Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Integer
-> Parser
(Integer
-> Maybe Double
-> Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((Object
o Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"activity") Parser Object -> (Object -> Parser Integer) -> Parser Integer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"))
Parser
(Integer
-> Maybe Double
-> Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Integer
-> Parser
(Maybe Double
-> Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ((Object
o Object -> Key -> Parser Object
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"athlete") Parser Object -> (Object -> Parser Integer) -> Parser Integer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"))
Parser
(Maybe Double
-> Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser (Maybe Double)
-> Parser
(Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_cadence"
Parser
(Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser (Maybe Double)
-> Parser
(Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_heartrate"
Parser
(Maybe Double
-> Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser (Maybe Double)
-> Parser
(Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_watts"
Parser
(Double
-> Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Double
-> Parser
(Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"distance"
Parser
(Integer
-> Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Integer
-> Parser
(Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"elapsed_time"
Parser
(Integer
-> Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Integer
-> Parser
(Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"end_index"
Parser
(Maybe Bool
-> Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser (Maybe Bool)
-> Parser
(Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"hidden"
Parser
(Integer
-> Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Integer
-> Parser
(Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(Maybe Integer
-> Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser (Maybe Integer)
-> Parser
(Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"kom_rank"
Parser
(Maybe Integer
-> Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser (Maybe Integer)
-> Parser
(Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"max_heartrate"
Parser
(Integer
-> Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Integer
-> Parser
(Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"moving_time"
Parser
(Text
-> Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser Text
-> Parser
(Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
Parser
(Maybe Integer
-> ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser (Maybe Integer)
-> Parser
(ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"pr_rank"
Parser
(ResourceState
-> SegmentSummary
-> UTCTime
-> UTCTime
-> Integer
-> EffortDetailed)
-> Parser ResourceState
-> Parser
(SegmentSummary -> UTCTime -> UTCTime -> Integer -> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser ResourceState
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"resource_state"
Parser
(SegmentSummary -> UTCTime -> UTCTime -> Integer -> EffortDetailed)
-> Parser SegmentSummary
-> Parser (UTCTime -> UTCTime -> Integer -> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser SegmentSummary
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"segment"
Parser (UTCTime -> UTCTime -> Integer -> EffortDetailed)
-> Parser UTCTime -> Parser (UTCTime -> Integer -> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser UTCTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date"
Parser (UTCTime -> Integer -> EffortDetailed)
-> Parser UTCTime -> Parser (Integer -> EffortDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser UTCTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date_local"
Parser (Integer -> EffortDetailed)
-> Parser Integer -> Parser EffortDetailed
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_index"
parseJSON Value
_ = Parser EffortDetailed
forall (f :: * -> *) a. Alternative f => f a
empty