예제 #1
0
        public async Task <List <Model.Repository> > searchRepos(SearchRepositoriesRequestParameters requestParameters, int firstPage, int lastPage)
        {
            List <Model.Repository>   repos       = new List <Model.Repository>();
            SearchRepositoriesRequest repoRequest = getSearchRepoRequest(requestParameters);

            for (int i = firstPage; i <= lastPage; i++)
            {
                repoRequest.Page = i;
                SearchRepositoryResult result = await GlobalVariables.client.Search.SearchRepo(repoRequest);

                repos.AddRange(result.Items.Select(repo => new Model.Repository
                {
                    Name            = repo.Name,
                    Owner           = repo.Owner.Login,
                    Size            = repo.Size,
                    CreatedAt       = repo.CreatedAt,
                    UpdatedAt       = repo.UpdatedAt,
                    StargazersCount = repo.StargazersCount,
                    HtmlUrl         = repo.HtmlUrl,
                    Description     = repo.Description,
                    ForksCount      = repo.ForksCount,
                    Language        = repo.Language
                }).ToList());
            }

            return(repos);
        }
예제 #2
0
        private async void SearchBox_OnSuggestionsRequested(SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
        {
            if (string.IsNullOrWhiteSpace(args.QueryText))
            {
                return;
            }

            var deferral = args.Request.GetDeferral();

            SearchRepositoryResult result = await Util.Search(args.QueryText);

            foreach (Repository item in result.Items)
            {
                if (args.Request.IsCanceled)
                {
                    return;
                }

                args.Request.SearchSuggestionCollection.AppendResultSuggestion(
                    item.FullName,
                    item.Description ?? "No description",
                    item.Id.ToString(),
                    RandomAccessStreamReference.CreateFromUri(new Uri(item.Owner.AvatarUrl)),
                    "NoImage"
                    );
            }

            deferral.Complete();
        }
예제 #3
0
        /// <summary>
        /// Enumerate repositories.
        /// </summary>
        /// <returns>The list of repositories.</returns>
        public static async Task <List <GitHubRepository> > EnumerateRepositories()
        {
            List <GitHubRepository> Result = new();

            if (await Connect())
            {
                LastRepositorySearchTime = DateTimeOffset.UtcNow;
                SearchRepositoriesRequest Request       = new() { User = User.Login };
                SearchRepositoryResult    RequestResult = await Client.Search.SearchRepo(Request);

                foreach (Repository Repository in RequestResult.Items)
                {
                    if (Repository.Archived)
                    {
                        continue;
                    }

                    Result.Add(new GitHubRepository(Repository));
                }
            }

            lock (RepositoryActivityList)
            {
                RepositoryActivityList.Clear();
                RepositoryActivityList.AddRange(Result);
            }

            return(Result);
        }
    }
예제 #4
0
        private static async Task RepositoryAllFieldsExample(GitHubClient client)
        {
            var fromDate = new DateTime(2012, 3, 17);
            var toDate   = new DateTime(2019, 3, 17);

            int fromNumber = 1;
            int toNumber   = 10000;

            string term = "octokit";
            string user = "******";

            var request = new SearchRepositoriesRequest(term)
            {
                Archived  = false,
                Created   = new DateRange(fromDate, toDate),
                Fork      = ForkQualifier.IncludeForks,
                Forks     = new Range(fromNumber, toNumber),
                In        = new InQualifier[] { InQualifier.Name },
                Language  = Language.CSharp,
                Order     = SortDirection.Descending,
                Size      = new Range(fromNumber, SearchQualifierOperator.GreaterThan),
                SortField = RepoSearchSort.Stars,
                Stars     = new Range(fromNumber, SearchQualifierOperator.GreaterThanOrEqualTo),
                Updated   = new DateRange(fromDate, SearchQualifierOperator.GreaterThan),
                User      = user
            };

            SearchRepositoryResult result = await client.Search.SearchRepo(request);

            Console.WriteLine($"Search.SearchRepo (All Fields): TotalCount={result.TotalCount}");
        }
예제 #5
0
        public async Task <List <Repository> > RequestUserRepositories(string gitUser)
        {
            var request = new SearchRepositoriesRequest()
            {
                Fork      = ForkQualifier.IncludeForks,
                User      = gitUser,
                SortField = RepoSearchSort.Stars,
            };
            SearchRepositoryResult initialResult = await client.Search.SearchRepo(request);

            List <Repository> results = initialResult.Items.ToList();

            int maxPages = (int)Math.Ceiling((double)initialResult.TotalCount / 100);

            if (maxPages > 1)
            {
                for (int i = 2; i <= maxPages; i++)
                {
                    request.Page = i;
                    SearchRepositoryResult result = await client.Search.SearchRepo(request);

                    results = results.Concat(result.Items.ToList()).ToList();
                }
            }
            return(results);
        }
예제 #6
0
        //
        // GET: /Home/
        public ActionResult Index()
        {
            //github.Credentials = new Credentials("f0f911b0cbccb5cadd20a969cd7c1239df771d5f");



            _github.Credentials = new Credentials((string)Session["token"]);



            var searchRepositoriesRequest = new SearchRepositoriesRequest("erm")
            {
                Language = Language.CSharp,
                Order    = SortDirection.Descending,
                PerPage  = 10,
            };

            var repo = _github.Repository.Get("ermtech", "erm.trunk").Result;

            var commits = _github.Repository.Commits.GetAll("ermtech", "erm.trunk").Result;



            SearchRepositoryResult searchRepositoryResult = _github.Search.SearchRepo(searchRepositoriesRequest).Result;

            return(View(searchRepositoryResult.Items));
        }
예제 #7
0
        public IEnumerable <Uri> GetUris(int numberOfUris, SearchRepositoriesRequest searchRepositoriesRequest)
        {
            var uris = new List <Uri>();

            if (numberOfUris < 1)
            {
                throw new GitHubActiveReposFinderException("Cannot look for less than 1 Uris");
            }
            if (numberOfUris > 999)
            {
                throw new GitHubActiveReposFinderException("Cannot look for more than 999 Uris");
            }

            var itemsPerPage = 100; // seems to be a maximum of 100 for GitHub
            int pagesNeeded  = (numberOfUris / itemsPerPage) + 1;

            for (int page = 1; page <= pagesNeeded; page++)
            {
                searchRepositoriesRequest.PerPage = itemsPerPage;
                searchRepositoriesRequest.Page    = page;

                SearchRepositoryResult result = _githubClient.Search.SearchRepo(searchRepositoriesRequest).Result;

                uris.AddRange(result.Items.Select(repos => new Uri(repos.HtmlUrl)));
            }

            return(uris
                   .Distinct()
                   .Take(numberOfUris));;
        }
예제 #8
0
        private void ProcessForDB(int currentBatch, int currentPage, SearchRepositoryResult searchResult)
        {
            lock (_lockDBWriter)
            {
                try
                {
                    int alreadyProcessedInBlock = 0;

                    foreach (var repo in searchResult.Items)
                    {
                        if (AlreadyProcessedRepoIds.Contains(repo.Id))
                        {
                            alreadyProcessedInBlock++;
                            continue;
                        }

                        var repoInfo = new RepositoryInfo
                        {
                            GitHubId        = repo.Id,
                            Archived        = repo.Archived,
                            CreatedAt       = repo.CreatedAt,
                            DefaultBranch   = repo.DefaultBranch,
                            Description     = repo.Description,
                            Fork            = repo.Fork,
                            ForksCount      = repo.ForksCount,
                            HasDownloads    = repo.HasDownloads,
                            HasIssues       = repo.HasIssues,
                            HasPages        = repo.HasPages,
                            HasWiki         = repo.HasWiki,
                            Homepage        = repo.Homepage,
                            HtmlUrl         = repo.HtmlUrl,
                            IsTemplate      = repo.IsTemplate,
                            Language        = repo.Language,
                            LicenseKey      = repo.License?.Key,
                            MirrorUrl       = repo.MirrorUrl,
                            Name            = repo.Name,
                            NodeId          = repo.NodeId,
                            OpenIssuesCount = repo.OpenIssuesCount,
                            OwnerLoginName  = repo.Owner.Login,
                            PushedAt        = repo.PushedAt,
                            Size            = repo.Size,
                            StargazersCount = repo.StargazersCount,
                            UpdatedAt       = repo.UpdatedAt,
                            WatchersCount   = repo.WatchersCount
                        };

                        Context.RepositoryInfos.Add(repoInfo);
                        AlreadyProcessedRepoIds.Add(repo.Id);
                    }

                    Log.Info($"Processed changes of #{currentBatch}/({currentPage})={searchResult.Items.Count - alreadyProcessedInBlock}; already processed repos={alreadyProcessedInBlock}");
                }
                catch (Exception ex)
                {
                    Log.Error($"Failed to process for DB #{currentBatch}/({currentPage})", ex);
                }
            }
        }
        public async Task <SearchRepositoryResult> searchGitHubRepository(string searchTerm)
        {
            var githubClient = new GitHubClient(new ProductHeaderValue("TesteAteliware"));

            var request = new SearchRepositoriesRequest(searchTerm);
            var result  = await githubClient.Search.SearchRepo(request);

            this.result = result;

            return(result);
        }
예제 #10
0
        //Octokit doesnt seems to return forked repositories ...
        public async Task <List <Repository> > getUserMostStarredRepositoriesAsync(string login, int limit)
        {
            var request = new SearchRepositoriesRequest()
            {
                Fork = ForkQualifier.IncludeForks,
                User = login
            };

            SearchRepositoryResult searchResult = await _client.Search.SearchRepo(request);

            return(searchResult.Items.OrderByDescending(r => r.StargazersCount).Take(limit).ToList());
        }
예제 #11
0
        private void CarregarRepository(SearchRepositoryResult result)
        {
            List <UsuarioRepository> listaRepository = new List <UsuarioRepository>();

            foreach (var repositoryUsuario in result.Items)
            {
                //armazena os dados de Id, Name e URL
                listaRepository.Add(new UsuarioRepository(repositoryUsuario.Id, repositoryUsuario.Name, repositoryUsuario.Url));
            }


            dataGrid.ItemsSource = listaRepository;
        }
예제 #12
0
        private void ListarRepositoryUsuario()
        {
            var consultarUsuario = new SearchRepositoriesRequest()
            {
                User = txtNome.Text
            };
            SearchRepositoryResult resultadoConsulta = gitHubClient.Search.SearchRepo(consultarUsuario).Result;

            CarregarRepository(resultadoConsulta);

            //carrega os dados Id, Name e URL na dataGrid
            dataGrid.ItemsSource = resultadoConsulta.Items.Select(i => new { i.Name, i.Url });
        }
예제 #13
0
        private void TrySetLastRepo(int currentBatch, int currentPage, SearchRepositoryResult searchResult, Action <Repository> onLastRepo)
        {
            var lastRepo = searchResult.Items.Last();

            if (lastRepo == null)
            {
                Log.Warn($"Unable to find last repo for search-page ({currentPage}) of batch #{currentBatch} skipping it");
            }
            else
            {
                onLastRepo?.Invoke(lastRepo);
            }
        }
예제 #14
0
        public static async Task <SearchRepositoryResult> SearchRepositories(string searchedVal)
        {
            try
            {
                var client = new GitHubClient(new Octokit.ProductHeaderValue("octokit"));
                SearchRepositoryResult repos = await client.Search.SearchRepo(new SearchRepositoriesRequest(searchedVal));

                return(repos);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #15
0
        private async void searchButton_Click(object sender, EventArgs e)
        {
            var term    = searchBox.Text;
            var results = await GitHubClientActions.SearchGitHub(term);

            searchResults = results;
            foreach (var res in searchResults.Items)
            {
                SearchResultGrid result = new SearchResultGrid {
                    FullName = res.FullName, URL = new Uri(res.Url), Stars = res.StargazersCount.ToString(), Language = res.Language, OpenIssues = res.OpenIssuesCount.ToString()
                };
                gridData.Add(result);
            }
            resultsGrid.DataSource = gridData;
        }
예제 #16
0
        public async Task <IEnumerable <GitRemoteRepository> > SearchAsync(
            Guid serviceId,
            string searchString,
            CancellationToken cancellationToken)
        {
            GitHubConnectedService service = await _clientFactory.ConnectAsync(serviceId, cancellationToken);

            GitHubClient client  = _clientFactory.CreateClient(serviceId);
            var          request = new SearchRepositoriesRequest(searchString);

            request.User = service.Owner;

            SearchRepositoryResult searchResult = await client.Search.SearchRepo(request);

            return(searchResult.Items.Select(x => ToRemoteRepository(service, x)));
        }
예제 #17
0
        private static void OnActivitySearchComplete(SearchRepositoryResult searchResult)
        {
            List <long> ModifiedRepositoryIdList = new();

            foreach (Repository Repository in searchResult.Items)
            {
                if (Repository.Archived)
                {
                    continue;
                }

                ModifiedRepositoryIdList.Add(Repository.Id);
            }

            NotifyActivityReported(ModifiedRepositoryIdList);
        }
예제 #18
0
        private static void ActivityTimerCallback(object parameter)
        {
            switch (State)
            {
            default:
            case ActivityTimerState.Init:
            case ActivityTimerState.GetRemainingRequests:
                GetRateLimitsTask = Client.Miscellaneous.GetRateLimits();
                State             = ActivityTimerState.Reconnect;
                break;

            case ActivityTimerState.Reconnect:
                if (GetRateLimitsTask == null || !GetRateLimitsTask.IsCompleted)
                {
                    return;
                }

                RemainingRequests = TranslateRateLimits(GetRateLimitsTask.Result);
                GetRateLimitsTask = null;

                if (RemainingRequests >= RemainingRequestsThreshold)
                {
                    ScheduleActivityCheck();
                    State = ActivityTimerState.EnumerateRepositories;
                }
                else
                {
                    State = ActivityTimerState.GetRemainingRequests;
                }
                break;

            case ActivityTimerState.EnumerateRepositories:
                if (RepositoryActivityTask == null || !RepositoryActivityTask.IsCompleted)
                {
                    return;
                }

                SearchRepositoryResult SearchResult = RepositoryActivityTask.Result;
                RepositoryActivityTask = null;

                OnActivitySearchComplete(SearchResult);
                State = ActivityTimerState.GetRemainingRequests;
                break;
            }
        }
예제 #19
0
        private static List <RepositorioGitDTO> ObterRepositoriosGitDoUsuarioLogado()
        {
            repositoriosGitDTO = new List <RepositorioGitDTO>();
            var buscaRepositoriosGitUsuario = new SearchRepositoriesRequest()
            {
                User = ConfigConsumoGitWebServices.UsuarioGit
            };
            SearchRepositoryResult repositoriosGitUsuario = gitHubClient.Search.SearchRepo(buscaRepositoriosGitUsuario).Result;

            foreach (var item in repositoriosGitUsuario.Items)
            {
                repositoriosGitDTO.Add(new RepositorioGitDTO {
                    Id = item.Id, Nome = item.Name, CloneUrl = item.CloneUrl, Url = item.Url
                });
            }

            return(repositoriosGitDTO);
        }
예제 #20
0
        private static async Task RepositoryExamples(GitHubClient client)
        {
            Repository repository = await client.Repository.Get("octokit", "octokit.net");

            Console.WriteLine($"Repository.Get: Id={repository.Id}");

            Branch branch = await client.Repository.Branch.Get("octokit", "octokit.net", "master");

            Console.WriteLine($"Repository.Branch.Get: Name={branch.Name}");

            SearchRepositoryResult result = await client.Search.SearchRepo(
                new SearchRepositoriesRequest("octokit")
            {
                In = new InQualifier[] { InQualifier.Name }
            });

            Console.WriteLine($"Search.SearchRepo (Simple Search): TotalCount={result.TotalCount}");

            await RepositoryAllFieldsExample(client);
        }
예제 #21
0
        public ServiceTests()
        {
            //Configure db
            var optionsBuilder =
                new DbContextOptionsBuilder <GithubReposContext>()
                .UseInMemoryDatabase("githubReposTestDB");
            var _dbContext = new GithubReposContext(optionsBuilder.Options);

            //Mock octokit
            ReadOnlyCollection <Repository> mockedRepos = new ReadOnlyCollection <Repository>(GetRepos());
            var response = new SearchRepositoryResult(ListSize, false, mockedRepos);

            var mockedClient = new Mock <IGitHubClient>();

            mockedClient.Setup(githubService =>
                               githubService.Search.SearchRepo(It.IsAny <SearchRepositoriesRequest>()))
            .Returns(Task.Factory.StartNew(() => response));

            //Mount service
            _service = new GithubService(_dbContext, mockedClient.Object);
        }
예제 #22
0
        public async Task <int> getNumberOfPages(Model.SearchRepositoriesRequestParameters requestParameters)
        {
            SearchRepositoriesRequest repoRequest = getSearchRepoRequest(requestParameters);
            SearchRepositoryResult    result      = await GlobalVariables.client.Search.SearchRepo(repoRequest);

            if (result.TotalCount == 0)
            {
                return(0);
            }

            if (result.TotalCount > 1000)
            {
                return(GlobalVariables.MaximumNumberOfPages);
            }

            if (result.TotalCount % repoRequest.PerPage == 0)
            {
                return(result.TotalCount / repoRequest.PerPage);
            }

            return(result.TotalCount / repoRequest.PerPage + 1);
        }
예제 #23
0
        private async Task InfoFromGIT()
        {
            var client = new GitHubClient(new ProductHeaderValue("CRUD"));
            var user   = await client.User.Get("elektronika96");

            Console.WriteLine("Cos");
            var request = new SearchRepositoriesRequest()
            {
                User = "******",
            };

            labUser.Text = "Właściciel repozytorium: " + request.User;
            SearchRepositoryResult result = await client.Search.SearchRepo(request);

            var items = result.Items.Where(x => x.Name == "CRUD");

            foreach (var item in items)
            {
                lab_CreateDate.Text = "Data utworzenia: " + item.CreatedAt.ToString().Remove(19);
                lab_URL.Text        = item.HtmlUrl;
            }
        }
예제 #24
0
        private async void GetRepositoryInformation(CommandMessage command)
        {
            try
            {
                GitHubClient github = new GitHubClient(new ProductHeaderValue("CombotIRCBot"));
                if (GetOptionValue("Token").ToString() != string.Empty)
                {
                    string token = GetOptionValue("Token").ToString();
                    github.Credentials = new Credentials(token);
                }
                SearchRepositoryResult foundRepo = await github.Search.SearchRepo(new SearchRepositoriesRequest(command.Arguments["Repository"]));

                if (foundRepo.TotalCount > 0)
                {
                    Repository repo        = foundRepo.Items.First();
                    string     repoMessage = string.Format("\u0002{0}\u0002 | Created On \u0002{1}\u0002 | \u0002{2}\u0002 Open Issues | \u0002{3}\u0002 Forks | \u0002{4}\u0002 Stargazers | {5}", repo.FullName, repo.CreatedAt.ToString("d"), repo.OpenIssuesCount, repo.ForksCount, repo.StargazersCount, repo.HtmlUrl);
                    SendResponse(command.MessageType, command.Location, command.Nick.Nickname, repoMessage);
                    if (repo.Description != string.Empty)
                    {
                        SendResponse(command.MessageType, command.Location, command.Nick.Nickname, repo.Description);
                    }
                }
                else
                {
                    SendResponse(command.MessageType, command.Location, command.Nick.Nickname, string.Format("Repository \u0002{0}\u0002 does not exist.", command.Arguments["Repository"]));
                }
            }
            catch (Octokit.RateLimitExceededException ex)
            {
                ThrowError(ex);
            }
            catch (Octokit.ApiValidationException ex)
            {
                ThrowError(ex);
                return;
            }
        }
예제 #25
0
        public async Task <string> GetUserData(string username)
        {
            User user = null;
            SearchRepositoryResult result = null;

            client.Credentials = currentCredentials;

            try
            {
                user = await client.User.Get(username);
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new JObject(
                                                       new JProperty("message", "User error")
                                                       )));
            }

            try
            {
                var customRequest = new SearchRepositoriesRequest()
                {
                    User = username
                };
                result = await client.Search.SearchRepo(customRequest);
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new JObject(
                                                       new JProperty("message", "Repository search error")
                                                       )));
            }

            JArray repositoriesArray = new JArray();

            foreach (Repository repository in result.Items)
            {
                repositoriesArray.Add(
                    new JObject(
                        new JProperty("name", repository.Name),
                        new JProperty("createdAt", repository.CreatedAt),
                        new JProperty("updatedAt", repository.UpdatedAt),
                        new JProperty("language", repository.Language),
                        new JProperty("stars", repository.StargazersCount),
                        new JProperty("forks", repository.ForksCount)
                        )
                    );
            }

            JObject userData = new JObject(
                new JProperty("login", user.Login),
                new JProperty("username", user.Name),
                new JProperty("email", user.Email),
                new JProperty("publicRepos", user.PublicRepos)
                );

            return(JsonConvert.SerializeObject(new JObject(
                                                   new JProperty("message", "Ok"),
                                                   new JProperty("userData", userData),
                                                   new JProperty("repositories", repositoriesArray)
                                                   )));
        }
예제 #26
0
        private async void ListUserReposAsync(GitHubClient ghCliente)
        {
            // //Populando Objeto de linguagem C#
            #region
            var searchRepositoriesRequest = new SearchRepositoriesRequest()
            {
                Language  = Language.CSharp,
                SortField = RepoSearchSort.Stars,
                Order     = SortDirection.Descending,
                PerPage   = 1
            };

            SearchRepositoryResult searchRepositoryResult = await ghCliente.Search.SearchRepo(searchRepositoriesRequest);

            repoCsharp.CreatedAt    = searchRepositoryResult.Items[0].CreatedAt.DateTime;
            repoCsharp.Description  = searchRepositoryResult.Items[0].Description;
            repoCsharp.hasDownloads = Convert.ToByte(searchRepositoryResult.Items[0].HasDownloads);
            repoCsharp.hasIssues    = Convert.ToByte(searchRepositoryResult.Items[0].HasIssues);
            repoCsharp.htmlURL      = searchRepositoryResult.Items[0].HtmlUrl;
            repoCsharp.Language     = searchRepositoryResult.Items[0].Language;
            repoCsharp.UpdatedAt    = searchRepositoryResult.Items[0].UpdatedAt.DateTime;
            repoCsharp.Stars        = searchRepositoryResult.Items[0].StargazersCount;
            repoCsharp.Name         = searchRepositoryResult.Items[0].Name;

            #endregion

            //Populando Objeto de linguagem javaScript
            #region

            searchRepositoriesRequest = new SearchRepositoriesRequest()
            {
                Language  = Language.JavaScript,
                SortField = RepoSearchSort.Stars,
                Order     = SortDirection.Descending,
                PerPage   = 1
            };

            searchRepositoryResult = await ghCliente.Search.SearchRepo(searchRepositoriesRequest);

            repoJavaScript.CreatedAt    = searchRepositoryResult.Items[0].CreatedAt.DateTime;
            repoJavaScript.Description  = searchRepositoryResult.Items[0].Description;
            repoJavaScript.hasDownloads = Convert.ToByte(searchRepositoryResult.Items[0].HasDownloads);
            repoJavaScript.hasIssues    = Convert.ToByte(searchRepositoryResult.Items[0].HasIssues);
            repoJavaScript.htmlURL      = searchRepositoryResult.Items[0].HtmlUrl;
            repoJavaScript.Language     = searchRepositoryResult.Items[0].Language;
            repoJavaScript.UpdatedAt    = searchRepositoryResult.Items[0].UpdatedAt.DateTime;
            repoJavaScript.Stars        = searchRepositoryResult.Items[0].StargazersCount;
            repoJavaScript.Name         = searchRepositoryResult.Items[0].Name;
            #endregion

            //Populando Objeto de linguagem Arduino(Wiring)
            #region
            searchRepositoriesRequest = new SearchRepositoriesRequest()
            {
                Language  = Language.Arduino,
                SortField = RepoSearchSort.Stars,
                Order     = SortDirection.Descending,
                PerPage   = 1
            };

            searchRepositoryResult = await ghCliente.Search.SearchRepo(searchRepositoriesRequest);

            repoArduino.CreatedAt    = searchRepositoryResult.Items[0].CreatedAt.DateTime;
            repoArduino.Description  = searchRepositoryResult.Items[0].Description;
            repoArduino.hasDownloads = Convert.ToByte(searchRepositoryResult.Items[0].HasDownloads);
            repoArduino.hasIssues    = Convert.ToByte(searchRepositoryResult.Items[0].HasIssues);
            repoArduino.htmlURL      = searchRepositoryResult.Items[0].HtmlUrl;
            repoArduino.Language     = searchRepositoryResult.Items[0].Language;
            repoArduino.UpdatedAt    = searchRepositoryResult.Items[0].UpdatedAt.DateTime;
            repoArduino.Stars        = searchRepositoryResult.Items[0].StargazersCount;
            repoArduino.Name         = searchRepositoryResult.Items[0].Name;
            #endregion

            //Populando Objeto de linguagem Groovy
            #region
            searchRepositoriesRequest = new SearchRepositoriesRequest()
            {
                Language  = Language.Groovy,
                SortField = RepoSearchSort.Stars,
                Order     = SortDirection.Descending,
                PerPage   = 1
            };

            searchRepositoryResult = await ghCliente.Search.SearchRepo(searchRepositoriesRequest);

            repoGroovy.CreatedAt    = searchRepositoryResult.Items[0].CreatedAt.DateTime;
            repoGroovy.Description  = searchRepositoryResult.Items[0].Description;
            repoGroovy.hasDownloads = Convert.ToByte(searchRepositoryResult.Items[0].HasDownloads);
            repoGroovy.hasIssues    = Convert.ToByte(searchRepositoryResult.Items[0].HasIssues);
            repoGroovy.htmlURL      = searchRepositoryResult.Items[0].HtmlUrl;
            repoGroovy.Language     = searchRepositoryResult.Items[0].Language;
            repoGroovy.UpdatedAt    = searchRepositoryResult.Items[0].UpdatedAt.DateTime;
            repoGroovy.Stars        = searchRepositoryResult.Items[0].StargazersCount;
            repoGroovy.Name         = searchRepositoryResult.Items[0].Name;
            #endregion

            //Populando Objeto de linguagem Ruby on Rails
            #region
            searchRepositoriesRequest = new SearchRepositoriesRequest()
            {
                Language  = Language.Ruby,
                SortField = RepoSearchSort.Stars,
                Order     = SortDirection.Descending,
                PerPage   = 1
            };

            searchRepositoryResult = await ghCliente.Search.SearchRepo(searchRepositoriesRequest);

            repoRuby.CreatedAt    = searchRepositoryResult.Items[0].CreatedAt.DateTime;
            repoRuby.Description  = searchRepositoryResult.Items[0].Description;
            repoRuby.hasDownloads = Convert.ToByte(searchRepositoryResult.Items[0].HasDownloads);
            repoRuby.hasIssues    = Convert.ToByte(searchRepositoryResult.Items[0].HasIssues);
            repoRuby.htmlURL      = searchRepositoryResult.Items[0].HtmlUrl;
            repoRuby.Language     = searchRepositoryResult.Items[0].Language;
            repoRuby.UpdatedAt    = searchRepositoryResult.Items[0].UpdatedAt.DateTime;
            repoRuby.Stars        = searchRepositoryResult.Items[0].StargazersCount;
            repoRuby.Name         = searchRepositoryResult.Items[0].Name;

            #endregion
        }
예제 #27
0
        /// <summary>
        /// Gets the repositories using Search. Not used as the information is
        /// incomplete.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void OnGetUserRepositoriesClick1(object sender, EventArgs e)
        {
            if (client == null)
            {
                WriteLineInfo(NL + "Get User Repositories: No client defined");
                return;
            }
            string      userName;
            string      msg = "Enter ";
            InputDialog dlg = new InputDialog("Repository Name", msg,
                                              Properties.Settings.Default.RepositoryOwner);
            DialogResult res = dlg.ShowDialog();

            if (res == DialogResult.OK)
            {
                userName = dlg.Value;
                Properties.Settings.Default.RepositoryOwner = userName;
                Properties.Settings.Default.Save();
                if (!String.IsNullOrEmpty(userName))
                {
                    WriteLineInfo(NL + "Searching for Repositories for " + userName);
                }
                else
                {
                    WriteLineInfo(NL + "Searching for repositories: Invalid user name: "
                                  + userName);
                    return;
                }
            }
            else
            {
                return;
            }
            User user = await client.User.Get(userName);

            if (user == null)
            {
                WriteLineInfo("User not found: " + userName);
                return;
            }
            List <Repository> repositories = new List <Repository>();
            int page = 1;

            // Handle more than 1 page
            while (true)
            {
                SearchRepositoryResult reposResult = await client.Search.SearchRepo(new SearchRepositoriesRequest()
                {
                    User    = userName,
                    PerPage = 100,
                    Page    = page++
                });

                IReadOnlyList <Repository> repositories1 = reposResult.Items;
                if (repositories1 == null)
                {
                    WriteLineInfo("Error finding repositories");
                    return;
                }
                foreach (Repository repos in repositories1)
                {
                    repositories.Add(repos);
                }
                //WriteLineInfo($"Items.Count={reposResult.Items.Count} " +
                //    $"TotalCount={reposResult.TotalCount} " +
                //    $"IncompleteResults={reposResult.IncompleteResults}");
                if (repositories1.Count < 100)
                {
                    break;
                }
            }
            if (repositories.Count == 0)
            {
                WriteLineInfo("No repositories found");
                return;
            }
            await GetRepositories(userName, repositories);
        }