Example #1
0
        private static async Task CodeAllFieldExample(GitHubClient client)
        {
            int fromNumber = 100;
            int toNumber   = 1000;

            string extension    = ".cs";
            string fileName     = "IssueCommentPayload";
            string organization = "octokit";
            string path         = "Octokit/Models/Response/ActivityPayloads";
            string repository   = "octokit/octokit.net";
            string term         = "issue";
            string user         = "******";

            var request = new SearchCodeRequest(term)
            {
                Extension    = extension,
                FileName     = fileName,
                Forks        = false,
                In           = new CodeInQualifier[] { CodeInQualifier.Path },
                Language     = Language.CSharp,
                Order        = SortDirection.Descending,
                Organization = organization,
                Path         = path,
                Repos        = new RepositoryCollection {
                    repository
                },
                Size      = new Range(fromNumber, toNumber),
                SortField = CodeSearchSort.Indexed,
                User      = user
            };

            SearchCodeResult result = await client.Search.SearchCode(request);

            Console.WriteLine($"Search.SearchCode (All Fields): TotalCount={result.TotalCount}");
        }
Example #2
0
        public async Task<SearchCodeResult> Search(SearchCodeRequest searchRequest)
        {
            if (searchRequest == null)
            {
                throw new ArgumentNullException(nameof(searchRequest));
            }

            var totalCount = 0;
            var repositoryFileNames = new List<string>();
            foreach (var repo in searchRequest.Repos)
            {
                repositoryFileNames.AddRange(await _client.GetGitRepositoryFileNames(repo.Owner, repo.Name));
            }

            var searchStrings = searchRequest.Term
                .Replace("\"", string.Empty)
                .Split(new[] { "OR" }, StringSplitOptions.None);

            foreach (var searchString in searchStrings)
            {
                totalCount += repositoryFileNames.FindAll(x => x.EndsWith(searchString.Trim(), StringComparison.InvariantCultureIgnoreCase)).Count;
            }

            return new SearchCodeResult(totalCount);
        }
Example #3
0
        public static IGitHubClient CreateClient <T>(
            SearchCodeRequest expectedRequest,
            Dictionary <string, T> pathsToRecords,
            long expectedRepositoryId,
            string expectedRepositoryName,
            string expectedOwner
            )
        {
            var client = new Mock <IGitHubClient>();

            client
            .Setup(mockClient => mockClient.Repository)
            .Returns(
                CreateRepositoriesClient(
                    pathsToRecords,
                    expectedRepositoryId,
                    expectedOwner,
                    expectedRepositoryName
                    )
                );
            client
            .Setup(mockClient => mockClient.Search)
            .Returns(CreateSearchClient(expectedRequest, pathsToRecords.Keys.ToList()));
            return(client.Object);
        }
        private SearchCodeRequest getSearchCodeRequest(Model.SearchCodeRequestParameters parameters)
        {
            SearchCodeRequest codeRequest;

            try
            {
                codeRequest = new SearchCodeRequest(parameters.Term);
            }
            catch (Exception)
            {
                codeRequest = new SearchCodeRequest();
            }

            Language language = (Language)Enum.Parse(typeof(Language), parameters.Language);

            codeRequest.Language  = language;
            codeRequest.Path      = parameters.Path;
            codeRequest.User      = parameters.Owner;
            codeRequest.FileName  = parameters.FileName;
            codeRequest.Extension = parameters.Extension;
            codeRequest.Forks     = getBoolParameter(parameters.ForksIncluded);
            codeRequest.Size      = pickRange(parameters.SizeChoice, parameters.Size);
            codeRequest.In        = getPathIncludedParameter(parameters.PathIncluded, parameters.Term);

            return(codeRequest);
        }
Example #5
0
        public static GitHubConfig Create <T>(
            SearchCodeRequest expectedRequest,
            Dictionary <string, T> pathsToRecords,
            long expectedRepositoryId,
            string repoName,
            string repoOwner)
        {
            var config = new Mock <MockableGitHubConfig>();

            config
            .Setup(mockConfig => mockConfig.RepositoryName)
            .Returns(repoName);
            config
            .Setup(mockConfig => mockConfig.RepositoryOwner)
            .Returns(repoOwner);
            config
            .Setup(mockConfig => mockConfig.Client)
            .Returns(
                CreateClient(
                    expectedRequest,
                    pathsToRecords,
                    expectedRepositoryId,
                    repoName,
                    repoOwner
                    )
                );
            config
            .Setup(mockConfig => mockConfig.Repository)
            .Returns(CreateRepository(expectedRepositoryId));
            return(config.Object);
        }
        async Task <IEnumerable <string> > ListContentsOctokit(string searchTerm, string repoOwner, string repoName, string url)
        {
            var client = new GitHubClient(new ProductHeaderValue("Cohee-Creative"));

            EditorCoroutines.EditorCoroutine currentCoroutine = this.StartCoroutine(CheckTimeOut());

            if (!string.IsNullOrEmpty(m_UserName))
            {
                var basicAuth = new Credentials(m_UserName, m_Password);
                client.Credentials = basicAuth;
            }

            var request = new SearchCodeRequest(searchTerm, repoOwner, repoName)
            {
                // we can restrict search to the file, path or search both
                In = new[] { CodeInQualifier.Path },

                // how about we find a file based on a certain language
                Language = Language.CSharp,

                // we may want to restrict the file based on file extension
                Extension = "cs",
            };

            var task = await client.Search.SearchCode(request);

            this.StopCoroutine("CheckTimeOut");
            return(task.Items.Select(content => content.HtmlUrl));
        }
        public async Task <bool> ContainsDotNetProjects(RepositorySettings repository)
        {
            const string dotNetCodeFiles = "\"packages.config\" OR \".csproj\" OR \".fsproj\" OR \".vbproj\"";

            var repos = new List <SearchRepo>
            {
                new SearchRepo(repository.RepositoryOwner, repository.RepositoryName)
            };

            var searchCodeRequest = new SearchCodeRequest(dotNetCodeFiles, repos)
            {
                PerPage = 1
            };

            try
            {
                var result = await _collaborationFactory.CollaborationPlatform.Search(searchCodeRequest);

                if (result.TotalCount <= 0)
                {
                    _logger.Detailed(
                        $"Repository {repository.RepositoryOwner}/{repository.RepositoryName} contains no .NET code on the default branch, skipping.");
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                _logger.Error("Repository search failed.", ex);
            }

            return(true);
        }
Example #8
0
        public async Task <bool> ContainsDotNetProjects(RepositorySettings repository)
        {
            var request = new SearchCodeRequest("\"packages.config\" OR \".csproj\" OR \".fsproj\" OR \".vbproj\"")
            {
                Repos = new RepositoryCollection {
                    { repository.RepositoryOwner, repository.RepositoryName }
                },
                In      = new [] { CodeInQualifier.Path },
                PerPage = 1
            };

            try
            {
                var result = await _gitHubClient.Search(request);

                if (result.TotalCount <= 0)
                {
                    _logger.Detailed(
                        $"Repository {repository.RepositoryOwner}/{repository.RepositoryName} contains no .NET code on the default branch, skipping.");
                    return(false);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("GitHub Repository search failed.", ex);
            }

            return(true);
        }
Example #9
0
        static async System.Threading.Tasks.Task Breachfinder(string user) //Also works for the original octokit experience
        {
            var client = new GitHubClient(new ProductHeaderValue("GHBreachFinder"));


            var basicAuth = new Credentials("Christopgr", "////////"); // NOTE: not real credentials

            client.Credentials = basicAuth;

            var user1 = await client.User.Get(user);

            Console.WriteLine(user1.Followers + " folks love Chris!");
            Console.WriteLine("{0} has {1} public repositories - go check out their profile at {2}",
                              user1.Name,
                              user1.PublicRepos,
                              user1.Url);

            var request = new SearchCodeRequest("password")
            {
                User = user
            };
            var result = await client.Search.SearchCode(request);


            Console.WriteLine("{0} Breaches were found",
                              result.Items.Count);

            for (int i = 0; i < result.Items.Count; i++)
            {
                Console.WriteLine("{0}",
                                  result.Items[i].Path);
            }
        }
Example #10
0
        public async Task <IEnumerable <Article> > GetArticles()
        {
            string repo   = "oakcool/oakideas.blogs";
            string branch = "master";


            List <Article> articles = new List <Article>();
            var            client   = new GitHubClient(new ProductHeaderValue("oakideas-simplex"));

            RepositoryCollection repos = new RepositoryCollection
            {
                repo
            };
            var request = new SearchCodeRequest()
            {
                Repos = repos,
                // we may want to restrict the file based on file extension
                Extensions = new[] { "info" }
            };

            var result = await client.Search.SearchCode(request);

            HttpClient httpClient = new HttpClient();

            foreach (var item in result.Items)
            {
                var data = await httpClient.GetStringAsync($"https://raw.githubusercontent.com/{repo}/{branch}/{item.Path}");

                var article = JsonConvert.DeserializeObject <Article>(data);
                article.URL = item.HtmlUrl;
                articles.Add(article);
            }
            return(articles);
        }
        public void SortNotSpecifiedByDefault()
        {
            var request = new SearchCodeRequest("test");

            Assert.True(String.IsNullOrWhiteSpace(request.Sort));
            Assert.False(request.Parameters.ContainsKey("sort"));
        }
Example #12
0
        private static async Task CodePagingExample(GitHubClient client)
        {
            const int MaximumSearchItems = 1000;

            var request = new SearchCodeRequest
            {
                Language = Language.CSharp,
                Repos    = new RepositoryCollection {
                    "octokit/octokit.net"
                }
            };

            int maximumPage = MaximumSearchItems / request.PerPage;

            for (request.Page = 1; request.Page <= maximumPage; request.Page++)
            {
                SearchCodeResult result = await client.Search.SearchCode(request);

                if (request.Page == 1)
                {
                    Console.WriteLine($"Search.SearchCode (Paging): TotalCount={result.TotalCount}");
                }

                foreach (SearchCode code in result.Items)
                {
                    Console.WriteLine($"  {code.Path}");
                }

                if (result.IncompleteResults || result.Items.Count < request.PerPage)
                {
                    break;
                }
            }
        }
Example #13
0
    public async Task SearchForFunctionInCode()
    {
        var request = new SearchCodeRequest("addClass", "jquery", "jquery");

        var repos = await _gitHubClient.Search.SearchCode(request);

        Assert.NotEmpty(repos.Items);
    }
Example #14
0
        public static ISearchClient CreateSearchClient(SearchCodeRequest expectedRequest, List <string> resultPaths)
        {
            var searchClient = new Mock <ISearchClient>();

            searchClient
            .Setup(client => client.SearchCode(It.IsAny <SearchCodeRequest>()))
            .Returns(Task.FromResult(CreateSearchCodeResult(resultPaths)));
            return(searchClient.Object);
        }
        public void ReturnsAReadOnlyDictionary()
        {
            var request = new SearchCodeRequest("test");

            var result = request.MergedQualifiers();

            // If I can cast this to a writeable collection, then that defeats the purpose of a read only.
            AssertEx.IsReadOnlyCollection <string>(result);
        }
        public async Task ScanReposAsync(
            ConcurrentDictionary <PackageReference, HashSet <RepoInfo> > graph,
            IScanProgress scanProgress)
        {
            _solutions.Clear();

            var scr = new SearchCodeRequest("PackageReference")
            {
                Organizations = new List <string> {
                    _organization
                },
                Extensions = new List <string> {
                    "csproj"
                },
                Repos = _repos,
            };

            var searchResult = await _client.Search.SearchCode(scr);

            var totalProjectsCount = searchResult.TotalCount;

            for (int i = 0; i < totalProjectsCount; i += 100)
            {
                var pageNumber = i / 100;
                scr.Page = pageNumber;

                searchResult = await _client.Search.SearchCode(scr);

                Console.WriteLine($"Page {pageNumber} received {searchResult.Items.Count}");

                foreach (var item in searchResult.Items)
                {
                    try
                    {
                        bool wasAdded = _solutions.Add(item.Repository.Name);
                        if (wasAdded)
                        {
                            scanProgress.UpdateRepoProgress();
                        }

                        await IndexProjectAsync(item, graph, scanProgress);

                        // rate limit - 5000 per hour
                        await Task.Delay(500);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine();
                        Console.WriteLine($"Error: {ex.Message}");
                    }
                }
            }
        }
    public async Task Handle(SearchGitHub message, IMessageHandlerContext context)
    {
        log.Info($"Received search request for \"{message.SearchFor}\" on {message.RepositoryOwner}/{message.Repository}...");

        SearchCodeRequest request = new SearchCodeRequest(
            message.SearchFor,
            message.RepositoryOwner,
            message.Repository);
        SearchCodeResult result = await GitHubClient.Search.SearchCode(request);

        log.Info($"Found {result.TotalCount} results for {message.SearchFor}.");
    }
Example #18
0
    public async Task SearchForFileNameInCode()
    {
        var request = new SearchCodeRequest("GitHub")
        {
            FileName = "readme.md",
            Repos    = new RepositoryCollection {
                "octokit/octokit.net"
            }
        };

        var repos = await _gitHubClient.Search.SearchCode(request);

        Assert.NotEmpty(repos.Items);
    }
Example #19
0
        public async Task SearchForFileNameInCodeWithoutTerm()
        {
            var request = new SearchCodeRequest()
            {
                FileName = "readme.md",
                Repos    = new RepositoryCollection {
                    "Sniper/Sniper"
                }
            };

            var repos = await _gitHubClient.Search.SearchCode(request);

            Assert.NotEmpty(repos.Items);
        }
Example #20
0
    public async Task SearchForFileNameInCodeWithoutTermWithUnderscore()
    {
        var request = new SearchCodeRequest()
        {
            FileName = "readme.md",
            Repos    = new RepositoryCollection {
                "Cultural-Rogue/_51Wp.XinFengSDK.Demo"
            }
        };

        var repos = await _gitHubClient.Search.SearchCode(request);

        Assert.Empty(repos.Items);
    }
Example #21
0
    public async Task SearchForFilesInOrganization()
    {
        var request = new SearchCodeRequest()
        {
            Organization = "octokit",
            FileName     = "readme.md"
        };

        var searchResults = await _gitHubClient.Search.SearchCode(request);

        foreach (var searchResult in searchResults.Items)
        {
            Assert.Equal("octokit", searchResult.Repository.Owner.Login);
        }
    }
Example #22
0
    public async Task SearchForFileNameInCodeWithoutTerm2()
    {
        var request = new SearchCodeRequest()
        {
            FileName = "project.json",
            Repos    = new RepositoryCollection {
                "adamcaudill/Psychson"
            }
        };


        var repos = await _gitHubClient.Search.SearchCode(request);

        Assert.Empty(repos.Items);
    }
Example #23
0
        public async Task <IEnumerable <string> > SearchAsync(string url, string extension)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException(nameof(url));
            }
            if (string.IsNullOrEmpty(extension))
            {
                throw new ArgumentNullException(nameof(extension));
            }

            string branchName = url.ExtractBranchName();

            url = url.StripBranchName(branchName);

            if (!extension.StartsWith('.'))
            {
                extension = $".{extension}";
            }

            var values = GitHubUrlExtractor.ExtractFromUrl(url);

            string username = values.Item1;
            string reponame = values.Item2;

            string search = $"extension:{extension}";
            var    req    = new SearchCodeRequest(search, username, reponame);

            if (string.IsNullOrEmpty(branchName))
            {
                var results = await _client.Search.SearchCode(req);

                // Github is searching the contents of the files too
                // Github seems generous with the match, so do a secondary filter
                var filteredResults = results.Items.Select(i => i.Path);

                return(filteredResults);
            }
            else
            {
                // Search in a specific branch
                var tree = await _client.Git.Tree.GetRecursive(username, reponame, branchName);

                var filePaths = tree.Tree.Select(item => item.Path).Where(path => Path.GetExtension(path) == extension);

                return(filePaths);
            }
        }
Example #24
0
        /// <summary>
        /// Searches code
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static async Task <ObservableCollection <SearchCode> > SearchCode(string query)
        {
            try
            {
                var client = await UserUtility.GetAuthenticatedClient();

                var request = new SearchCodeRequest(query);
                var result  = await client.Search.SearchCode(request);

                return(new ObservableCollection <SearchCode>(new List <SearchCode>(result.Items)));
            }
            catch
            {
                return(null);
            }
        }
Example #25
0
    public async Task SearchForFilesInOrganization()
    {
        var orgs    = new[] { "octokit", "github" };
        var request = new SearchCodeRequest()
        {
            Organizations = orgs,
            FileName      = "readme.md"
        };

        var searchResults = await _gitHubClient.Search.SearchCode(request);

        foreach (var searchResult in searchResults.Items)
        {
            Assert.Contains(searchResult.Repository.Owner.Login, orgs);
        }
    }
Example #26
0
        public async Task <bool> ContainsDotNetProjects(RepositorySettings repository)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            IEnumerable <string> dotNetCodeExtensions = new ReadOnlyCollection <string>(new List <string>()
            {
                ".sln", ".csproj", ".fsproj", ".vbproj"
            });
            const string dotNetCodeTerms = "\"packages.config\" OR \".csproj\" OR \".fsproj\" OR \".vbproj\"";

            var repos = new List <SearchRepo>
            {
                new SearchRepo(repository.RepositoryOwner, repository.RepositoryName)
            };

            var searchCodeRequest = new SearchCodeRequest(repos, dotNetCodeTerms, dotNetCodeExtensions)
            {
                PerPage = 1
            };

            try
            {
                var result = await _collaborationFactory.CollaborationPlatform.Search(searchCodeRequest);

                if (result.TotalCount <= 0)
                {
                    _logger.Detailed(
                        $"Repository {repository.RepositoryOwner}/{repository.RepositoryName} contains no .NET code on the default branch, skipping.");
                    return(false);
                }

                return(true);
            }
#pragma warning disable CA1031
            catch (Exception ex)
#pragma warning restore CA1031
            {
                _logger.Error("Repository search failed.", ex);
            }

            return(true);
        }
        static SearchCodeResult GetSampleFileList(string org)
        {
            try
            {
                //string searchText = "{FileName = \"sample.yml\",User = \"officedev\",Extension = \"yml\"}";
                SearchCodeRequest sr = new SearchCodeRequest("YamlMime:Sample");
                // sr.FileName = "sample.yml";
                sr.Extension    = "yml";
                sr.Organization = "officedev";

                sr.User = org;
                return(GitHubManager.instance.client.Search.SearchCode(sr).Result);
            }
            catch (Exception e)
            {
                throw new Exception("Error searching GitHub: " + e.Message);
            }
        }
Example #28
0
    public async Task SearchForLanguageInCode()
    {
        var request = new SearchCodeRequest("AnonymousAuthenticator")
        {
            Language = Language.CSharp
        };

        request.Repos.Add("octokit/octokit.net");

        var searchResults = await _gitHubClient.Search.SearchCode(request);

        Assert.NotEmpty(searchResults.Items);

        foreach (var code in searchResults.Items)
        {
            Assert.True(code.Name.EndsWith(".cs"));
        }
    }
Example #29
0
        /// <summary>
        /// Searches code
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static async Task <ObservableCollection <SearchCode> > SearchCode(string query, Language?language = null)
        {
            try
            {
                var request = new SearchCodeRequest(query);
                if (language != null)
                {
                    request.Language = language;
                }
                var result = await GlobalHelper.GithubClient.Search.SearchCode(request);

                return(new ObservableCollection <SearchCode>(result.Items));
            }
            catch
            {
                return(null);
            }
        }
Example #30
0
    public void Handle(SearchGitHub message)
    {
        log.Info($"Received search request for '{message.SearchFor}' on {message.RepositoryOwner}/{message.Repository}...");

        var request = new SearchCodeRequest(
            message.SearchFor,
            message.RepositoryOwner,
            message.Repository);
        var result = GitHubClient.Search.SearchCode(request).GetAwaiter().GetResult();

        log.Info($"Found {result.TotalCount} results for {message.SearchFor}. Replying.");
        var response = new SearchResponse
        {
            SearchedFor = message.SearchFor,
            TotalCount  = result.TotalCount
        };

        bus.Reply(response);
    }
Example #31
0
            public void TestingTheSizeQualifier_Range()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.Size = new Range(10, 100);

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+size:10..100"));
            }
            public async Task ErrorOccursWhenSpecifyingInvalidFormatForRepos()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);

                var request = new SearchCodeRequest("windows");
                request.Repos = new RepositoryCollection {
                    "haha-business"
                };

                request.Order = SortDirection.Descending;

                await Assert.ThrowsAsync<RepositoryFormatException>(
                    async () => await client.SearchCode(request));
            }
 /// <summary>
 /// search code
 /// http://developer.github.com/v3/search/#search-code
 /// </summary>
 /// <param name="search"></param>
 /// <returns>List of files</returns>
 public IObservable<SearchCodeResult> SearchCode(SearchCodeRequest search)
 {
     Ensure.ArgumentNotNull(search, "search");
     return _client.SearchCode(search).ToObservable();
 }
 /// <summary>
 /// search code
 /// http://developer.github.com/v3/search/#search-code
 /// </summary>
 /// <param name="request"></param>
 /// <returns>List of files</returns>
 public IObservable<SearchCode> SearchCode(SearchCodeRequest request)
 {
     Ensure.ArgumentNotNull(request, "request");
     return _connection.GetAndFlattenAllPages<SearchCode>(ApiUrls.SearchCode(), request.ToParametersDictionary());
 }
Example #35
0
            public void TestingTheSizeQualifier_LessThanOrEqual()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.Size = Range.LessThanOrEquals(10);

                client.SearchCode(request);

                connection.Received().GetAll<SearchCode>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+size:<=10"));
            }
Example #36
0
            public void TestingTheRepoAndPathAndExtensionQualifiers()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.Repo = "octokit.net";
                request.Path = "tools/FAKE.core";
                request.Extension = "fs";

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => 
                        d["q"] == "something+path:tools/FAKE.core+extension:fs+repo:octokit.net"));
            }
Example #37
0
            public void TestingTheSortParameter()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.SortField = CodeSearchSort.Indexed;

                client.SearchCode(request);

                connection.Received().GetAll<SearchCode>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["sort"] == "indexed"));
            }
Example #38
0
            public void TestingTheLanguageQualifier()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.Language = Language.CSharp;

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+language:C#"));
            }
Example #39
0
            public void TestingTheInQualifier_Multiple()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.In = new[] { CodeInQualifier.File, CodeInQualifier.Path };

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+in:file,path"));
            }
Example #40
0
            public void TestingTheDefaultOrderParameter()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["order"] == "desc"));
            }
Example #41
0
            public void TestingTheOrderParameter()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.SortField = CodeSearchSort.Indexed;
                request.Order = SortDirection.Ascending;

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d =>
                        d["sort"] == "indexed" &&
                        d["order"] == "asc"));
            }
Example #42
0
            public void TestingTheRepoQualifier()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.Repo = "octokit.net";

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+repo:octokit.net"));
            }
Example #43
0
            public void TestingTheUserQualifier()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.User = "******";

                client.SearchCode(request);

                connection.Received().GetAll<SearchCode>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+user:alfhenrik"));
            }
            public void TestingTheFileNameQualifier()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new SearchClient(connection);
                var request = new SearchCodeRequest("something");
                request.FileName = "packages.config";

                client.SearchCode(request);

                connection.Received().Get<SearchCodeResult>(
                    Arg.Is<Uri>(u => u.ToString() == "search/code"),
                    Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+filename:packages.config"));
            }
 /// <summary>
 /// search code
 /// http://developer.github.com/v3/search/#search-code
 /// </summary>
 /// <param name="search"></param>
 /// <returns>List of files</returns>
 public IObservable<SearchCode> SearchCode(SearchCodeRequest search)
 {
     Ensure.ArgumentNotNull(search, "search");
     return _connection.GetAndFlattenAllPages<SearchCode>(ApiUrls.SearchCode(), search.Parameters);
 }