Class: CTodo::GoogleCodeProjectHosting

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/ctodo/gcode.rb

Instance Method Summary collapse

Constructor Details

#initialize(conf) ⇒ GoogleCodeProjectHosting

Returns a new instance of GoogleCodeProjectHosting.



7
8
9
10
11
12
13
14
15
# File 'lib/ctodo/gcode.rb', line 7

def initialize(conf)
  @enabled = true
  if @enabled
    dir = [:git_repo_dir, :hg_repo_dir, :cur_dir].map {|k| conf[k]}.select {|v| not v.nil?}.first
    @repo_name = File.basename(dir)
    # HACK: 1000 should really be enough
    @limit = (conf[:all] ? 1000 : 25)
  end
end

Instance Method Details

#get_issues(issues) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ctodo/gcode.rb', line 17

def get_issues(issues)
  return if not @enabled
  
  r = self.class.get "/#{@repo_name}/issues/full", :query => {:can => 'open', :"max-results" => @limit}
  #puts r.code
  return unless r.code == 200
  #puts r.inspect

  feed = HTTParty::Parser.call(r.body, :xml)
  return if feed['feed'].nil?
  feed = feed['feed']
  
  return if feed['entry'].nil?
  
  #puts feed['entry'].first.inspect
  
  feed['entry'].each do |e|
    loc = e['link'].select {|link| link['type'] == 'text/html'}.first
    loc = loc['href'] unless loc.nil?
    assig = e['owner'].nil? ? nil : e['owner']['username']
    tags = e['label'].map {|lab| Tag.new(lab, ColorUtils.rgb4string(lab))}
    issues << Issue.new(e['title'], loc, assig, tags)
  end
end