public async Task <Leaderboard> GetSegmentLeaderboardAsync(string segmentId, WeightFilter weight, AgeFilter age, TimeFilter time, GenderFilter gender, int page, int perPage) { bool useGender = false; bool useTime = false; bool useAge = false; bool useWeight = false; string genderFilter = string.Empty; string timeFilter = string.Empty; string ageFilter = string.Empty; string weightFilter = string.Empty; if (!string.IsNullOrEmpty(StringConverter.GenderFilterToString(gender))) { genderFilter = $"gender={StringConverter.GenderFilterToString(gender)}"; useGender = true; } if (!string.IsNullOrEmpty(StringConverter.TimeFilterToString(time))) { timeFilter = $"date_range={StringConverter.TimeFilterToString(time)}"; useTime = true; } if (!string.IsNullOrEmpty(StringConverter.AgeFilterToString(age))) { ageFilter = $"age_group={StringConverter.AgeFilterToString(age)}"; useAge = true; } if (!string.IsNullOrEmpty(StringConverter.WeightFilterToString(weight))) { weightFilter = $"weight_class={StringConverter.WeightFilterToString(weight)}"; useWeight = true; } string getUrl = string.Format("{0}/{1}/leaderboard?{2}&{3}&{4}&{5}&page={6}&per_page={7}&access_token={8}", "https://www.strava.com/api/v3/segments", segmentId, useGender ? genderFilter : string.Empty, useTime ? timeFilter : string.Empty, useAge ? ageFilter : string.Empty, useWeight ? weightFilter : string.Empty, page, perPage, Authentication.AccessToken); return(Unmarshaller <Leaderboard> .Unmarshal(await WebRequest.SendGetAsync(new Uri(getUrl)))); }
/// <summary> /// Gets the leaderboard of a segment. You can use various filters to filter the data. /// Some of the filters require a Strava Premium account! /// </summary> /// <param name="segmentId">The Strava segment Id.</param> /// <param name="following">The leaderboard only shows athletes you're following.</param> /// <param name="weight">The weight class used to filter the leaderboard.</param> /// <param name="age">The age group used to filter the leaderboard.</param> /// <param name="time">The time used to filter the leaderboard.</param> /// <param name="gender">The gender used to filter the leaderboard.</param> /// <param name="page">The result page.</param> /// <param name="perPage">Efforts shown per page.</param> /// <returns>The leaderboard filtered by gender.</returns> public Leaderboard GetSegmentLeaderboard(string segmentId, bool following, WeightFilter weight, AgeFilter age, TimeFilter time, GenderFilter gender, int page, int perPage) { bool useGender = false; bool useTime = false; bool useAge = false; bool useWeight = false; string genderFilter = string.Empty; string timeFilter = string.Empty; string ageFilter = string.Empty; string weightFilter = string.Empty; if (!string.IsNullOrEmpty(StringConverter.GenderFilterToString(gender))) { genderFilter = string.Format("gender={0}", StringConverter.GenderFilterToString(gender)); useGender = true; } if (!string.IsNullOrEmpty(StringConverter.TimeFilterToString(time))) { timeFilter = string.Format("date_range={0}", StringConverter.TimeFilterToString(time)); useTime = true; } if (!string.IsNullOrEmpty(StringConverter.AgeFilterToString(age))) { ageFilter = string.Format("age_group={0}", StringConverter.AgeFilterToString(age)); useAge = true; } if (!string.IsNullOrEmpty(StringConverter.WeightFilterToString(weight))) { weightFilter = string.Format("weight_class={0}", StringConverter.WeightFilterToString(weight)); useWeight = true; } string getUrl = string.Format("{0}/{1}/leaderboard?{2}&{3}&{4}&{5}&following={6}&page={7}&per_page={8}&access_token={9}", Endpoints.Leaderboard, segmentId, useGender ? genderFilter : string.Empty, useTime ? timeFilter : string.Empty, useAge ? ageFilter : string.Empty, useWeight ? weightFilter : string.Empty, following, page, perPage, Authentication.AccessToken ); string json = WebRequest.SendGet(new Uri(getUrl)); return(Unmarshaller <Leaderboard> .Unmarshal(json)); }
public Leaderboard GetSegmentLeaderboard(string segmentId, bool following, WeightFilter weight, AgeFilter age, TimeFilter time, GenderFilter gender, int page, int perPage) { bool flag = false; bool flag2 = false; bool flag3 = false; bool flag4 = false; string text = string.Empty; string text2 = string.Empty; string text3 = string.Empty; string text4 = string.Empty; if (!string.IsNullOrEmpty(StringConverter.GenderFilterToString(gender))) { text = $"gender={StringConverter.GenderFilterToString(gender)}"; flag = true; } if (!string.IsNullOrEmpty(StringConverter.TimeFilterToString(time))) { text2 = $"date_range={StringConverter.TimeFilterToString(time)}"; flag2 = true; } if (!string.IsNullOrEmpty(StringConverter.AgeFilterToString(age))) { text3 = $"age_group={StringConverter.AgeFilterToString(age)}"; flag3 = true; } if (!string.IsNullOrEmpty(StringConverter.WeightFilterToString(weight))) { text4 = $"weight_class={StringConverter.WeightFilterToString(weight)}"; flag4 = true; } string uriString = string.Format("{0}/{1}/leaderboard?{2}&{3}&{4}&{5}&following={6}&page={7}&per_page={8}&access_token={9}", "https://www.strava.com/api/v3/segments", segmentId, flag ? text : string.Empty, flag2 ? text2 : string.Empty, flag3 ? text3 : string.Empty, flag4 ? text4 : string.Empty, following, page, perPage, Authentication.AccessToken); string json = WebRequest.SendGet(new Uri(uriString)); return(Unmarshaller <Leaderboard> .Unmarshal(json)); }