public static CreateResponse Crear(IssueToCreate issueToCreate) { string url = Properties.Settings.Default.JiraUrlBase + Properties.Settings.Default.JiraUrlApi; var client = new HttpClient(); client.DefaultRequestHeaders.Add("Accept", "application/json"); client.DefaultRequestHeaders.Add("Authorization", GetBasicAuth()); var taskCreate = client.PostAsync(url, GetCreateContent(issueToCreate)); taskCreate.Wait(); var result = taskCreate.Result; var taskReadResponse = result.Content.ReadAsStringAsync(); taskReadResponse.Wait(); var respJson = taskReadResponse.Result; if (result.StatusCode == System.Net.HttpStatusCode.Created) { var response = JsonConvert.DeserializeObject <CreateResponse>(respJson); var taskUpdate = client.PutAsync(response.self, GetUpdateContent(issueToCreate)); taskUpdate.Wait(); result = taskUpdate.Result; if (result.StatusCode == System.Net.HttpStatusCode.NoContent) { return(response); } } throw new ApplicationException(respJson); }
private void btnCrearEnJira_Click(object sender, EventArgs e) { var issueToCreate = new IssueToCreate() { Project = txtProjectKey.Text, Summary = txtSummary.Text, Description = txtDescription.Text, IssueType = cmbIssueType.Text, Component = cmbComponent.Text, Comment = txtComment.Text, NroExterno = txtNroMantis.Text, Label = txtLabel.Text }; try { var res = IssueCreator.Crear(issueToCreate); lblCreateResult.Text = "Jira creado"; lnkNewJira.Text = Properties.Settings.Default.JiraUrlBase + Properties.Settings.Default.JiraUrlView + res.key; } catch (ApplicationException ae) { lblCreateResult.Text = ae.Message; } }
private static object GetObjectContentForTypeTask(IssueToCreate issueToCreate) { return(new { fields = new { project = new { key = issueToCreate.Project }, summary = issueToCreate.Summary, description = issueToCreate.Description, issuetype = new { name = issueToCreate.IssueType }, labels = new[] { issueToCreate.Label } } }); }
private static object GetObjectContentDefault(IssueToCreate issueToCreate) { return(new { fields = new { project = new { key = issueToCreate.Project }, summary = issueToCreate.Summary, description = issueToCreate.Description, issuetype = new { name = issueToCreate.IssueType }, customfield_13900 = issueToCreate.NroExterno, labels = new[] { issueToCreate.Label } } }); }
private static StringContent GetUpdateContent(IssueToCreate issueToCreate) { var issue = new { update = new { components = new[] { new { add = new { name = issueToCreate.Component } } }, comment = new[] { new { add = new { body = issueToCreate.Comment } } } } }; string rawContent = JsonConvert.SerializeObject(issue); return(new StringContent(rawContent, Encoding.UTF8, "application/json")); }
private static StringContent GetCreateContent(IssueToCreate issueToCreate) { object issue; if (issueToCreate.IssueType == TYPE_TASK) { issue = GetObjectContentForTypeTask(issueToCreate); } else { issue = GetObjectContentDefault(issueToCreate); } string rawContent = JsonConvert.SerializeObject(issue); return(new StringContent(rawContent, Encoding.UTF8, "application/json")); }