Class: Lita::Handlers::JiraIssues
- Inherits:
-
Handler
- Object
- Handler
- Lita::Handlers::JiraIssues
- Defined in:
- lib/lita/handlers/jira_issues.rb
Constant Summary collapse
- FORMAT =
<<-FORMATTER [%{KEY}] %{summary} Status: %{status}, #(%{assignee}?assigned to %{assignee}|unassigned), rep. by %{reporter}, fixVersion: #(%{version}?%{version}|NONE)#(%{priority}?, priority: %{priority}|) %{link} FORMATTER
Instance Method Summary collapse
- #assignee(data) ⇒ Object
- #fix_version(data) ⇒ Object
- #handle_key(response, key) ⇒ Object
- #issue_details(data) ⇒ Object
- #issue_link(key) ⇒ Object
- #jira_message(response) ⇒ Object
- #priority(data) ⇒ Object
- #reporter(data) ⇒ Object
- #silenced?(key) ⇒ Boolean
- #status(data) ⇒ Object
- #summary(data) ⇒ Object
Instance Method Details
#assignee(data) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/lita/handlers/jira_issues.rb', line 80 def assignee(data) if assigned_to = data[:assignee] return assigned_to[:displayName] end '' end |
#fix_version(data) ⇒ Object
91 92 93 94 95 96 97 98 |
# File 'lib/lita/handlers/jira_issues.rb', line 91 def fix_version(data) fix_versions = data[:fixVersions] if fix_versions and fix_versions.first fix_versions.first[:name] else '' end end |
#handle_key(response, key) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/lita/handlers/jira_issues.rb', line 34 def handle_key(response, key) data = @jira.data_for_issue(key) return if data.empty? return if silenced?(key) issue = issue_details(data) response.reply issue end |
#issue_details(data) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/lita/handlers/jira_issues.rb', line 42 def issue_details(data) key = data[:key] data = data[:fields] # build out the response from the configured format text = config.format % { KEY: key.upcase, Key: key.capitalize, key: key, SUMMARY: summary(data).upcase, Summary: summary(data).capitalize, summary: summary(data), ASSIGNEE: assignee(data).upcase, Assignee: assignee(data).capitalize, assignee: assignee(data), REPORTER: reporter(data).upcase, Reporter: reporter(data).capitalize, reporter: reporter(data), STATUS: status(data).upcase, Status: status(data).capitalize, status: status(data), PRIORITY: priority(data).upcase, Priority: priority(data).capitalize, priority: priority(data), VERSION: fix_version(data).upcase, Version: fix_version(data).capitalize, version: fix_version(data), LINK: issue_link(key), link: issue_link(key), URL: issue_link(key), url: issue_link(key) } # evaluate conditional syntax text.gsub!(/#\(.*?\?.*?\|.*?\)/) do |cond_stmt| vals = cond_stmt.match(/#\((?<value>.*?)\?(?<true_text>.*?)\|(?<false_text>.*?)\)/) if vals[:value].empty? vals[:false_text].gsub("\|", "|").gsub("\?", "?") else vals[:true_text].gsub("\|", "|").gsub("\?", "?") end end return text end |
#issue_link(key) ⇒ Object
108 109 110 |
# File 'lib/lita/handlers/jira_issues.rb', line 108 def issue_link(key) "#{config.url}/browse/#{key}" end |
#jira_message(response) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/lita/handlers/jira_issues.rb', line 26 def (response) return if config.ignore.include?(response.user.name) @jira ||= JiraGateway.new(http, config) Set.new(response.matches).each do | key | handle_key(response, key) end end |
#priority(data) ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/lita/handlers/jira_issues.rb', line 100 def priority(data) if data[:priority] data[:priority][:name] else '' end end |
#reporter(data) ⇒ Object
87 88 89 |
# File 'lib/lita/handlers/jira_issues.rb', line 87 def reporter(data) data[:reporter][:displayName] end |
#silenced?(key) ⇒ Boolean
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/lita/handlers/jira_issues.rb', line 112 def silenced?(key) if config.issue_ttl == 0 log.debug("JiraIssues: issue_ttl is set to 0, will post every matched issue to chat") return false end current_ttl = redis.ttl(key).to_i if current_ttl > 0 log.debug("JiraIssues: Key expiration not met for #{key}, will not reprompt for #{current_ttl} seconds") true else redis.setex(key, config.issue_ttl, key) log.debug("JiraIssues: Setting expiring key in redis for JIRA issue: #{key}. Key is configured to expire in #{config.issue_ttl} seconds") false end end |
#status(data) ⇒ Object
72 73 74 |
# File 'lib/lita/handlers/jira_issues.rb', line 72 def status(data) data[:status][:name] end |
#summary(data) ⇒ Object
76 77 78 |
# File 'lib/lita/handlers/jira_issues.rb', line 76 def summary(data) data[:summary] end |