lib/agile_notifier/jira.rb in agile_notifier-1.1.1 vs lib/agile_notifier/jira.rb in agile_notifier-2.0
- old
+ new
@@ -1,7 +1,49 @@
require_relative 'its'
+require_relative 'response_helper'
module AgileNotifier
class Jira < ITS
-
+ include ResponseHelper
+
+ alias_method :original_is_available?, :is_available?
+
+ API_VERSION_URL = '/rest/api/latest/'
+ USERAGENT = 'AgileNotifier'
+
+ def initialize(args)
+ @url = args.fetch(:url).gsub(/\/$/, '') + API_VERSION_URL
+ @username = args.fetch(:username)
+ @password = args.fetch(:password)
+ @wip = Hash.new
+ end
+
+ def is_available?
+ original_is_available?(@url + 'serverInfo')
+ end
+
+ def query_amount_of_tickets(jql)
+ get_value('total', jql)
+ end
+
+ def set_limit(project, query, limit)
+ @wip[project] = {:query => query, :limit => limit}
+ end
+
+ def exceeds_limit?
+ @wip.inject({}) do |result, (key, value)|
+ result.merge({key => query_amount_of_tickets(value[:query]) > value[:limit]})
+ end
+ end
+
+ def get_value(key, jql, max = 1)
+ get_value_of_key(key,
+ @url + 'search',
+ :method => :post,
+ :headers => {'Content-Type' => 'application/json', 'User-Agent' => USERAGENT},
+ :basic_auth => {:username => @username, :password => @password},
+ :body => {'jql' => jql, 'maxResults' => max}.to_json)
+ end
+
+ private :get_value
end
end
\ No newline at end of file