Class: Speedflow::Plugin::Jira::Client
- Inherits:
-
Object
- Object
- Speedflow::Plugin::Jira::Client
- Includes:
- Formatter
- Defined in:
- lib/speedflow/plugin/jira/client.rb
Overview
Jira Client
Instance Attribute Summary collapse
-
#jira_client ⇒ Object
Public: Jira client.
-
#prompt ⇒ Object
Public: Prompt.
Instance Method Summary collapse
-
#auth ⇒ Object
Public: Auth hash for JIRA.
-
#create_issue(project_key, title, issue_type_id) ⇒ Object
Public: Create issue.
-
#initialize(config, prompt) ⇒ Client
constructor
Initialize.
-
#issue_link(issue_key) ⇒ Object
Public: Issue link.
-
#issue_output_format(issue) ⇒ Object
Public: Issue output formatter.
-
#issue_trans(issue_key) ⇒ Object
Public: Jira issue transitions.
-
#issue_types ⇒ Object
Public: Jira issue types.
-
#project(project_key) ⇒ Object
Public: Jira project.
-
#projects ⇒ Object
Public: Jira projects.
-
#safe ⇒ Object
Public: Safe process JIRA action.
-
#search_issue(project, title) ⇒ Object
Public: Search issue.
-
#update_issue_assignee(issue_key, assignee_name) ⇒ Object
Public: Update issue.
-
#update_issue_transition(issue_key, transition_id) ⇒ Object
Public: Update issue transition.
Constructor Details
#initialize(config, prompt) ⇒ Client
Initialize.
config - Speedflow::Plugin::Jira::Configuration instance. prompt - Speedflow::Plugin::Jira::Prompt instance.
Examples
Client.new({}, Speedflow::Plugin::Jira::Prompt.new)
# => <Speedflow::Plugin::Jira::Client>
Returns nothing.
28 29 30 31 |
# File 'lib/speedflow/plugin/jira/client.rb', line 28 def initialize(config, prompt) @config = config @prompt = prompt end |
Instance Attribute Details
#jira_client ⇒ Object
Public: Jira client.
Returns <::JIRA::Client> instance.
167 168 169 |
# File 'lib/speedflow/plugin/jira/client.rb', line 167 def jira_client @jira_client ||= ::JIRA::Client.new(auth) end |
#prompt ⇒ Object
Public: Prompt.
Returns <::Speedflow::Plugin::Prompt> instance.
188 189 190 |
# File 'lib/speedflow/plugin/jira/client.rb', line 188 def prompt @prompt ||= ::Speedflow::Plugin::Prompt.new end |
Instance Method Details
#auth ⇒ Object
Public: Auth hash for JIRA.
Returns hash of auth.
174 175 176 177 178 179 180 181 182 183 |
# File 'lib/speedflow/plugin/jira/client.rb', line 174 def auth { username: @config.by_config('username'), password: @config.by_config('password'), site: @config.by_config('site'), context_path: @config.by_config('context_path', ''), auth_type: @config.by_config('auth_type', :basic).to_sym, read_timeout: @config.by_config('read_timeout', 120).to_i } end |
#create_issue(project_key, title, issue_type_id) ⇒ Object
Public: Create issue.
project_key - Project key. title - Title (summary). issue_type_id - Issue type (Fixnum).
Returns Hash of issue.
53 54 55 56 57 58 59 60 61 |
# File 'lib/speedflow/plugin/jira/client.rb', line 53 def create_issue(project_key, title, issue_type_id) safe do issue = jira_client.Issue.build data = IssueFormatter.to_create(project_key, title, issue_type_id) issue.save!(data) issue.fetch issue end end |
#issue_link(issue_key) ⇒ Object
Public: Issue link.
issue_key - Issue key.
Returns issue link.
130 131 132 133 134 135 136 |
# File 'lib/speedflow/plugin/jira/client.rb', line 130 def issue_link(issue_key) issue_link = @config.by_config('site') issue_link << @config.by_config('context_path') issue_link << 'browse/' issue_link << issue_key issue_link end |
#issue_output_format(issue) ⇒ Object
Public: Issue output formatter.
issue - ::JIRA::Resource::Issue
Returns Hash.
143 144 145 146 147 148 |
# File 'lib/speedflow/plugin/jira/client.rb', line 143 def issue_output_format(issue) { 'issue' => { 'key' => issue.key, 'summary' => issue.fields['summary'], 'url' => issue_link(issue.key) } } end |
#issue_trans(issue_key) ⇒ Object
Public: Jira issue transitions.
issue_key - Issue key.
Returns Hash of transitions.
111 112 113 114 115 116 |
# File 'lib/speedflow/plugin/jira/client.rb', line 111 def issue_trans(issue_key) safe do issue = jira_client.Issue.find(issue_key, expand: 'transitions') issue.transitions end end |
#issue_types ⇒ Object
Public: Jira issue types.
Returns Hash of issue types.
121 122 123 |
# File 'lib/speedflow/plugin/jira/client.rb', line 121 def issue_types safe { jira_client.Issuetype.all } end |
#project(project_key) ⇒ Object
Public: Jira project.
project_key - Project key.
Returns JIRA::Resource.Project.
95 96 97 |
# File 'lib/speedflow/plugin/jira/client.rb', line 95 def project(project_key) safe { jira_client.Project.find(project_key) } end |
#projects ⇒ Object
Public: Jira projects.
Returns Hash of projects.
102 103 104 |
# File 'lib/speedflow/plugin/jira/client.rb', line 102 def projects safe { jira_client.Project.all } end |
#safe ⇒ Object
Public: Safe process JIRA action.
Returns nothing.
153 154 155 156 157 158 159 160 161 162 |
# File 'lib/speedflow/plugin/jira/client.rb', line 153 def safe yield rescue ::JIRA::HTTPError => exception prompt.error 'Jira errors' prompt.errors exception abort rescue ::URI::InvalidURIError prompt.error 'Invalid URL' abort end |
#search_issue(project, title) ⇒ Object
Public: Search issue.
project - Project name. title - Issue title.
Returns Hash of issue.
39 40 41 42 43 44 |
# File 'lib/speedflow/plugin/jira/client.rb', line 39 def search_issue(project, title) safe do jira_client .Issue.jql("PROJECT = \"#{project}\" AND text ~ \"#{title}\"") end end |
#update_issue_assignee(issue_key, assignee_name) ⇒ Object
Public: Update issue.
issue_key - Key of issue. assignee_name - Assignee name.
Returns Hash of issue.
69 70 71 72 73 74 75 |
# File 'lib/speedflow/plugin/jira/client.rb', line 69 def update_issue_assignee(issue_key, assignee_name) safe do issue = jira_client.Issue.find(issue_key) data = IssueFormatter.to_assignee(assignee_name) issue.save!(data) end end |
#update_issue_transition(issue_key, transition_id) ⇒ Object
Public: Update issue transition.
issue_key - Key of issue. transition_id - Transition ID.
Returns Hash of issue.
83 84 85 86 87 88 |
# File 'lib/speedflow/plugin/jira/client.rb', line 83 def update_issue_transition(issue_key, transition_id) safe do issue = jira_client.Issue.find(issue_key) issue.transitions.build.save!(transition: transition_id) end end |