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)); }