Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require 'httparty'
  4. require 'active_support'
  5.  
  6. class Tender
  7. include HTTParty
  8.  
  9. format :json
  10.  
  11. def initialize(hostname, u, p)
  12. @base_uri = HTTParty.normalize_base_uri(hostname)
  13. @auth = {:username => u, :password => p}
  14. end
  15.  
  16. def open_issues
  17. get '/dashboard/open.json'
  18. end
  19.  
  20. def new_issues
  21. get '/dashboard/new.json'
  22. end
  23.  
  24. def pending_issues
  25. get '/dashboard/pending.json'
  26. end
  27.  
  28. def ticketed_issues
  29. get '/dashboard/assigned.json'
  30. end
  31.  
  32. def resolved_issues
  33. get '/dashboard/resolved.json'
  34. end
  35.  
  36. def all_discussions
  37. discussions = []
  38.  
  39. discussions += open_issues['discussions']
  40. discussions += new_issues['discussions']
  41. discussions += pending_issues['discussions']
  42. discussions += ticketed_issues['discussions']
  43. discussions += resolved_issues['discussions']
  44.  
  45. discussions.uniq
  46. end
  47.  
  48. def get(path, options = {})
  49. self.class.get(path, options.merge(:basic_auth => @auth, :base_uri => @base_uri))
  50. end
  51. end
  52.  
  53. t = Tender.new(ARGV[0], ARGV[1], ARGV[2])
  54.  
  55. discussions = t.all_discussions
  56. discussions = discussions.group_by { |d| d['created_at'].to_date }
  57. discussions = discussions.sort_by { |d| d.first }
  58.  
  59. labels = []
  60. data = []
  61.  
  62. discussions.each do |date, ds|
  63. labels << date
  64. data << ds.length
  65. puts "#{date}: #{ds.length}"
  66. end
  67.  
  68. # If you want to chart it
  69. require 'gchart'
  70. puts Gchart.sparkline(:data => data, :size => '200x25')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement