示例#1
0
        public static JiraIssue MapJiraIssue(JToken issueJson)
        {
            if (!issueJson.Children().Any())
            {
                throw new InvalidJiraSourceException($"The source data from Jira is an invalid JSON object.");
            }

            var fields       = issueJson.GetMatchingToken("fields").ToList();
            var issueKey     = issueJson.GetMatchingToken("key").Value <string>();
            var changeLog    = issueJson.GetMatchingToken("changelog");
            var issueSummary = fields.GetMatchingProperty("summary").Value.ToString();
            var labels       = fields.GetMatchingProperty("labels").Value;

            var jiraIssue = new JiraIssue(issueKey, issueSummary)
            {
                Type   = fields.GetMatchingProperty("issuetype").Value["name"].ToString(),
                Status = fields.GetMatchingProperty("status").Value["name"].ToString(),
                Labels = labels.Values <string>().ToArray(),

                HasMoreChangeHistory = changeLog == null || changeLog.GetMatchingToken("maxResults").Value <int>() < changeLog.GetMatchingToken("total").Value <int>()
            };

            if (!jiraIssue.HasMoreChangeHistory)
            {
                jiraIssue.JiraStates = JiraStateMapper.MapStates(changeLog?.GetMatchingToken("histories").ToList());
            }

            return(jiraIssue);
        }
示例#2
0
        public List <JiraState> Get(string key)
        {
            var endpointUri = $"{_config.BaseUrl}/issue/{key}/changelog";

            var options = new Dictionary <string, string>()
            {
                { "fields", "values" }
            };

            var results = Get($"{endpointUri}", options, "values");

            return(JiraStateMapper.MapStates(results));
        }