Class: ErrbitJiraPlugin::IssueTracker
- Inherits:
-
ErrbitPlugin::IssueTracker
- Object
- ErrbitPlugin::IssueTracker
- ErrbitJiraPlugin::IssueTracker
- Defined in:
- lib/errbit_jira_plugin/issue_tracker.rb
Constant Summary collapse
- LABEL =
'jira'- NOTE =
'Please configure Jira by entering the information below.'- FIELDS =
{ :base_url => { :label => 'Jira URL without trailing slash', :placeholder => 'https://jira.example.org' }, :context_path => { :optional => true, :label => 'Context Path (Just "/" if empty otherwise with leading slash)', :placeholder => "/jira" }, :username => { :label => 'Username', :placeholder => 'johndoe' }, :password => { :label => 'Password', :placeholder => 'p@assW0rd' }, :project_id => { :label => 'Project Key', :placeholder => 'The project Key where the issue will be created' }, :issue_priority => { :label => 'Priority', :placeholder => 'Normal' } }
Class Method Summary collapse
Instance Method Summary collapse
- #client ⇒ Object
- #comments_allowed? ⇒ Boolean
- #configured? ⇒ Boolean
- #create_issue(problem, reported_by = nil) ⇒ Object
- #ctx_path ⇒ Object
- #errors ⇒ Object
- #jira_url(project_id) ⇒ Object
- #url ⇒ Object
Class Method Details
.body_template ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 63 def self.body_template @body_template ||= ERB.new(File.read( File.join( ErrbitJiraPlugin.root, 'views', 'jira_issues_body.txt.erb' ) )) end |
.fields ⇒ Object
45 46 47 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 45 def self.fields FIELDS end |
.icons ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 49 def self.icons @icons ||= { create: [ 'image/png', ErrbitJiraPlugin.read_static_file('jira_create.png') ], goto: [ 'image/png', ErrbitJiraPlugin.read_static_file('jira_goto.png'), ], inactive: [ 'image/png', ErrbitJiraPlugin.read_static_file('jira_inactive.png'), ] } end |
.label ⇒ Object
37 38 39 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 37 def self.label LABEL end |
.note ⇒ Object
41 42 43 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 41 def self.note NOTE end |
Instance Method Details
#client ⇒ Object
87 88 89 90 91 92 93 94 95 96 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 87 def client = { :username => params['username'], :password => params['password'], :site => params['base_url'], :auth_type => :basic, :context_path => (params['context_path'] == '/') ? params['context_path'] = '' : params['context_path'] } JIRA::Client.new() end |
#comments_allowed? ⇒ Boolean
83 84 85 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 83 def comments_allowed? false end |
#configured? ⇒ Boolean
71 72 73 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 71 def configured? params['project_id'].present? end |
#create_issue(problem, reported_by = nil) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 98 def create_issue(problem, reported_by = nil) begin issue_title = "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}".delete!("\n") issue_description = self.class.body_template.result(binding).unpack('C*').pack('U*') issue = {"fields"=>{"summary"=>issue_title, "description"=>issue_description,"project"=>{"key"=>params['project_id']},"issuetype"=>{"id"=>"3"},"priority"=>{"name"=>params['issue_priority']}}} issue_build = client.Issue.build issue_build.save(issue) problem.update_attributes( :issue_link => jira_url(issue_build.key), :issue_type => params['issue_type'] ) rescue JIRA::HTTPError raise ErrbitJiraPlugin::IssueError, "Could not create an issue with Jira. Please check your credentials." end end |
#ctx_path ⇒ Object
121 122 123 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 121 def ctx_path (params['context_path'] == '') ? '/' : params['context_path'] end |
#errors ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 75 def errors errors = [] if self.class.fields.detect {|f| [f[0]].blank? } errors << [:base, 'You must specify all non optional values!'] end errors end |
#jira_url(project_id) ⇒ Object
117 118 119 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 117 def jira_url(project_id) "#{params['base_url']}#{ctx_path}browse/#{project_id}" end |
#url ⇒ Object
125 126 127 |
# File 'lib/errbit_jira_plugin/issue_tracker.rb', line 125 def url params['base_url'] end |