Class: T::List
Constant Summary
collapse
- DEFAULT_NUM_RESULTS =
20
- MAX_SCREEN_NAME_SIZE =
20
- MAX_USERS_PER_LIST =
500
- MAX_USERS_PER_REQUEST =
100
Constants included
from Requestable
Requestable::DEFAULT_HOST, Requestable::DEFAULT_PROTOCOL
Instance Method Summary
collapse
#base_url, #client, #host, included, #protocol
Methods included from Printable
included, #print_in_columns, #print_status_list, #print_user_list
#collect_with_cursor
Constructor Details
#initialize ⇒ List
Returns a new instance of List.
26
27
28
29
|
# File 'lib/t/list.rb', line 26
def initialize(*)
super
@rcfile = RCFile.instance
end
|
Instance Method Details
#add(list_name, screen_name, *screen_names) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/t/list.rb', line 32
def add(list_name, screen_name, *screen_names)
screen_names.unshift(screen_name)
screen_names.map!(&:strip_ats)
screen_names.in_groups_of(MAX_USERS_PER_REQUEST, false).threaded_each do |user_id_group|
retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do
client.list_add_members(list_name, user_id_group)
end
end
number = screen_names.length
say "@#{@rcfile.default_profile[0]} added #{number} #{number == 1 ? 'member' : 'members'} to the list \"#{list_name}\"."
say
say "Run `#{File.basename($0)} list remove #{list_name} #{screen_names.join(' ')}` to undo."
end
|
#create(list_name, description = "") ⇒ Object
48
49
50
51
52
53
|
# File 'lib/t/list.rb', line 48
def create(list_name, description="")
opts = description.blank? ? {} : {:description => description}
opts.merge!(:mode => 'private') if options['private']
client.list_create(list_name, opts)
say "@#{@rcfile.default_profile[0]} created the list \"#{list_name}\"."
end
|
#members(*args) ⇒ Object
65
66
67
68
69
70
71
72
|
# File 'lib/t/list.rb', line 65
def members(*args)
list = args.pop
owner = args.pop || @rcfile.default_profile[0]
users = collect_with_cursor do |cursor|
client.list_members(owner, list, :cursor => cursor, :include_entities => false, :skip_status => true)
end
print_user_list(users)
end
|
#remove(list_name, screen_name, *screen_names) ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/t/list.rb', line 75
def remove(list_name, screen_name, *screen_names)
screen_names.unshift(screen_name)
screen_names.map!(&:strip_ats)
screen_names.in_groups_of(MAX_USERS_PER_REQUEST, false).threaded_each do |user_id_group|
retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do
client.list_remove_members(list_name, user_id_group)
end
end
number = screen_names.length
say "@#{@rcfile.default_profile[0]} removed #{number} #{number == 1 ? 'member' : 'members'} from the list \"#{list_name}\"."
say
say "Run `#{File.basename($0)} list add #{list_name} #{screen_names.join(' ')}` to undo."
end
|
#timeline(*args) ⇒ Object
100
101
102
103
104
105
106
|
# File 'lib/t/list.rb', line 100
def timeline(*args)
list = args.pop
owner = args.pop || @rcfile.default_profile[0]
per_page = options['number'] || DEFAULT_NUM_RESULTS
statuses = client.list_timeline(owner, list, :include_entities => false, :per_page => per_page)
print_status_list(statuses)
end
|