{-# LANGUAGE TemplateHaskell #-}
-- |
module Strive.Types.Segments
( SegmentDetailed (..),
SegmentSummary (..),
SegmentLeaderboardResponse (..),
SegmentLeaderboardEntry (..),
SegmentExplorerResponse (..),
SegmentExplorerEntry (..),
)
where
import Data.Aeson.TH (deriveFromJSON)
import Data.Text (Text)
import Data.Time.Clock (UTCTime)
import Strive.Enums (ActivityType, Gender, ResourceState)
import Strive.Internal.TH (options)
import Strive.Types.Polylines (Polyline, PolylineDetailed)
-- |
data SegmentDetailed = SegmentDetailed
{ segmentDetailed_activityType :: ActivityType,
segmentDetailed_athleteCount :: Integer,
segmentDetailed_averageGrade :: Double,
segmentDetailed_city :: Text,
segmentDetailed_climbCategory :: Integer,
segmentDetailed_country :: Text,
segmentDetailed_createdAt :: UTCTime,
segmentDetailed_distance :: Double,
segmentDetailed_effortCount :: Integer,
segmentDetailed_elevationHigh :: Double,
segmentDetailed_elevationLow :: Double,
segmentDetailed_endLatitude :: Double,
segmentDetailed_endLatlng :: (Double, Double),
segmentDetailed_endLongitude :: Double,
segmentDetailed_hazardous :: Bool,
segmentDetailed_id :: Integer,
segmentDetailed_map :: PolylineDetailed,
segmentDetailed_maximumGrade :: Double,
segmentDetailed_name :: Text,
segmentDetailed_private :: Bool,
segmentDetailed_resourceState :: ResourceState,
segmentDetailed_starCount :: Integer,
segmentDetailed_starred :: Bool,
segmentDetailed_startLatitude :: Double,
segmentDetailed_startLatlng :: (Double, Double),
segmentDetailed_startLongitude :: Double,
segmentDetailed_state :: Text,
segmentDetailed_totalElevationGain :: Double,
segmentDetailed_updatedAt :: UTCTime
}
deriving (Show)
$(deriveFromJSON options ''SegmentDetailed)
-- |
data SegmentSummary = SegmentSummary
{ segmentSummary_activityType :: ActivityType,
segmentSummary_averageGrade :: Double,
segmentSummary_city :: Text,
segmentSummary_climbCategory :: Integer,
segmentSummary_country :: Text,
segmentSummary_distance :: Double,
segmentSummary_elevationHigh :: Double,
segmentSummary_elevationLow :: Double,
segmentSummary_endLatitude :: Double,
segmentSummary_endLatlng :: (Double, Double),
segmentSummary_endLongitude :: Double,
segmentSummary_id :: Integer,
segmentSummary_maximumGrade :: Double,
segmentSummary_name :: Text,
segmentSummary_private :: Bool,
segmentSummary_resourceState :: ResourceState,
segmentSummary_starred :: Bool,
segmentSummary_startLatitude :: Double,
segmentSummary_startLatlng :: (Double, Double),
segmentSummary_startLongitude :: Double,
segmentSummary_state :: Text
}
deriving (Show)
$(deriveFromJSON options ''SegmentSummary)
-- |
data SegmentLeaderboardEntry = SegmentLeaderboardEntry
{ segmentLeaderboardEntry_activityId :: Integer,
segmentLeaderboardEntry_athleteGender :: Maybe Gender,
segmentLeaderboardEntry_athleteId :: Integer,
segmentLeaderboardEntry_athleteName :: Text,
segmentLeaderboardEntry_athleteProfile :: Text,
segmentLeaderboardEntry_averageHr :: Double,
segmentLeaderboardEntry_averageWatts :: Double,
segmentLeaderboardEntry_distance :: Double,
segmentLeaderboardEntry_effortId :: Integer,
segmentLeaderboardEntry_elapsedTime :: Integer,
segmentLeaderboardEntry_movingTime :: Integer,
segmentLeaderboardEntry_rank :: Integer,
segmentLeaderboardEntry_startDate :: UTCTime,
segmentLeaderboardEntry_startDateLocal :: UTCTime
}
deriving (Show)
$(deriveFromJSON options ''SegmentLeaderboardEntry)
-- |
data SegmentLeaderboardResponse = SegmentLeaderboardResponse
{ segmentLeaderboardResponse_effortCount :: Integer,
segmentLeaderboardResponse_entryCount :: Integer,
segmentLeaderboardResponse_entries :: [SegmentLeaderboardEntry]
}
deriving (Show)
$(deriveFromJSON options ''SegmentLeaderboardResponse)
-- |
data SegmentExplorerEntry = SegmentExplorerEntry
{ segmentExplorerEntry_avgGrade :: Double,
segmentExplorerEntry_climbCategory :: Integer,
segmentExplorerEntry_climbCategoryDesc :: String,
segmentExplorerEntry_distance :: Double,
segmentExplorerEntry_elevDifference :: Double,
segmentExplorerEntry_endLatlng :: (Double, Double),
segmentExplorerEntry_id :: Integer,
segmentExplorerEntry_name :: Text,
segmentExplorerEntry_points :: Polyline,
segmentExplorerEntry_resourceState :: ResourceState,
segmentExplorerEntry_starred :: Bool,
segmentExplorerEntry_startLatlng :: (Double, Double)
}
deriving (Show)
$(deriveFromJSON options ''SegmentExplorerEntry)
-- |
newtype SegmentExplorerResponse = SegmentExplorerResponse
{ segmentExplorerResponse_segments :: [SegmentExplorerEntry]
}
deriving (Show)
$(deriveFromJSON options ''SegmentExplorerResponse)