public async Task <List <CSharpProject> > GetCSharpProjectsForRepository(BitbucketProject bitbucketProject, Repository repository, string branchName)
        {
            var projects = new List <CSharpProject>();

            try
            {
                var result = await _bitBucketHttpClient.GetAsync($"/rest/api/1.0/projects/{bitbucketProject.Key}/repos/{repository.Slug}/files?limit=1000&at={branchName}");

                result.EnsureSuccessStatusCode();

                var stringResult = await result.Content.ReadAsStringAsync();

                dynamic parsedString = JsonConvert.DeserializeObject(stringResult);
                foreach (dynamic fp in parsedString.values)
                {
                    string filePath = (string)fp;
                    if (IsItConsideredAsConfigFile(filePath))
                    {
                        var csharpProject = await CreateCSharpProjectFromConfigFile(bitbucketProject, repository, filePath, branchName);

                        projects.Add(csharpProject);
                    }
                }
            }
            catch
            {
            }

            return(projects);
        }
        private async Task <CSharpProject> CreateCSharpProjectFromConfigFile(BitbucketProject bitbucketProject, Repository repository, string configFilePath, string branchName)
        {
            var result = await _bitBucketHttpClient.GetAsync($"/rest/api/1.0/projects/{bitbucketProject.Key}/repos/{repository.Slug}/raw/{configFilePath}?limit=1000&at={branchName}");

            result.EnsureSuccessStatusCode();

            var stringResult = await result.Content.ReadAsStringAsync();

            return(new CSharpProject()
            {
                Name = GetCSharpProjectNameFromConfigFile(configFilePath),
                Dependencies = GetDependenciesFromConfigFileContent(stringResult)
                               .Where(lib => lib.IsItOneOfOurInterest())
                               .ToList()
            });
        }
        public async Task <List <Repository> > GetAllRepositoriesForProject(BitbucketProject bitbucketProject)
        {
            var repositories = new List <Repository>();
            var result       = await _bitBucketHttpClient.GetAsync($"/rest/api/1.0/projects/{bitbucketProject.Key}/repos?limit=1000");

            result.EnsureSuccessStatusCode();

            var stringResult = await result.Content.ReadAsStringAsync();

            dynamic parsedString = JsonConvert.DeserializeObject(stringResult);

            foreach (dynamic repository in parsedString.values)
            {
                var repositoryInfo = new Repository()
                {
                    Slug = repository.slug,
                    Name = repository.name
                };
                repositories.Add(repositoryInfo);
            }

            return(repositories);
        }
        public async Task <List <BitbucketProject> > GetAllBitbucketProjects()
        {
            var projects = new List <BitbucketProject>();
            var result   = await _bitBucketHttpClient.GetAsync("/rest/api/1.0/projects?limit=1000");

            result.EnsureSuccessStatusCode();

            var stringResult = await result.Content.ReadAsStringAsync();

            dynamic parsedString = JsonConvert.DeserializeObject(stringResult);

            foreach (dynamic project in parsedString.values)
            {
                var projectInfo = new BitbucketProject()
                {
                    Key  = project.key,
                    Name = project.name
                };
                projects.Add(projectInfo);
            }

            return(projects);
        }