Exemple #1
0
        public async Task <CMSProjectListModel> GetProjects(string accountId, CMSAuthCredentialModel authCredential)
        {
            CMSProjectListModel result = new CMSProjectListModel();
            var response = await _httpProxyService.GetAsync($"/_apis/projects?api-version=5.0", authCredential);

            if (!response.IsSuccessStatusCode || response.StatusCode == System.Net.HttpStatusCode.NonAuthoritativeInformation)
            {
                if (response.StatusCode == System.Net.HttpStatusCode.NonAuthoritativeInformation)
                {
                    result.Fail($"Code: {response.StatusCode}, Reason: The credentials are not correct");
                    return(result);
                }

                result.Fail($"Code: {response.StatusCode}, Reason: {await response.Content.ReadAsStringAsync()}");
                return(result);
            }

            var projectListResult = await response.MapTo <CMSProjectListModel>();

            result.Items = projectListResult.Items.Select(x => new CMSProjectListItemModel()
            {
                Id   = x.Id,
                Name = x.Name
            }).ToList();

            return(result);
        }
        public async Task <CMSProjectListModel> GetProjects(string accountId, CMSAuthCredentialModel authCredential)
        {
            var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authCredential.AccessToken);
            client.BaseAddress = new Uri(authCredential.Url);

            var response = await client.GetAsync($"/{API_VERSION}/teams?role=admin");

            var teamResult = await response.MapTo <CMSBitBucketTeamListModel>();

            CMSProjectListModel list = new CMSProjectListModel();
            var projectList          = new List <CMSProjectListItemModel>();

            foreach (var item in teamResult.Teams)
            {
                response = await client.GetAsync($"/{API_VERSION}/teams/{item.UserName}/projects/");

                var projectResult = await response.MapTo <CMSBitBucketProjectListModel>();

                foreach (var project in projectResult.Projects)
                {
                    projectList.Add(new CMSProjectListItemModel
                    {
                        Id          = project.Key,
                        DisplayName = $@"{item.DisplayName}\{project.Name}",
                        Name        = project.Name
                    });
                }
            }

            list.Items = projectList.ToList();

            return(list);
        }