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