You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by Sam Ruby <ru...@apache.org> on 2016/02/15 21:00:24 UTC

[whimsy.git] [1/1] Commit 403c8b3: server side support for attic issues

Commit 403c8b3a42f6246ea47a2a814a77830a051eec22:
    server side support for attic issues


Branch: refs/heads/master
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>

------------------------------------------------------------
www/roster/main.rb                                           | ++++ 
www/roster/models.rb                                         | + 
www/roster/models/attic.rb                                   | ++++++++++++ 
------------------------------------------------------------
29 changes: 29 additions, 0 deletions.
------------------------------------------------------------


diff --git a/www/roster/main.rb b/www/roster/main.rb
index aa3045e..747f11c 100755
--- a/www/roster/main.rb
+++ b/www/roster/main.rb
@@ -69,3 +69,7 @@
   _json :"actions/#{params[:file]}"
 end
 
+# attic issues
+get '/attic/issues.json' do
+  _json Attic.issues
+end
diff --git a/www/roster/models.rb b/www/roster/models.rb
index d2ba882..3cf0d4f 100644
--- a/www/roster/models.rb
+++ b/www/roster/models.rb
@@ -1,3 +1,4 @@
+require_relative 'models/attic'
 require_relative 'models/auth'
 require_relative 'models/committer'
 require_relative 'models/committee'
diff --git a/www/roster/models/attic.rb b/www/roster/models/attic.rb
new file mode 100644
index 0000000..8ee1cd6
--- /dev/null
+++ b/www/roster/models/attic.rb
@@ -0,0 +1,24 @@
+class Attic
+  def self.issues
+    @issues = nil if @mtime and Time.now - @mtime > 300
+
+    unless @issues
+      require 'cgi'
+      query = 'project = ATTIC AND status in (Open, "In Progress", Reopened)'
+
+      uri = URI.parse('https://issues.apache.org/jira/rest/api/2/search?jql=')
+
+      Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
+        request = Net::HTTP::Get.new(uri.request_uri + CGI.escape(query))
+
+        response = http.request(request)
+
+        @issues = JSON.parse(response.body)['issues'].map do |issue|
+          [ issue['key'], issue['fields']['summary'] ]
+        end
+      end
+    end
+
+    Hash[@issues]
+  end
+end