Ejemplo n.º 1
0
        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))));
        }
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
        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));
        }