Class: Embulk::Input::JiraApi::Client
- Inherits:
-
Object
- Object
- Embulk::Input::JiraApi::Client
- Defined in:
- lib/embulk/input/jira_api/client.rb
Constant Summary collapse
- PARALLEL_THREAD_COUNT =
50
- SEARCH_TIMEOUT_SECONDS =
5
- SEARCH_ISSUES_TIMEOUT_SECONDS =
60
- DEFAULT_SEARCH_RETRY_TIMES =
10
Class Method Summary collapse
Instance Method Summary collapse
- #check_user_credential(username) ⇒ Object
- #search(jql, options = {}) ⇒ Object
- #search_issues(jql, options = {}) ⇒ Object
- #total_count(jql) ⇒ Object
Class Method Details
.setup(&block) ⇒ Object
15 16 17 18 |
# File 'lib/embulk/input/jira_api/client.rb', line 15 def self.setup(&block) Jiralicious.configure(&block) new end |
Instance Method Details
#check_user_credential(username) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/embulk/input/jira_api/client.rb', line 43 def check_user_credential(username) Jiralicious::User.search(username) rescue Jiralicious::JqlError, Jiralicious::AuthenticationError, Jiralicious::NotLoggedIn, Jiralicious::InvalidLogin => e raise Embulk::ConfigError.new(e.) rescue ::SocketError => e # wrong `uri` option given raise Embulk::ConfigError.new(e.) rescue MultiJson::ParseError => e html = e. title = html[%r|<title>(.*?)</title>|, 1] #=> e.g. "Unauthorized (401)" raise ConfigError.new("Can not authorize with your credential.") if title == 'Unauthorized (401)' end |
#search(jql, options = {}) ⇒ Object
33 34 35 36 37 |
# File 'lib/embulk/input/jira_api/client.rb', line 33 def search(jql, ={}) timeout_and_retry(SEARCH_TIMEOUT_SECONDS) do Jiralicious.search(jql, ) end end |
#search_issues(jql, options = {}) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/embulk/input/jira_api/client.rb', line 20 def search_issues(jql, ={}) timeout_and_retry(SEARCH_ISSUES_TIMEOUT_SECONDS) do issues_raw = search(jql, ).issues_raw # TODO: below code has race-conditon. Parallel.map(issues_raw, in_threads: PARALLEL_THREAD_COUNT) do |issue_raw| # https://github.com/dorack/jiralicious/blob/v0.4.0/lib/jiralicious/search_result.rb#L32-34 issue = Jiralicious::Issue.find(issue_raw["key"]) JiraApi::Issue.new(issue) end end end |
#total_count(jql) ⇒ Object
39 40 41 |
# File 'lib/embulk/input/jira_api/client.rb', line 39 def total_count(jql) search(jql, max_results: 1).num_results end |