Example #1
0
        private async Task <SearchResults> DoSearch(string jql, int maxToTake)
        {
            List <JiraIssue> results = new List <JiraIssue>();
            var client            = _jiraClientProvider.CreateClient();
            int skip              = 0;
            int originalMaxToTake = maxToTake;

            while (true)
            {
                var chunk = (await client
                             .Issues
                             .GetIssuesFromJqlAsync(
                                 jql: jql,
                                 maxIssues: Math.Min(_recordsPerBatch, maxToTake),
                                 startAt: skip)).ToArray();

                maxToTake -= chunk.Length;

                foreach (var item in chunk)
                {
                    results.Add(new JiraIssue(item, _customFieldReader));
                }

                skip += chunk.Length;
                if (chunk.Length == 0)
                {
                    break;
                }
            }

            return(new SearchResults(jql, originalMaxToTake, results.ToArray()));
        }
Example #2
0
        public async Task <Sprint> GetSprint(string boardName, string sprintName)
        {
            var client = _jiraClientProvider.CreateClient();
            var boards = await client.RestClient.ExecuteRequestAsync <CollectionAPIModel <BoardAPIModel> >(
                method : RestSharp.Method.GET,
                resource : $@"/rest/agile/1.0/board?name={boardName}");

            if (boards == null || boards.values.Length == 0)
            {
                throw new Exception($"Unable to find a board named {boardName}");
            }

            int boardId = boards.values[0].id;

            var sprints = await client.RestClient.ExecuteRequestAsync <CollectionAPIModel <SprintAPIModel> >(
                method : RestSharp.Method.GET,
                resource : $@"/rest/agile/1.0/board/{boardId}/sprint");

            var sprint = sprints.values.FirstOrDefault(p => p.name == sprintName);

            if (sprint != null)
            {
                return(new Sprint(sprint, GetStoryPointsPerSprint(sprint)));
            }
            else
            {
                throw new Exception($"Unable to find sprint {sprintName}. Pagination is not yet supported");
            }
        }