Esempio n. 1
0
        public static List <JiraIssue> GetIssues(this IJiraRestClient jiraRestClient, string jql, int startAt = 0, int maxResults = 200,
                                                 string[] fields = null)
        {
            Argument.IsNotNull(() => jiraRestClient);

            var issues = new List <JiraIssue>();

            var searchRequest = new JiraSearchRequest
            {
                Jql        = jql,
                StartAt    = startAt,
                MaxResults = maxResults,
            };

            if (fields != null)
            {
                searchRequest.Fields.AddRange(fields);
            }

            var requestJson  = JsonConvert.SerializeObject(searchRequest, GetJsonSettings());
            var responseJson = jiraRestClient.ExecuteRequestRaw(Method.POST, "rest/api/2/search", requestJson);

            foreach (var jsonElement in responseJson.Children())
            {
                var issue = JsonConvert.DeserializeObject <JiraIssue>(jsonElement.ToString());

                issues.Add(issue);
            }

            return(issues);
        }
Esempio n. 2
0
        public async Task <JiraIssueResponse> GetReadyToMergeJiraTicketsAsync()
        {
            if (!AreConfigValuesSet())
            {
                Log.Warning("Some or all of the Jira application settings aren't configured. Please configure them.");
                return(new JiraIssueResponse
                {
                    Issues = new List <JiraTicket>()
                });
            }

            try
            {
                var client = new RestClient(_baseUrl)
                {
                    Authenticator = new HttpBasicAuthenticator(_username, _password)
                };

                var restRequest = new RestRequest("2/search", Method.POST);

                var model = new JiraSearchRequest
                {
                    jql = $"project = {_project} AND status = \"{_ticketStatus}\" AND fixVersion = \"{_fixVersion}\" order by updated DESC"
                };

                restRequest.AddHeader("Accept", "application/json");
                restRequest.AddJsonBody(model);

                var response = await client.ExecuteTaskAsync(restRequest);

                var deserializedResult = JsonConvert.DeserializeObject <JiraIssueResponse>(response.Content);

                // Filtering out sub-tasks as they won't have their own branch
                deserializedResult.Issues = deserializedResult.Issues.Where(i => !i.Fields.IssueType.SubTask);

                Log.Debug("Successfully retrieved: {IssueCount} issues set to Ready to Merge.",
                          deserializedResult.Issues.Count());

                return(deserializedResult);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message);
                throw;
            }
        }