コード例 #1
0
ファイル: JiraClient.cs プロジェクト: yhtsnda/Opserver
        private string GetProjectKey(JiraAction action)
        {
            var userName = !String.IsNullOrWhiteSpace(action.ProjectKey)
               ? action.ProjectKey
               : _jiraSettings.DefaultProjectKey;

            return(userName);
        }
コード例 #2
0
ファイル: JiraClient.cs プロジェクト: yhtsnda/Opserver
        private string GetUsername(JiraAction action)
        {
            var userName = !String.IsNullOrWhiteSpace(action.Username)
               ? action.Username
               : _jiraSettings.DefaultUsername;

            return(userName);
        }
コード例 #3
0
ファイル: JiraClient.cs プロジェクト: yhtsnda/Opserver
        private string GetPassword(JiraAction action)
        {
            var password = !String.IsNullOrWhiteSpace(action.Password)
                ? action.Password
                : _jiraSettings.DefaultPassword;

            return(password);
        }
コード例 #4
0
ファイル: JiraClient.cs プロジェクト: manesiotise/Opserver
        public async Task <JiraCreateIssueResponse> CreateIssueAsync(JiraAction action, Error error, string accountName)
        {
            var url        = GetUrl(action);
            var userName   = GetUsername(action);
            var password   = GetPassword(action);
            var projectKey = GetProjectKey(action);

            var client = new JsonRestClient(url)
            {
                Username = userName,
                Password = password
            };

            var fields = new Dictionary <string, object>
            {
                ["project"]     = new { key = projectKey },
                ["issuetype"]   = new { name = action.Name },
                ["summary"]     = error.Message.CleanCRLF().TruncateWithEllipsis(255),
                ["description"] = RenderDescription(error, accountName)
            };
            var components = action.GetComponentsForApplication(error.ApplicationName);

            if (components?.Count > 0)
            {
                fields.Add("components", components);
            }

            var labels = action.Labels.IsNullOrEmpty()
                ? null
                : action.Labels.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            if (labels?.Length > 0)
            {
                fields.Add("labels", labels);
            }

            var payload = new { fields };

            var result = await client.PostAsync <JiraCreateIssueResponse, object>("issue", payload);

            var commentBody = RenderVariableTable("Server Variables", error.ServerVariables)
                              + RenderVariableTable("QueryString", error.QueryString)
                              + RenderVariableTable("Form", error.Form)
                              + RenderVariableTable("Cookies", error.Cookies)
                              + RenderVariableTable("RequestHeaders", error.RequestHeaders);

            if (commentBody.HasValue())
            {
                await CommentAsync(action, result, commentBody);
            }

            result.Host = GetHost(action);
            return(result);
        }
コード例 #5
0
ファイル: JiraClient.cs プロジェクト: yhtsnda/Opserver
        public async Task <JiraCreateIssueResponse> CreateIssue(JiraAction action, Error error, string accountName)
        {
            var url        = GetUrl(action);
            var userName   = GetUsername(action);
            var password   = GetPassword(action);
            var projectKey = GetProjectKey(action);

            var client = new JsonRestClient(url);

            client.Username = userName;
            client.Password = password;

            Dictionary <string, object> fields = new Dictionary <string, object>();

            fields.Add("project", new { key = projectKey });
            fields.Add("issuetype", new { name = action.Name });
            fields.Add("summary", error.Message.CleanCRLF().TruncateWithEllipsis(255));
            fields.Add("description", RenderDescription(error, accountName));
            var components = action.GetComponentsForApplication(error.ApplicationName);

            if (components != null && components.Count > 0)
            {
                fields.Add("components", components);
            }

            var labels = String.IsNullOrWhiteSpace(action.Labels)
                ? null
                : action.Labels.Split(new char[1] {
                ','
            }, StringSplitOptions.RemoveEmptyEntries);

            if (labels != null && labels.Length > 0)
            {
                fields.Add("labels", labels);
            }

            var payload = new
            {
                fields = fields
            };

            var result = await client.PostAsync <JiraCreateIssueResponse, object>("issue", payload).ConfigureAwait(false);

            var commentBody = RenderVariableTable("Server Variables", error.ServerVariables)
                              + RenderVariableTable("QueryString", error.QueryString)
                              + RenderVariableTable("Form", error.Form)
                              + RenderVariableTable("Cookies", error.Cookies)
                              + RenderVariableTable("RequestHeaders", error.RequestHeaders);

            var commentReponse = await Comment(action, result, commentBody).ConfigureAwait(false);

            result.Host = GetHost(action);
            return(result);
        }
コード例 #6
0
ファイル: JiraClient.cs プロジェクト: yhtsnda/Opserver
        public async Task <string> Comment(JiraAction actions, JiraCreateIssueResponse createResponse, string comment)
        {
            var url      = GetUrl(actions);
            var userName = GetUsername(actions);
            var password = GetPassword(actions);

            var client = new JsonRestClient(url);

            client.Username = userName;
            client.Password = password;

            var payload = new
            {
                body = comment
            };

            var resource = String.Format("issue/{0}/comment", createResponse.Key);

            var response = await client.PostAsync <string, object>(resource, payload).ConfigureAwait(false);

            return(response);
        }
コード例 #7
0
ファイル: JiraClient.cs プロジェクト: manesiotise/Opserver
        public async Task <string> CommentAsync(JiraAction actions, JiraCreateIssueResponse createResponse, string comment)
        {
            var url      = GetUrl(actions);
            var userName = GetUsername(actions);
            var password = GetPassword(actions);

            var client = new JsonRestClient(url)
            {
                Username = userName,
                Password = password
            };

            var payload = new
            {
                body = comment
            };

            var resource = $"issue/{createResponse.Key}/comment";

            var response = await client.PostAsync <string, object>(resource, payload);

            return(response);
        }
コード例 #8
0
ファイル: JiraClient.cs プロジェクト: manesiotise/Opserver
 private string GetHost(JiraAction action)
 {
     return(action.Host.IsNullOrEmptyReturn(_jiraSettings.DefaultHost));
 }
コード例 #9
0
ファイル: JiraClient.cs プロジェクト: manesiotise/Opserver
 private string GetUrl(JiraAction action)
 {
     return(action.Url.IsNullOrEmptyReturn(_jiraSettings.DefaultUrl));
 }
コード例 #10
0
ファイル: JiraClient.cs プロジェクト: manesiotise/Opserver
 private string GetProjectKey(JiraAction action)
 {
     return(action.ProjectKey.IsNullOrEmptyReturn(_jiraSettings.DefaultProjectKey));
 }
コード例 #11
0
ファイル: JiraClient.cs プロジェクト: manesiotise/Opserver
 private string GetUsername(JiraAction action)
 {
     return(action.Username.IsNullOrEmptyReturn(_jiraSettings.DefaultUsername));
 }
コード例 #12
0
ファイル: JiraClient.cs プロジェクト: manesiotise/Opserver
 private string GetPassword(JiraAction action)
 {
     return(action.Password.IsNullOrEmptyReturn(_jiraSettings.DefaultPassword));
 }
コード例 #13
0
ファイル: JiraClient.cs プロジェクト: yhtsnda/Opserver
 private string GetHost(JiraAction action)
 {
     return(!String.IsNullOrWhiteSpace(action.Host)
         ? action.Host
         : _jiraSettings.DefaultHost);
 }
コード例 #14
0
ファイル: JiraClient.cs プロジェクト: yhtsnda/Opserver
 private string GetUrl(JiraAction action)
 {
     return(!String.IsNullOrWhiteSpace(action.Url)
         ? action.Url
         : _jiraSettings.DefaultUrl);
 }