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"));
        }