{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell   #-}

-- | <http://strava.github.io/api/v3/activities/>
module Strive.Types.Activities
  ( ActivityDetailed (..)
  , ActivitySummary (..)
  , ActivityZoneDetailed (..)
  , ActivityZoneDistributionBucket (..)
  , ActivityLapSummary (..)
  ) where

import Control.Applicative (empty)
import Data.Aeson (FromJSON, Value (Object), parseJSON, (.:), (.:?))
import Data.Aeson.TH (deriveFromJSON)
import Data.Aeson.Types (Parser, withObject)
import Data.Text (Text)
import Data.Time.Clock (UTCTime)
import Strive.Enums (ActivityType, ActivityZoneType, ResourceState)
import Strive.Internal.TH (options)
import Strive.Types.Athletes (AthleteMeta)
import Strive.Types.Efforts (EffortDetailed)
import Strive.Types.Gear (GearSummary)
import Strive.Types.Polylines (PolylineDetailed, PolylineSummary)

parseLatlng :: Maybe [Double] -> Parser (Maybe (Double, Double))
parseLatlng :: Maybe [Double] -> Parser (Maybe (Double, Double))
parseLatlng = \case
  Maybe [Double]
Nothing -> Maybe (Double, Double) -> Parser (Maybe (Double, Double))
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe (Double, Double)
forall a. Maybe a
Nothing
  Just [] -> Maybe (Double, Double) -> Parser (Maybe (Double, Double))
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe (Double, Double)
forall a. Maybe a
Nothing
  Just [Double
lat, Double
lng] -> Maybe (Double, Double) -> Parser (Maybe (Double, Double))
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe (Double, Double) -> Parser (Maybe (Double, Double)))
-> Maybe (Double, Double) -> Parser (Maybe (Double, Double))
forall a b. (a -> b) -> a -> b
$ (Double, Double) -> Maybe (Double, Double)
forall a. a -> Maybe a
Just (Double
lat, Double
lng)
  Maybe [Double]
_ -> String -> Parser (Maybe (Double, Double))
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid array length when parsing a Latlng"

-- | <http://strava.github.io/api/v3/activities/#detailed>
data ActivityDetailed = ActivityDetailed
  { ActivityDetailed -> Integer
activityDetailed_achievementCount      :: Integer
  , ActivityDetailed -> AthleteMeta
activityDetailed_athlete               :: AthleteMeta
  , ActivityDetailed -> Integer
activityDetailed_athleteCount          :: Integer
  , ActivityDetailed -> Double
activityDetailed_averageSpeed          :: Double
  , ActivityDetailed -> Maybe Double
activityDetailed_averageWatts          :: Maybe Double
  , ActivityDetailed -> Maybe Double
activityDetailed_averageHeartrate      :: Maybe Double
  , ActivityDetailed -> Double
activityDetailed_calories              :: Double
  , ActivityDetailed -> Integer
activityDetailed_commentCount          :: Integer
  , ActivityDetailed -> Bool
activityDetailed_commute               :: Bool
  , ActivityDetailed -> Maybe Text
activityDetailed_description           :: Maybe Text
  , ActivityDetailed -> Maybe Bool
activityDetailed_deviceWatts           :: Maybe Bool
  , ActivityDetailed -> Double
activityDetailed_distance              :: Double
  , ActivityDetailed -> Integer
activityDetailed_elapsedTime           :: Integer
  , ActivityDetailed -> Maybe (Double, Double)
activityDetailed_endLatlng             :: Maybe (Double, Double)
  , ActivityDetailed -> Maybe Text
activityDetailed_externalId            :: Maybe Text
  , ActivityDetailed -> Bool
activityDetailed_flagged               :: Bool
  , ActivityDetailed -> GearSummary
activityDetailed_gear                  :: GearSummary
  , ActivityDetailed -> Maybe Text
activityDetailed_gearId                :: Maybe Text
  , ActivityDetailed -> Bool
activityDetailed_hasKudoed             :: Bool
  , ActivityDetailed -> Integer
activityDetailed_id                    :: Integer
  , ActivityDetailed -> Maybe Text
activityDetailed_instagramPrimaryPhoto :: Maybe Text
  , ActivityDetailed -> Maybe Double
activityDetailed_kilojoules            :: Maybe Double
  , ActivityDetailed -> Maybe Text
activityDetailed_locationCity          :: Maybe Text
  , ActivityDetailed -> Maybe Text
activityDetailed_locationCountry       :: Maybe Text
  , ActivityDetailed -> Maybe Text
activityDetailed_locationState         :: Maybe Text
  , ActivityDetailed -> Bool
activityDetailed_manual                :: Bool
  , ActivityDetailed -> PolylineDetailed
activityDetailed_map                   :: PolylineDetailed
  , ActivityDetailed -> Maybe Double
activityDetailed_maxHeartrate          :: Maybe Double
  , ActivityDetailed -> Double
activityDetailed_maxSpeed              :: Double
  , ActivityDetailed -> Integer
activityDetailed_movingTime            :: Integer
  , ActivityDetailed -> Text
activityDetailed_name                  :: Text
  , ActivityDetailed -> Integer
activityDetailed_photoCount            :: Integer
  , ActivityDetailed -> Bool
activityDetailed_private               :: Bool
  , ActivityDetailed -> ResourceState
activityDetailed_resourceState         :: ResourceState
  , ActivityDetailed -> [EffortDetailed]
activityDetailed_segmentEfforts        :: [EffortDetailed]
  , ActivityDetailed -> UTCTime
activityDetailed_startDate             :: UTCTime
  , ActivityDetailed -> UTCTime
activityDetailed_startDateLocal        :: UTCTime
  , ActivityDetailed -> Double
activityDetailed_startLatitude         :: Double
  , ActivityDetailed -> Maybe (Double, Double)
activityDetailed_startLatlng           :: Maybe (Double, Double)
  , ActivityDetailed -> Double
activityDetailed_startLongitude        :: Double
  , ActivityDetailed -> Text
activityDetailed_timezone              :: Text
  , ActivityDetailed -> Double
activityDetailed_totalElevationGain    :: Double
  , ActivityDetailed -> Bool
activityDetailed_trainer               :: Bool
  , ActivityDetailed -> Integer
activityDetailed_truncated             :: Integer
  , ActivityDetailed -> ActivityType
activityDetailed_type                  :: ActivityType
  , ActivityDetailed -> Maybe Integer
activityDetailed_uploadId              :: Maybe Integer
  , ActivityDetailed -> Maybe Integer
activityDetailed_weightedAverageWatts  :: Maybe Integer
  } deriving Int -> ActivityDetailed -> ShowS
[ActivityDetailed] -> ShowS
ActivityDetailed -> String
(Int -> ActivityDetailed -> ShowS)
-> (ActivityDetailed -> String)
-> ([ActivityDetailed] -> ShowS)
-> Show ActivityDetailed
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ActivityDetailed] -> ShowS
$cshowList :: [ActivityDetailed] -> ShowS
show :: ActivityDetailed -> String
$cshow :: ActivityDetailed -> String
showsPrec :: Int -> ActivityDetailed -> ShowS
$cshowsPrec :: Int -> ActivityDetailed -> ShowS
Show

instance FromJSON ActivityDetailed where
  parseJSON :: Value -> Parser ActivityDetailed
parseJSON = String
-> (Object -> Parser ActivityDetailed)
-> Value
-> Parser ActivityDetailed
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ActivityDetailed" ((Object -> Parser ActivityDetailed)
 -> Value -> Parser ActivityDetailed)
-> (Object -> Parser ActivityDetailed)
-> Value
-> Parser ActivityDetailed
forall a b. (a -> b) -> a -> b
$ \Object
v -> Integer
-> AthleteMeta
-> Integer
-> Double
-> Maybe Double
-> Maybe Double
-> Double
-> Integer
-> Bool
-> Maybe Text
-> Maybe Bool
-> Double
-> Integer
-> Maybe (Double, Double)
-> Maybe Text
-> Bool
-> GearSummary
-> Maybe Text
-> Bool
-> Integer
-> Maybe Text
-> Maybe Double
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> PolylineDetailed
-> Maybe Double
-> Double
-> Integer
-> Text
-> Integer
-> Bool
-> ResourceState
-> [EffortDetailed]
-> UTCTime
-> UTCTime
-> Double
-> Maybe (Double, Double)
-> Double
-> Text
-> Double
-> Bool
-> Integer
-> ActivityType
-> Maybe Integer
-> Maybe Integer
-> ActivityDetailed
ActivityDetailed
    (Integer
 -> AthleteMeta
 -> Integer
 -> Double
 -> Maybe Double
 -> Maybe Double
 -> Double
 -> Integer
 -> Bool
 -> Maybe Text
 -> Maybe Bool
 -> Double
 -> Integer
 -> Maybe (Double, Double)
 -> Maybe Text
 -> Bool
 -> GearSummary
 -> Maybe Text
 -> Bool
 -> Integer
 -> Maybe Text
 -> Maybe Double
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Bool
 -> PolylineDetailed
 -> Maybe Double
 -> Double
 -> Integer
 -> Text
 -> Integer
 -> Bool
 -> ResourceState
 -> [EffortDetailed]
 -> UTCTime
 -> UTCTime
 -> Double
 -> Maybe (Double, Double)
 -> Double
 -> Text
 -> Double
 -> Bool
 -> Integer
 -> ActivityType
 -> Maybe Integer
 -> Maybe Integer
 -> ActivityDetailed)
-> Parser Integer
-> Parser
     (AthleteMeta
      -> Integer
      -> Double
      -> Maybe Double
      -> Maybe Double
      -> Double
      -> Integer
      -> Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"achievement_count"
    Parser
  (AthleteMeta
   -> Integer
   -> Double
   -> Maybe Double
   -> Maybe Double
   -> Double
   -> Integer
   -> Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser AthleteMeta
-> Parser
     (Integer
      -> Double
      -> Maybe Double
      -> Maybe Double
      -> Double
      -> Integer
      -> Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser AthleteMeta
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"athlete"
    Parser
  (Integer
   -> Double
   -> Maybe Double
   -> Maybe Double
   -> Double
   -> Integer
   -> Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Integer
-> Parser
     (Double
      -> Maybe Double
      -> Maybe Double
      -> Double
      -> Integer
      -> Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"athlete_count"
    Parser
  (Double
   -> Maybe Double
   -> Maybe Double
   -> Double
   -> Integer
   -> Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Double
-> Parser
     (Maybe Double
      -> Maybe Double
      -> Double
      -> Integer
      -> Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"average_speed"
    Parser
  (Maybe Double
   -> Maybe Double
   -> Double
   -> Integer
   -> Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Double)
-> Parser
     (Maybe Double
      -> Double
      -> Integer
      -> Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_watts"
    Parser
  (Maybe Double
   -> Double
   -> Integer
   -> Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Double)
-> Parser
     (Double
      -> Integer
      -> Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_heartrate"
    Parser
  (Double
   -> Integer
   -> Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Double
-> Parser
     (Integer
      -> Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"calories"
    Parser
  (Integer
   -> Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Integer
-> Parser
     (Bool
      -> Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"comment_count"
    Parser
  (Bool
   -> Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Bool
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"commute"
    Parser
  (Maybe Text
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"description"
    Parser
  (Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Bool)
-> Parser
     (Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"device_watts"
    Parser
  (Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Double
-> Parser
     (Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"distance"
    Parser
  (Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Integer
-> Parser
     (Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"elapsed_time"
    Parser
  (Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe (Double, Double))
-> Parser
     (Maybe Text
      -> Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Object
v Object -> Key -> Parser (Maybe [Double])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"end_latlng" Parser (Maybe [Double])
-> (Maybe [Double] -> Parser (Maybe (Double, Double)))
-> Parser (Maybe (Double, Double))
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Maybe [Double] -> Parser (Maybe (Double, Double))
parseLatlng)
    Parser
  (Maybe Text
   -> Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"external_id"
    Parser
  (Bool
   -> GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Bool
-> Parser
     (GearSummary
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"flagged"
    Parser
  (GearSummary
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser GearSummary
-> Parser
     (Maybe Text
      -> Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser GearSummary
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"gear"
    Parser
  (Maybe Text
   -> Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"gear_id"
    Parser
  (Bool
   -> Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Bool
-> Parser
     (Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"has_kudoed"
    Parser
  (Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Integer
-> Parser
     (Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
    Parser
  (Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Text)
-> Parser
     (Maybe Double
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"instagram_primary_photo"
    Parser
  (Maybe Double
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Double)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"kilojoules"
    Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"location_city"
    Parser
  (Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"location_country"
    Parser
  (Maybe Text
   -> Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"location_state"
    Parser
  (Bool
   -> PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Bool
-> Parser
     (PolylineDetailed
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"manual"
    Parser
  (PolylineDetailed
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser PolylineDetailed
-> Parser
     (Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser PolylineDetailed
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"map"
    Parser
  (Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe Double)
-> Parser
     (Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"max_heartrate"
    Parser
  (Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Double
-> Parser
     (Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"max_speed"
    Parser
  (Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Integer
-> Parser
     (Text
      -> Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"moving_time"
    Parser
  (Text
   -> Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Text
-> Parser
     (Integer
      -> Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
    Parser
  (Integer
   -> Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Integer
-> Parser
     (Bool
      -> ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"photo_count"
    Parser
  (Bool
   -> ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Bool
-> Parser
     (ResourceState
      -> [EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"private"
    Parser
  (ResourceState
   -> [EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser ResourceState
-> Parser
     ([EffortDetailed]
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser ResourceState
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"resource_state"
    Parser
  ([EffortDetailed]
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser [EffortDetailed]
-> Parser
     (UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser [EffortDetailed]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"segment_efforts"
    Parser
  (UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser UTCTime
-> Parser
     (UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser UTCTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date"
    Parser
  (UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser UTCTime
-> Parser
     (Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser UTCTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date_local"
    Parser
  (Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Double
-> Parser
     (Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_latitude"
    Parser
  (Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser (Maybe (Double, Double))
-> Parser
     (Double
      -> Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Object
v Object -> Key -> Parser (Maybe [Double])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"start_latlng" Parser (Maybe [Double])
-> (Maybe [Double] -> Parser (Maybe (Double, Double)))
-> Parser (Maybe (Double, Double))
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Maybe [Double] -> Parser (Maybe (Double, Double))
parseLatlng)
    Parser
  (Double
   -> Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Double
-> Parser
     (Text
      -> Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_longitude"
    Parser
  (Text
   -> Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Text
-> Parser
     (Double
      -> Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"timezone"
    Parser
  (Double
   -> Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Double
-> Parser
     (Bool
      -> Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"total_elevation_gain"
    Parser
  (Bool
   -> Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Bool
-> Parser
     (Integer
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"trainer"
    Parser
  (Integer
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivityDetailed)
-> Parser Integer
-> Parser
     (ActivityType
      -> Maybe Integer -> Maybe Integer -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"truncated"
    Parser
  (ActivityType
   -> Maybe Integer -> Maybe Integer -> ActivityDetailed)
-> Parser ActivityType
-> Parser (Maybe Integer -> Maybe Integer -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser ActivityType
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type"
    Parser (Maybe Integer -> Maybe Integer -> ActivityDetailed)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> ActivityDetailed)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"upload_id"
    Parser (Maybe Integer -> ActivityDetailed)
-> Parser (Maybe Integer) -> Parser ActivityDetailed
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"weighted_average_watts"

-- | <http://strava.github.io/api/v3/activities/#summary>
data ActivitySummary = ActivitySummary
  { ActivitySummary -> Integer
activitySummary_achievementCount     :: Integer
  , ActivitySummary -> AthleteMeta
activitySummary_athlete              :: AthleteMeta
  , ActivitySummary -> Integer
activitySummary_athleteCount         :: Integer
  , ActivitySummary -> Double
activitySummary_averageSpeed         :: Double
  , ActivitySummary -> Maybe Double
activitySummary_averageWatts         :: Maybe Double
  , ActivitySummary -> Maybe Double
activitySummary_averageHeartrate     :: Maybe Double
  , ActivitySummary -> Integer
activitySummary_commentCount         :: Integer
  , ActivitySummary -> Bool
activitySummary_commute              :: Bool
  , ActivitySummary -> Maybe Bool
activitySummary_deviceWatts          :: Maybe Bool
  , ActivitySummary -> Double
activitySummary_distance             :: Double
  , ActivitySummary -> Integer
activitySummary_elapsedTime          :: Integer
  , ActivitySummary -> Maybe (Double, Double)
activitySummary_endLatlng            :: Maybe (Double, Double)
  , ActivitySummary -> Maybe Text
activitySummary_externalId           :: Maybe Text
  , ActivitySummary -> Bool
activitySummary_flagged              :: Bool
  , ActivitySummary -> Maybe Text
activitySummary_gearId               :: Maybe Text
  , ActivitySummary -> Bool
activitySummary_hasKudoed            :: Bool
  , ActivitySummary -> Integer
activitySummary_id                   :: Integer
  , ActivitySummary -> Maybe Double
activitySummary_kilojoules           :: Maybe Double
  , ActivitySummary -> Integer
activitySummary_kudosCount           :: Integer
  , ActivitySummary -> Maybe Text
activitySummary_locationCity         :: Maybe Text
  , ActivitySummary -> Maybe Text
activitySummary_locationCountry      :: Maybe Text
  , ActivitySummary -> Maybe Text
activitySummary_locationState        :: Maybe Text
  , ActivitySummary -> Bool
activitySummary_manual               :: Bool
  , ActivitySummary -> PolylineSummary
activitySummary_map                  :: PolylineSummary
  , ActivitySummary -> Maybe Double
activitySummary_maxHeartrate         :: Maybe Double
  , ActivitySummary -> Double
activitySummary_maxSpeed             :: Double
  , ActivitySummary -> Integer
activitySummary_movingTime           :: Integer
  , ActivitySummary -> Text
activitySummary_name                 :: Text
  , ActivitySummary -> Integer
activitySummary_photoCount           :: Integer
  , ActivitySummary -> Bool
activitySummary_private              :: Bool
  , ActivitySummary -> ResourceState
activitySummary_resourceState        :: ResourceState
  , ActivitySummary -> UTCTime
activitySummary_startDate            :: UTCTime
  , ActivitySummary -> UTCTime
activitySummary_startDateLocal       :: UTCTime
  , ActivitySummary -> Double
activitySummary_startLatitude        :: Double
  , ActivitySummary -> Maybe (Double, Double)
activitySummary_startLatlng          :: Maybe (Double, Double)
  , ActivitySummary -> Double
activitySummary_startLongitude       :: Double
  , ActivitySummary -> Text
activitySummary_timezone             :: Text
  , ActivitySummary -> Double
activitySummary_totalElevationGain   :: Double
  , ActivitySummary -> Bool
activitySummary_trainer              :: Bool
  , ActivitySummary -> ActivityType
activitySummary_type                 :: ActivityType
  , ActivitySummary -> Maybe Integer
activitySummary_uploadId             :: Maybe Integer
  , ActivitySummary -> Maybe Integer
activitySummary_weightedAverageWatts :: Maybe Integer
  } deriving Int -> ActivitySummary -> ShowS
[ActivitySummary] -> ShowS
ActivitySummary -> String
(Int -> ActivitySummary -> ShowS)
-> (ActivitySummary -> String)
-> ([ActivitySummary] -> ShowS)
-> Show ActivitySummary
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ActivitySummary] -> ShowS
$cshowList :: [ActivitySummary] -> ShowS
show :: ActivitySummary -> String
$cshow :: ActivitySummary -> String
showsPrec :: Int -> ActivitySummary -> ShowS
$cshowsPrec :: Int -> ActivitySummary -> ShowS
Show

instance FromJSON ActivitySummary where
  parseJSON :: Value -> Parser ActivitySummary
parseJSON = String
-> (Object -> Parser ActivitySummary)
-> Value
-> Parser ActivitySummary
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ActivitySummary" ((Object -> Parser ActivitySummary)
 -> Value -> Parser ActivitySummary)
-> (Object -> Parser ActivitySummary)
-> Value
-> Parser ActivitySummary
forall a b. (a -> b) -> a -> b
$ \Object
v -> Integer
-> AthleteMeta
-> Integer
-> Double
-> Maybe Double
-> Maybe Double
-> Integer
-> Bool
-> Maybe Bool
-> Double
-> Integer
-> Maybe (Double, Double)
-> Maybe Text
-> Bool
-> Maybe Text
-> Bool
-> Integer
-> Maybe Double
-> Integer
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> PolylineSummary
-> Maybe Double
-> Double
-> Integer
-> Text
-> Integer
-> Bool
-> ResourceState
-> UTCTime
-> UTCTime
-> Double
-> Maybe (Double, Double)
-> Double
-> Text
-> Double
-> Bool
-> ActivityType
-> Maybe Integer
-> Maybe Integer
-> ActivitySummary
ActivitySummary
    (Integer
 -> AthleteMeta
 -> Integer
 -> Double
 -> Maybe Double
 -> Maybe Double
 -> Integer
 -> Bool
 -> Maybe Bool
 -> Double
 -> Integer
 -> Maybe (Double, Double)
 -> Maybe Text
 -> Bool
 -> Maybe Text
 -> Bool
 -> Integer
 -> Maybe Double
 -> Integer
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Bool
 -> PolylineSummary
 -> Maybe Double
 -> Double
 -> Integer
 -> Text
 -> Integer
 -> Bool
 -> ResourceState
 -> UTCTime
 -> UTCTime
 -> Double
 -> Maybe (Double, Double)
 -> Double
 -> Text
 -> Double
 -> Bool
 -> ActivityType
 -> Maybe Integer
 -> Maybe Integer
 -> ActivitySummary)
-> Parser Integer
-> Parser
     (AthleteMeta
      -> Integer
      -> Double
      -> Maybe Double
      -> Maybe Double
      -> Integer
      -> Bool
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"achievement_count"
    Parser
  (AthleteMeta
   -> Integer
   -> Double
   -> Maybe Double
   -> Maybe Double
   -> Integer
   -> Bool
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser AthleteMeta
-> Parser
     (Integer
      -> Double
      -> Maybe Double
      -> Maybe Double
      -> Integer
      -> Bool
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser AthleteMeta
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"athlete"
    Parser
  (Integer
   -> Double
   -> Maybe Double
   -> Maybe Double
   -> Integer
   -> Bool
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Integer
-> Parser
     (Double
      -> Maybe Double
      -> Maybe Double
      -> Integer
      -> Bool
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"athlete_count"
    Parser
  (Double
   -> Maybe Double
   -> Maybe Double
   -> Integer
   -> Bool
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Double
-> Parser
     (Maybe Double
      -> Maybe Double
      -> Integer
      -> Bool
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"average_speed"
    Parser
  (Maybe Double
   -> Maybe Double
   -> Integer
   -> Bool
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Double)
-> Parser
     (Maybe Double
      -> Integer
      -> Bool
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_watts"
    Parser
  (Maybe Double
   -> Integer
   -> Bool
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Double)
-> Parser
     (Integer
      -> Bool
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"average_heartrate"
    Parser
  (Integer
   -> Bool
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Integer
-> Parser
     (Bool
      -> Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"comment_count"
    Parser
  (Bool
   -> Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Bool
-> Parser
     (Maybe Bool
      -> Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"commute"
    Parser
  (Maybe Bool
   -> Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Bool)
-> Parser
     (Double
      -> Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"device_watts"
    Parser
  (Double
   -> Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Double
-> Parser
     (Integer
      -> Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"distance"
    Parser
  (Integer
   -> Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Integer
-> Parser
     (Maybe (Double, Double)
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"elapsed_time"
    Parser
  (Maybe (Double, Double)
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe (Double, Double))
-> Parser
     (Maybe Text
      -> Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Object
v Object -> Key -> Parser (Maybe [Double])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"end_latlng" Parser (Maybe [Double])
-> (Maybe [Double] -> Parser (Maybe (Double, Double)))
-> Parser (Maybe (Double, Double))
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Maybe [Double] -> Parser (Maybe (Double, Double))
parseLatlng)
    Parser
  (Maybe Text
   -> Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"external_id"
    Parser
  (Bool
   -> Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Bool
-> Parser
     (Maybe Text
      -> Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"flagged"
    Parser
  (Maybe Text
   -> Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"gear_id"
    Parser
  (Bool
   -> Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Bool
-> Parser
     (Integer
      -> Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"has_kudoed"
    Parser
  (Integer
   -> Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Integer
-> Parser
     (Maybe Double
      -> Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
    Parser
  (Maybe Double
   -> Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Double)
-> Parser
     (Integer
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"kilojoules"
    Parser
  (Integer
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Integer
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"kudos_count"
    Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"location_city"
    Parser
  (Maybe Text
   -> Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"location_country"
    Parser
  (Maybe Text
   -> Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"location_state"
    Parser
  (Bool
   -> PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Bool
-> Parser
     (PolylineSummary
      -> Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"manual"
    Parser
  (PolylineSummary
   -> Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser PolylineSummary
-> Parser
     (Maybe Double
      -> Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser PolylineSummary
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"map"
    Parser
  (Maybe Double
   -> Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe Double)
-> Parser
     (Double
      -> Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"max_heartrate"
    Parser
  (Double
   -> Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Double
-> Parser
     (Integer
      -> Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"max_speed"
    Parser
  (Integer
   -> Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Integer
-> Parser
     (Text
      -> Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"moving_time"
    Parser
  (Text
   -> Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Text
-> Parser
     (Integer
      -> Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
    Parser
  (Integer
   -> Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Integer
-> Parser
     (Bool
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"photo_count"
    Parser
  (Bool
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Bool
-> Parser
     (ResourceState
      -> UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"private"
    Parser
  (ResourceState
   -> UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser ResourceState
-> Parser
     (UTCTime
      -> UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser ResourceState
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"resource_state"
    Parser
  (UTCTime
   -> UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser UTCTime
-> Parser
     (UTCTime
      -> Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser UTCTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date"
    Parser
  (UTCTime
   -> Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser UTCTime
-> Parser
     (Double
      -> Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser UTCTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_date_local"
    Parser
  (Double
   -> Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Double
-> Parser
     (Maybe (Double, Double)
      -> Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_latitude"
    Parser
  (Maybe (Double, Double)
   -> Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser (Maybe (Double, Double))
-> Parser
     (Double
      -> Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Object
v Object -> Key -> Parser (Maybe [Double])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"start_latlng" Parser (Maybe [Double])
-> (Maybe [Double] -> Parser (Maybe (Double, Double)))
-> Parser (Maybe (Double, Double))
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Maybe [Double] -> Parser (Maybe (Double, Double))
parseLatlng)
    Parser
  (Double
   -> Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Double
-> Parser
     (Text
      -> Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"start_longitude"
    Parser
  (Text
   -> Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Text
-> Parser
     (Double
      -> Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"timezone"
    Parser
  (Double
   -> Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Double
-> Parser
     (Bool
      -> ActivityType
      -> Maybe Integer
      -> Maybe Integer
      -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Double
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"total_elevation_gain"
    Parser
  (Bool
   -> ActivityType
   -> Maybe Integer
   -> Maybe Integer
   -> ActivitySummary)
-> Parser Bool
-> Parser
     (ActivityType -> Maybe Integer -> Maybe Integer -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"trainer"
    Parser
  (ActivityType -> Maybe Integer -> Maybe Integer -> ActivitySummary)
-> Parser ActivityType
-> Parser (Maybe Integer -> Maybe Integer -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser ActivityType
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type"
    Parser (Maybe Integer -> Maybe Integer -> ActivitySummary)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> ActivitySummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"upload_id"
    Parser (Maybe Integer -> ActivitySummary)
-> Parser (Maybe Integer) -> Parser ActivitySummary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"weighted_average_watts"

-- | <http://strava.github.io/api/v3/activities/#zones>
data ActivityZoneDistributionBucket = ActivityZoneDistributionBucket
  { ActivityZoneDistributionBucket -> Integer
activityZoneDistributionBucket_max  :: Integer
  , ActivityZoneDistributionBucket -> Integer
activityZoneDistributionBucket_min  :: Integer
  , ActivityZoneDistributionBucket -> Integer
activityZoneDistributionBucket_time :: Integer
  } deriving Int -> ActivityZoneDistributionBucket -> ShowS
[ActivityZoneDistributionBucket] -> ShowS
ActivityZoneDistributionBucket -> String
(Int -> ActivityZoneDistributionBucket -> ShowS)
-> (ActivityZoneDistributionBucket -> String)
-> ([ActivityZoneDistributionBucket] -> ShowS)
-> Show ActivityZoneDistributionBucket
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ActivityZoneDistributionBucket] -> ShowS
$cshowList :: [ActivityZoneDistributionBucket] -> ShowS
show :: ActivityZoneDistributionBucket -> String
$cshow :: ActivityZoneDistributionBucket -> String
showsPrec :: Int -> ActivityZoneDistributionBucket -> ShowS
$cshowsPrec :: Int -> ActivityZoneDistributionBucket -> ShowS
Show

$(deriveFromJSON options ''ActivityZoneDistributionBucket)

-- | <http://strava.github.io/api/v3/activities/#zones>
data ActivityZoneDetailed = ActivityZoneDetailed
  { ActivityZoneDetailed -> [ActivityZoneDistributionBucket]
activityZoneDetailed_distributionBuckets :: [ActivityZoneDistributionBucket]
  , ActivityZoneDetailed -> ResourceState
activityZoneDetailed_resourceState       :: ResourceState
  , ActivityZoneDetailed -> Bool
activityZoneDetailed_sensorBased         :: Bool
  , ActivityZoneDetailed -> ActivityZoneType
activityZoneDetailed_type                :: ActivityZoneType
  } deriving Int -> ActivityZoneDetailed -> ShowS
[ActivityZoneDetailed] -> ShowS
ActivityZoneDetailed -> String
(Int -> ActivityZoneDetailed -> ShowS)
-> (ActivityZoneDetailed -> String)
-> ([ActivityZoneDetailed] -> ShowS)
-> Show ActivityZoneDetailed
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ActivityZoneDetailed] -> ShowS
$cshowList :: [ActivityZoneDetailed] -> ShowS
show :: ActivityZoneDetailed -> String
$cshow :: ActivityZoneDetailed -> String
showsPrec :: Int -> ActivityZoneDetailed -> ShowS
$cshowsPrec :: Int -> ActivityZoneDetailed -> ShowS
Show

$(deriveFromJSON options ''ActivityZoneDetailed)

-- | <http://strava.github.io/api/v3/activities/#laps>
data ActivityLapSummary = ActivityLapSummary
    { ActivityLapSummary -> Integer
activityLapSummary_activityId         :: Integer
    , ActivityLapSummary -> Integer
activityLapSummary_athleteId          :: Integer
    , ActivityLapSummary -> Double
activityLapSummary_averageSpeed       :: Double
    , ActivityLapSummary -> Double
activityLapSummary_averageWatts       :: Double
    , ActivityLapSummary -> Double
activityLapSummary_distance           :: Double
    , ActivityLapSummary -> Integer
activityLapSummary_elapsedTime        :: Integer
    , ActivityLapSummary -> Integer
activityLapSummary_endIndex           :: Integer
    , ActivityLapSummary -> Integer
activityLapSummary_id                 :: Integer
    , ActivityLapSummary -> Integer
activityLapSummary_lapIndex           :: Integer
    , ActivityLapSummary -> Double
activityLapSummary_maxSpeed           :: Double
    , ActivityLapSummary -> Double
activityLapSummary_movingTime         :: Double
    , ActivityLapSummary -> Text
activityLapSummary_name               :: Text
    , ActivityLapSummary -> ResourceState
activityLapSummary_resourceState      :: ResourceState
    , ActivityLapSummary -> UTCTime
activityLapSummary_startDate          :: UTCTime
    , ActivityLapSummary -> UTCTime
activityLapSummary_startDateLocal     :: UTCTime
    , ActivityLapSummary -> Integer
activityLapSummary_startIndex         :: Integer
    , ActivityLapSummary -> Double
activityLapSummary_totalElevationGain :: Double
    } deriving Int -> ActivityLapSummary -> ShowS
[ActivityLapSummary] -> ShowS
ActivityLapSummary -> String
(Int -> ActivityLapSummary -> ShowS)
-> (ActivityLapSummary -> String)
-> ([ActivityLapSummary] -> ShowS)
-> Show ActivityLapSummary
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ActivityLapSummary] -> ShowS
$cshowList :: [ActivityLapSummary] -> ShowS
show :: ActivityLapSummary -> String
$cshow :: ActivityLapSummary -> String
showsPrec :: Int -> ActivityLapSummary -> ShowS
$cshowsPrec :: Int -> ActivityLapSummary -> ShowS
Show

instance FromJSON ActivityLapSummary where
    parseJSON :: Value -> Parser ActivityLapSummary
parseJSON (Object Object
o) = Integer
-> Integer
-> Double
-> Double
-> Double
-> Integer
-> Integer
-> Integer
-> Integer
-> Double
-> Double
-> Text
-> ResourceState
-> UTCTime
-> UTCTime
-> Integer
-> Double
-> ActivityLapSummary
ActivityLapSummary
        (Integer
 -> Integer
 -> Double
 -> Double
 -> Double
 -> Integer
 -> Integer
 -> Integer
 -> Integer
 -> Double
 -> Double
 -> Text
 -> ResourceState
 -> UTCTime
 -> UTCTime
 -> Integer
 -> Double
 -> ActivityLapSummary)
-> Parser Integer
-> Parser
     (Integer
      -> Double
      -> Double
      -> Double
      -> Integer
      -> Integer
      -> Integer
      -> Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
   -> Double
   -> Double
   -> Double
   -> Integer
   -> Integer
   -> Integer
   -> Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Integer
-> Parser
     (Double
      -> Double
      -> Double
      -> Integer
      -> Integer
      -> Integer
      -> Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
  (Double
   -> Double
   -> Double
   -> Integer
   -> Integer
   -> Integer
   -> Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Double
-> Parser
     (Double
      -> Double
      -> Integer
      -> Integer
      -> Integer
      -> Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
"average_speed"
        Parser
  (Double
   -> Double
   -> Integer
   -> Integer
   -> Integer
   -> Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Double
-> Parser
     (Double
      -> Integer
      -> Integer
      -> Integer
      -> Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
"average_watts"
        Parser
  (Double
   -> Integer
   -> Integer
   -> Integer
   -> Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Double
-> Parser
     (Integer
      -> Integer
      -> Integer
      -> Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
   -> Integer
   -> Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Integer
-> Parser
     (Integer
      -> Integer
      -> Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
   -> Integer
   -> Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Integer
-> Parser
     (Integer
      -> Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
  (Integer
   -> Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Integer
-> Parser
     (Integer
      -> Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
  (Integer
   -> Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Integer
-> Parser
     (Double
      -> Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
"lap_index"
        Parser
  (Double
   -> Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Double
-> Parser
     (Double
      -> Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
"max_speed"
        Parser
  (Double
   -> Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Double
-> Parser
     (Text
      -> ResourceState
      -> UTCTime
      -> UTCTime
      -> Integer
      -> Double
      -> ActivityLapSummary)
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
"moving_time"
        Parser
  (Text
   -> ResourceState
   -> UTCTime
   -> UTCTime
   -> Integer
   -> Double
   -> ActivityLapSummary)
-> Parser Text
-> Parser
     (ResourceState
      -> UTCTime -> UTCTime -> Integer -> Double -> ActivityLapSummary)
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
  (ResourceState
   -> UTCTime -> UTCTime -> Integer -> Double -> ActivityLapSummary)
-> Parser ResourceState
-> Parser
     (UTCTime -> UTCTime -> Integer -> Double -> ActivityLapSummary)
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
  (UTCTime -> UTCTime -> Integer -> Double -> ActivityLapSummary)
-> Parser UTCTime
-> Parser (UTCTime -> Integer -> Double -> ActivityLapSummary)
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 -> Double -> ActivityLapSummary)
-> Parser UTCTime
-> Parser (Integer -> Double -> ActivityLapSummary)
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 -> Double -> ActivityLapSummary)
-> Parser Integer -> Parser (Double -> ActivityLapSummary)
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"
        Parser (Double -> ActivityLapSummary)
-> Parser Double -> Parser ActivityLapSummary
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
"total_elevation_gain"
    parseJSON Value
_ = Parser ActivityLapSummary
forall (f :: * -> *) a. Alternative f => f a
empty