Exemplo n.º 1
0
        private async Task <IEnumerable <JiraIssueModel> > JiraPostSearch(string queryString, int retry = 3)
        {
            await EnsureAuthentication();

            var query = new JiraSearchQuery {
                Jql     = queryString,
                Fields  = JiraIssueFieldsArray,
                StartAt = 0
            };

            JiraSearchResultModel searchResult;
            List <JiraIssueModel> issues = null;

            //This loop is necessary since the maxResults per query are limited by a Jira setting.
            do
            {
                searchResult = await HttpPostQuery(query);

                if (issues == null)                   //Has to be initialized after we know how many results there are to avoid reallocating the list
                {
                    issues = new List <JiraIssueModel>(searchResult.Total);
                }
                foreach (JiraIssueModel issue in searchResult.Issues)
                {
                    issue.Url = settings.JiraIssueUrl + issue.Key;
                    issues.Add(issue);
                }
                query.StartAt += searchResult.MaxResults;
            } while (query.StartAt < searchResult.Total);
            return(issues);
        }
Exemplo n.º 2
0
        private async Task <JiraSearchResultModel> HttpPostQuery(JiraSearchQuery query)
        {
            HttpResponseMessage response = await client.PostAsync(settings.JiraApiSearchUrl,
                                                                  new StringContent(JsonConvert.SerializeObject(query, CamelCaseJsonSettings), Encoding.UTF8, "application/json"));

            if (!response.IsSuccessStatusCode)
            {
                throw new HttpRequestException($"Jira api call {response.RequestMessage.RequestUri} returned status code {response.StatusCode}");
            }
            return(await response.Content.ReadAsAsync <JiraSearchResultModel>());
        }