class ErrbitRedminePlugin::IssueTracker

Constants

FIELDS
LABEL
NOTE

Public Class Methods

fields() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 48
def self.fields
  FIELDS
end
icons() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 52
def self.icons
  @icons ||= {
    create: [
      'image/png', ErrbitRedminePlugin.read_static_file('redmine_create.png')
    ],
    goto: [
      'image/png', ErrbitRedminePlugin.read_static_file('redmine_goto.png'),
    ],
    inactive: [
      'image/png', ErrbitRedminePlugin.read_static_file('redmine_inactive.png'),
    ]
  }
end
label() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 40
def self.label
  LABEL
end
note() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 44
def self.note
  NOTE
end

Public Instance Methods

comments_allowed?() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 76
def comments_allowed?
  false
end
configured?() click to toggle source

configured properly if all the fields are filled in

# File lib/errbit_redmine_plugin/issue_tracker.rb, line 81
def configured?
  non_empty_options = options.reject { |k,v| v.empty? }.keys.map(&:intern)
  (required_fields - non_empty_options).empty?
end
create_issue(title, body, user: {}) click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 98
def create_issue(title, body, user: {})
  token  = options['api_token']
  acc    = options['account']
  user   = options['username']
  passwd = options['password']
  project_id = options['project_id']
  tracker_id = options['tracker_id']

  RedmineClient::Base.configure do
    self.token = token
    self.user = user
    self.password = passwd
    self.site = acc
    self.format = :xml
  end

  issue = RedmineClient::Issue.new(:project_id => project_id)
  issue.subject = title
  issue.description = body
  issue.tracker_id = tracker_id if tracker_id.present?
  issue.save!

  issue_link(issue)
end
errors() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 90
def errors
  errors = []
  unless configured?
    errors << [:base, 'You must specify your Redmine URL, API token, Username, Password and Project ID']
  end
  errors
end
required_fields() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 86
def required_fields
  FIELDS.reject { |k,v| v[:optional] }.map { |f| f[0] }.map(&:intern)
end
url() click to toggle source
# File lib/errbit_redmine_plugin/issue_tracker.rb, line 66
def url
  account = options['account']
  project_id = options['project_id']

  acc_url = account.start_with?('http') ? account : "http://#{account}"
  acc_url = acc_url.gsub(/\/$/, '')
  URI.parse("#{acc_url}/projects/#{project_id}").to_s
rescue URI::InvalidURIError
end