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