-- |
module Strive.Actions.Athletes
( getCurrentAthlete
, getAthlete
, updateCurrentAthlete
, getAthleteStats
, getAthleteCrs
) where
import Network.HTTP.Types (Query, toQuery)
import Strive.Client (Client)
import Strive.Internal.HTTP (get, put)
import Strive.Options (GetAthleteCrsOptions, UpdateCurrentAthleteOptions)
import Strive.Types (AthleteDetailed, AthleteStats, AthleteSummary,
EffortDetailed)
-- |
getCurrentAthlete :: Client -> IO (Either String AthleteDetailed)
getCurrentAthlete client = get client resource query
where
resource = "api/v3/athlete"
query = [] :: Query
-- |
getAthlete :: Client -> Integer -> IO (Either String AthleteSummary)
getAthlete client athleteId = get client resource query
where
resource = "api/v3/athletes/" ++ show athleteId
query = [] :: Query
-- |
updateCurrentAthlete :: Client -> UpdateCurrentAthleteOptions -> IO (Either String AthleteDetailed)
updateCurrentAthlete client options = put client resource query
where
resource = "api/v3/athlete"
query = toQuery options
-- |
getAthleteStats :: Client -> Integer -> IO (Either String AthleteStats)
getAthleteStats client athleteId = get client resource query
where
resource = "api/v3/athletes/" ++ show athleteId ++ "/stats"
query = [] :: Query
-- |
getAthleteCrs :: Client -> Integer -> GetAthleteCrsOptions -> IO (Either String [EffortDetailed])
getAthleteCrs client athleteId options = get client resource query
where
resource = "api/v3/athletes/" ++ show athleteId ++ "/koms"
query = toQuery options