{-# 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
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
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"activity") forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"))
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ((Object
o forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"athlete") forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"))
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_cadence"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_heartrate"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_watts"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"distance"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"elapsed_time"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"end_index"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"hidden"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"kom_rank"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"max_heartrate"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"moving_time"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"pr_rank"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"resource_state"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"segment"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date_local"
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_index"
parseJSON Value
_ = forall (f :: * -> *) a. Alternative f => f a
empty