Class: Atig::Agent::List

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/atig/agent/list.rb

Direct Known Subclasses

FullList

Instance Method Summary collapse

Methods included from ExceptionUtil

daemon, safe

Constructor Details

#initialize(context, api, db) ⇒ List

Returns a new instance of List.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/atig/agent/list.rb', line 10

def initialize(context, api, db)
  @log = context.log
  @db  = db
  log :info, "initialize"

  @db.lists.on_invalidated do |name|
    log :info, "invalidated #{name}"
    api.delay(0) do |t|
      if name == :all then
        full_update t
      else
        @db.lists[name].update t.page("lists/members", :users, {:owner_screen_name => @db.me.screen_name, :slug => name})
      end
    end
  end
  api.repeat( interval ) do|t|
    self.full_update t
  end
end

Instance Method Details

#full_update(t) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/atig/agent/list.rb', line 30

def full_update(t)
  lists = entry_points.map{|entry|
    t.get(entry)
  }.flatten.compact

  users = {}
  lists.map do |list|
    name = if list.user.screen_name == @db.me.screen_name then
             "#{list.slug}"
           else
             "#{list.user.screen_name}^#{list.slug}"
           end
    begin
      users[name] =
        t.page("lists/members", :users, {:owner_screen_name => list.user.screen_name, :slug => list.slug})
    rescue => e
      log :error, e.inspect
      users[name] =
        @db.lists.find_by_list_name(list.slug)
    end
  end
  @db.lists.update users
end