Class: Mbeditor::RedmineService

Inherits:
Object
  • Object
show all
Defined in:
app/services/mbeditor/redmine_service.rb

Overview

Fetches a Redmine issue via the REST API.

Only usable when Mbeditor.configuration.redmine_enabled is true.

Returns:

{
  "id"          => Integer,
  "title"       => String,
  "description" => String,
  "status"      => String,
  "author"      => String,
  "notes"       => Array<String>
}

Constant Summary collapse

TIMEOUT_SECONDS =
5

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(issue_id:) ⇒ RedmineService

Returns a new instance of RedmineService.



35
36
37
# File 'app/services/mbeditor/redmine_service.rb', line 35

def initialize(issue_id:)
  @issue_id = issue_id.to_s
end

Instance Attribute Details

#issue_idObject (readonly)

Returns the value of attribute issue_id.



33
34
35
# File 'app/services/mbeditor/redmine_service.rb', line 33

def issue_id
  @issue_id
end

Instance Method Details

#callObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/services/mbeditor/redmine_service.rb', line 39

def call
  raise RedmineDisabledError unless Mbeditor.configuration.redmine_enabled

  config = Mbeditor.configuration
  raise RedmineConfigError, "redmine_url is not configured" if config.redmine_url.blank?
  raise RedmineConfigError, "redmine_api_key is not configured" if config.redmine_api_key.blank?

  uri = URI.parse(config.redmine_url.to_s.chomp("/"))
  raise RedmineConfigError, "redmine_url must use http or https scheme" unless %w[http https].include?(uri.scheme)

  fetch_issue(config.redmine_url, config.redmine_api_key)
end