-- |
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