/// <summary> /// Get the list of possible Status Transitions for an Issue /// </summary> /// <param name="IssueKey">Jira Key of the Issue</param> /// <returns></returns> public static List <Transition> GeTransitions(string IssueKey) { var request = new RestRequest("issue/" + IssueKey + "/transitions", Method.GET); request.AddHeader("Content-Type", "application/json"); request.RequestFormat = RestSharp.DataFormat.Json; var response2 = JiraClient.Client.Execute <IssueTransitions>(request); if (RestCallback.Check(response2) && response2.Data.transitions.Any()) { return(response2.Data.transitions); } return(null); }
void worker_DoWork <T>(object sender, DoWorkEventArgs e) where T : new() { try { var client = JiraClient.Client; if (!usebaseurl) { client = new RestClient(); client.CookieContainer = JiraClient.Client.CookieContainer; } BackgroundWorker worker = (BackgroundWorker)sender; if (requests.Count > 1) { for (var i = 0; i < requests.Count; i++) { worker.ReportProgress((100 * i + 1) / requests.Count(), getProgressString(i + 1)); // HAS TO BE OUT OF THE DISPATCHER! var response = client.Execute <T>(requests[i]); responses.Add(response); if (!RestCallback.Check(response)) { break; } if (i == requests.Count() - 1) { worker.ReportProgress(100, getProgressString(i + 1)); } } } else { var response = client.Execute <T>(requests[0]); responses.Add(response); RestCallback.Check(response); } } catch (System.Exception ex1) { MessageBox.Show("exception: " + ex1); } }
void worker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = (BackgroundWorker)sender; XmlSerializer serializerV = new XmlSerializer(typeof(VisualizationInfo)); for (int i = 0; i < issues.Count(); i++) { try { IssueBCF issue = issues[i]; worker.ReportProgress((100 * i + 1) / issues.Count(), getProgressString(i + 1)); // HAS TO BE OUT OF THE DISPATCHER! // check status on each step if (worker.CancellationPending == true) { e.Cancel = true; return; // abort work, if it's cancelled } //CHECK IF ALREADY EXISTING // could use the expression: cf[11600] ~ "aaaa" // = operator not supported string fields = " AND GUID~" + issue.guid.ToString() + "&fields=key,comment"; string query = "search?jql=project=" + projectKey + fields; var request4 = new RestRequest(query, Method.GET); request4.AddHeader("Content-Type", "application/json"); request4.RequestFormat = RestSharp.DataFormat.Json; var response4 = JiraClient.Client.Execute <Issues>(request4); if (!RestCallback.Check(response4)) { break; } //DOESN'T exist already if (!response4.Data.issues.Any()) { string snapshot = Path.Combine(path, issue.guid.ToString(), "snapshot.png"); string viewpoint = Path.Combine(path, issue.guid.ToString(), "viewpoint.bcfv"); string key = ""; //update view - it might be a new issue // Serialize the object, and close the TextWriter Stream writerV = new FileStream(viewpoint, FileMode.Create); serializerV.Serialize(writerV, issue.viewpoint); writerV.Close(); var request = new RestRequest("issue", Method.POST); request.AddHeader("Content-Type", "application/json"); request.RequestFormat = RestSharp.DataFormat.Json; var newissue = new { fields = new Dictionary <string, object>() }; newissue.fields.Add("project", new { key = projectKey }); newissue.fields.Add("summary", (string.IsNullOrWhiteSpace(issue.markup.Topic.Title)) ? "no title" : issue.markup.Topic.Title); newissue.fields.Add("issuetype", new { id = issuesJira[i].fields.issuetype.id }); newissue.fields.Add(UserSettings.Get("guidfield"), issue.guid.ToString()); if (issuesJira[i].fields.assignee != null) { newissue.fields.Add("assignee", new { name = issuesJira[i].fields.assignee.name }); } if (issuesJira[i].fields.priority != null) { newissue.fields.Add("priority", new { id = issuesJira[i].fields.priority.id }); } if (issuesJira[i].fields.components != null && issuesJira[i].fields.components.Any()) { newissue.fields.Add("components", issuesJira[i].fields.components); } request.AddBody(newissue); var response = JiraClient.Client.Execute(request); var responseIssue = new Issue(); if (RestCallback.Check(response)) { responseIssue = RestSharp.SimpleJson.DeserializeObject <Issue>(response.Content); key = responseIssue.key;//attach and comment sent to the new issue } else { uploadErrors++; break; } //upload viewpoint and snapshot var request2 = new RestRequest("issue/" + key + "/attachments", Method.POST); request2.AddHeader("X-Atlassian-Token", "nocheck"); request2.RequestFormat = RestSharp.DataFormat.Json; request2.AddFile("file", File.ReadAllBytes(snapshot), "snapshot.png"); request2.AddFile("file", File.ReadAllBytes(viewpoint), "viewpoint.bcfv"); var response2 = JiraClient.Client.Execute(request2); RestCallback.Check(response2); //ADD COMMENTS if (issue.markup.Comment.Any()) { issue.markup.Comment = new System.Collections.ObjectModel.ObservableCollection <CommentBCF>(issue.markup.Comment.Reverse()); foreach (var c in issue.markup.Comment) { var request3 = new RestRequest("issue/" + key + "/comment", Method.POST); request3.AddHeader("Content-Type", "application/json"); request3.RequestFormat = RestSharp.DataFormat.Json; var newcomment = new { body = c.Comment1 }; request3.AddBody(newcomment); var response3 = JiraClient.Client.Execute <Comment2>(request3); if (!RestCallback.Check(response3)) { break; } } } if (i == issues.Count() - 1) { worker.ReportProgress(100, getProgressString(i + 1)); } } else //UPDATE ISSUE { var oldIssue = response4.Data.issues.First(); if (issue.markup.Comment.Any()) { issue.markup.Comment = new System.Collections.ObjectModel.ObservableCollection <CommentBCF>(issue.markup.Comment.Reverse()); foreach (var c in issue.markup.Comment) { string normalized1 = Regex.Replace(c.Comment1, @"\s", ""); if (oldIssue.fields.comment.comments.Any(o => Regex.Replace(o.body, @"\s", "").Equals(normalized1, StringComparison.OrdinalIgnoreCase))) { continue; } var request3 = new RestRequest("issue/" + oldIssue.key + "/comment", Method.POST); request3.AddHeader("Content-Type", "application/json"); request3.RequestFormat = RestSharp.DataFormat.Json; var newcomment = new { body = c.Comment1 }; request3.AddBody(newcomment); var response3 = JiraClient.Client.Execute <Comment2>(request3); if (!RestCallback.Check(response3)) { break; } } } } } // END TRY catch (System.Exception ex1) { MessageBox.Show("exception: " + ex1); } }// END LOOP }