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 -> IO (Result AthleteDetailed)
getCurrentAthlete Client
client = forall q j.
(QueryLike q, FromJSON j) =>
Client -> String -> q -> IO (Result j)
get Client
client String
resource Query
query
where
resource :: String
resource = String
"api/v3/athlete"
query :: Query
query = [] :: Query
getAthlete :: Client -> AthleteId -> IO (Result AthleteSummary)
getAthlete :: Client -> AthleteId -> IO (Result AthleteSummary)
getAthlete Client
client AthleteId
athleteId = forall q j.
(QueryLike q, FromJSON j) =>
Client -> String -> q -> IO (Result j)
get Client
client String
resource Query
query
where
resource :: String
resource = String
"api/v3/athletes/" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show AthleteId
athleteId
query :: Query
query = [] :: Query
updateCurrentAthlete ::
Client -> UpdateCurrentAthleteOptions -> IO (Result AthleteDetailed)
updateCurrentAthlete :: Client
-> UpdateCurrentAthleteOptions -> IO (Result AthleteDetailed)
updateCurrentAthlete Client
client UpdateCurrentAthleteOptions
options = forall q j.
(QueryLike q, FromJSON j) =>
Client -> String -> q -> IO (Result j)
put Client
client String
resource Query
query
where
resource :: String
resource = String
"api/v3/athlete"
query :: Query
query = forall a. QueryLike a => a -> Query
toQuery UpdateCurrentAthleteOptions
options
getAthleteStats :: Client -> Integer -> IO (Result AthleteStats)
getAthleteStats :: Client -> AthleteId -> IO (Result AthleteStats)
getAthleteStats Client
client AthleteId
athleteId = forall q j.
(QueryLike q, FromJSON j) =>
Client -> String -> q -> IO (Result j)
get Client
client String
resource Query
query
where
resource :: String
resource = String
"api/v3/athletes/" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show AthleteId
athleteId forall a. Semigroup a => a -> a -> a
<> String
"/stats"
query :: Query
query = [] :: Query
getAthleteCrs ::
Client ->
AthleteId ->
GetAthleteCrsOptions ->
IO (Result [EffortDetailed])
getAthleteCrs :: Client
-> AthleteId
-> GetAthleteCrsOptions
-> IO (Result [EffortDetailed])
getAthleteCrs Client
client AthleteId
athleteId GetAthleteCrsOptions
options = forall q j.
(QueryLike q, FromJSON j) =>
Client -> String -> q -> IO (Result j)
get Client
client String
resource Query
query
where
resource :: String
resource = String
"api/v3/athletes/" forall a. Semigroup a => a -> a -> a
<> forall a. Show a => a -> String
show AthleteId
athleteId forall a. Semigroup a => a -> a -> a
<> String
"/koms"
query :: Query
query = forall a. QueryLike a => a -> Query
toQuery GetAthleteCrsOptions
options