class MineShipper::Redmine

Public Class Methods

new(base_url, api_key = nil) click to toggle source
# File lib/mine-shipper/redmine.rb, line 91
def initialize(base_url, api_key = nil)
  @base_url = base_url
  @api_key = api_key
end

Public Instance Methods

api_request(path, params = {}, method = :get) click to toggle source
# File lib/mine-shipper/redmine.rb, line 96
def api_request(path, params = {}, method = :get)
  url = "#{@base_url}/#{path}"
  uri = URI.parse(url)

  case method
  when :get
    req = Net::HTTP::Get.new(uri.request_uri)
  when :post
    req = Net::HTTP::Post.new(uri.request_uri)
  when :put
    req = Net::HTTP::Put.new(uri.request_uri)
  end
  req["Content-Type"] = "application/json"
  req['X-Redmine-API-Key'] = @api_key
  req.body = params.to_json

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  response = http.request(req)
  if response.kind_of?(Net::HTTPSuccess)
    response
  else
    raise "#{uri}: #{response.code} #{response.message}"
  end
end
custom_field_id(custom_field_name) click to toggle source
# File lib/mine-shipper/redmine.rb, line 127
def custom_field_id(custom_field_name)
  fields = custom_fields
  field = fields.find do |field|
    field["name"] == custom_field_name
  end
  field["id"]
end
custom_fields(params = {}) click to toggle source
# File lib/mine-shipper/redmine.rb, line 122
def custom_fields(params = {})
 response = api_request("custom_fields.json", params)
  JSON.parse(response.body)["custom_fields"]
end
issue(id) click to toggle source
# File lib/mine-shipper/redmine.rb, line 146
def issue(id)
  params = {
    include: "journals"
  }
  response = api_request("issues/#{id}.json", params)
  issue_json = JSON.parse(response.body)["issue"]
  Issue.new(self, issue_json)
end
issue_by_custom_field(field_id, field_value) click to toggle source
# File lib/mine-shipper/redmine.rb, line 165
def issue_by_custom_field(field_id, field_value)
  issues = issues_by_custom_field(field_id, field_value, limit: 1)
  issues.empty? ? nil : issues.first
end
issues(params = {}) click to toggle source
# File lib/mine-shipper/redmine.rb, line 135
def issues(params = {})
  response = api_request("issues.json", params)
  issues_json = JSON.parse(response.body)["issues"]
  issues = []
  issues_json.each do |issue_json|
    id = issue_json["id"]
    issues << issue(id)
  end
  issues
end
issues_by_custom_field(field_id, field_value, limit: nil) click to toggle source
# File lib/mine-shipper/redmine.rb, line 155
def issues_by_custom_field(field_id, field_value, limit: nil)
  search_options = {
    "cf_#{field_id}".to_sym => field_value,
    :status_id => '*',
    :sort => 'id',
    :limit => limit,
  }
  issues(search_options)
end