Exemplo n.º 1
0
        public LeaderBoardResult GetLeaderBoardResultsAsync(int id, searchMetaData searchMetaData)
        {
            Task <LeaderBoardResult> task = Task.Run(() => _stravaProvider.GetLeaderBoardResultsAsync(id, searchMetaData));

            task.Wait();
            return(task?.Result);
        }
Exemplo n.º 2
0
        public void StandardExecution(string accessToken)
        {
            var container = new UnityContainer();

            container.RegisterType <IStravaProvider, StravaProvider>();
            container.RegisterType <IStravaBusiness, StravaBusiness>();
            stravaBusiness = container.Resolve <StravaBusiness>();

            stravaBusiness.accessToken = accessToken;

            int numberOfLeaderBoardsToCheck = 600;

            IRandomNumberGen randomNumbersProvider = new PsuedoRandomNumberGen();

            List <Coordinates> seedCoordinates = randomNumbersProvider.SaveRandomCoordinates(numberOfLeaderBoardsToCheck);

            List <segment> segmentsToSearch = stravaBusiness.GetCyclingSegments(seedCoordinates);

            //stravaBusiness.SaveSegmentsToSearch(segmentsToSearch);

            LeaderBoardResult           leaderBoardResults;
            List <SegmentAndEffortData> sectionAndEffortData = new List <SegmentAndEffortData>();


            foreach (var segementToSearch in segmentsToSearch)
            {
                searchMetaData metaDataToSearch = searchMetaData.randomMetaData();
                leaderBoardResults = stravaBusiness.GetLeaderBoardResultsAsync(segementToSearch.id, metaDataToSearch);
                if (leaderBoardResults.entries?.Count == leaderBoardResults.entry_count)
                {
                    foreach (var entry in leaderBoardResults.entries)
                    {
                        sectionAndEffortData.Add(new SegmentAndEffortData(segementToSearch, entry, metaDataToSearch));
                    }
                }
                else
                {
                    Console.WriteLine("not all entries have been selected. Total Entries = " + leaderBoardResults.entry_count + ", Returned results = " + leaderBoardResults.entries?.Count ?? "0");
                }
            }


            stravaBusiness.SaveDetails(sectionAndEffortData);

            List <SectionEffortStatistics> statistics = stravaBusiness.GetSectionEffortStatistics(sectionAndEffortData);

            stravaBusiness.SaveStatistics(statistics);
        }
        public async Task <LeaderBoardResult> GetLeaderBoardResultsAsync(int segmentId, searchMetaData searchMetaData)
        {
            string uri = baseUrl +
                         segmentsUrl + "/" +
                         segmentId + "/" +
                         leaderBoardUrl + "?" +
                         "per_page=" + searchMetaData.per_page + "&" +
                         "date_range=" + searchMetaData.date_range + "&" +
                         "gender=" + searchMetaData.Gender + "&" +
                         "age_group=" + searchMetaData.age_group + "&" +
                         "weight_class=" + searchMetaData.weight_class + "&" +
                         accessTokenQuery + accessToken;

            using (HttpClient client = new HttpClient())
            {
                HttpResponseMessage response = await client.GetAsync(uri);

                var data = response.Content.ReadAsStringAsync().Result;
                LeaderBoardResult leaderBoardResult = new LeaderBoardResult();
                try
                {
                    leaderBoardResult = JsonConvert.DeserializeObject <LeaderBoardResult>(data);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                return(leaderBoardResult);
            }
        }