Esempio n. 1
0
        public async Task <IEnumerable <Repository> > GetRepositories(RepoSearchRequestViewModel repoRequest)
        {
            var github  = new GitHubClient(new ProductHeaderValue("DanTest"));
            var request = new SearchRepositoriesRequest(repoRequest.Term)
            {
                Language  = repoRequest.Language,
                Order     = SortDirection.Descending,
                SortField = RepoSearchSort.Updated,
                Archived  = repoRequest.IsArchived,
                PerPage   = 10
            };

            if ((int)repoRequest.Language != -1)
            {
                request.Language = repoRequest.Language;
            }
            var forksRange = BuildRange(repoRequest.ForkFrom, repoRequest.ForkTo);
            var sizeRange  = BuildRange(repoRequest.SizeFrom, repoRequest.SizeTo);
            var starsRange = BuildRange(repoRequest.StarsFrom, repoRequest.StarsTo);

            request.Forks = forksRange;
            request.Size  = sizeRange;
            request.Stars = starsRange;

            var repos = await github.Search.SearchRepo(request);

            return(repos.Items);
        }
        public async Task <IActionResult> LoadRepositories([FromBody] RepoSearchRequestViewModel repoRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            repoRequest.Id        = 0;
            repoRequest.TimeStamp = DateTime.Now;

            var gitHubReps = await _gitHubProvider.GetRepositories(repoRequest);

            var reps = _mapper.Map <List <Repo> >(gitHubReps);

            var request = _mapper.Map <RepoSearchRequest>(repoRequest);

            if (!reps.Any())
            {
                await _repoProvider.InsertRequest(request);
            }
            foreach (var rep in reps)
            {
                rep.SearchRequest = request;
            }
            await _repoProvider.InsertRepositories(reps);

            return(Ok(repoRequest));
        }