Skip to content

Commit beca6fc

Browse files
committed
Allow user to pass number to DM methods
1 parent a2e50dd commit beca6fc

File tree

3 files changed

+46
-40
lines changed

3 files changed

+46
-40
lines changed

lib/t/cli.rb

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class CLI < Thor
1515

1616
DEFAULT_HOST = 'api.twitter.com'
1717
DEFAULT_PROTOCOL = 'https'
18-
DEFAULT_RPP = 20
18+
DEFAULT_NUM_RESULTS = 20
1919
MAX_SCREEN_NAME_SIZE = 20
2020

2121
check_unknown_options!
@@ -88,9 +88,12 @@ def block(screen_name)
8888
end
8989

9090
desc "direct_messages", "Returns the 20 most recent Direct Messages sent to you."
91+
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
9192
def direct_messages
93+
defaults = {:include_entities => false}
94+
defaults.merge!(:count => options['number']) if options['number']
9295
run_pager
93-
client.direct_messages(:include_entities => false).each do |direct_message|
96+
client.direct_messages(defaults).each do |direct_message|
9497
say "#{direct_message.sender.screen_name.rjust(MAX_SCREEN_NAME_SIZE)}: #{direct_message.text} (#{time_ago_in_words(direct_message.created_at)} ago)"
9598
end
9699
end
@@ -125,13 +128,13 @@ def favorite(screen_name)
125128
end
126129
map %w(fave) => :favorite
127130

128-
desc "favorites", "Returns the #{DEFAULT_RPP} most recent Tweets you favorited."
129-
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
131+
desc "favorites", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets you favorited."
132+
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
130133
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
131134
def favorites
132-
hash = {:include_entities => false}
133-
hash.merge!(:count => options['number']) if options['number']
134-
timeline = client.favorites(hash)
135+
defaults = {:include_entities => false}
136+
defaults.merge!(:count => options['number']) if options['number']
137+
timeline = client.favorites(defaults)
135138
timeline.reverse! if options['reverse']
136139
run_pager
137140
timeline.each do |status|
@@ -140,13 +143,13 @@ def favorites
140143
end
141144
map %w(faves) => :favorites
142145

143-
desc "mentions", "Returns the #{DEFAULT_RPP} most recent Tweets mentioning you."
144-
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
146+
desc "mentions", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets mentioning you."
147+
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
145148
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
146149
def mentions
147-
hash = {:include_entities => false}
148-
hash.merge!(:count => options['number']) if options['number']
149-
timeline = client.mentions(hash)
150+
defaults = {:include_entities => false}
151+
defaults.merge!(:count => options['number']) if options['number']
152+
timeline = client.mentions(defaults)
150153
timeline.reverse! if options['reverse']
151154
run_pager
152155
timeline.each do |status|
@@ -166,11 +169,11 @@ def open(screen_name)
166169
method_option :location, :aliases => "-l", :type => :boolean, :default => true
167170
def reply(screen_name, message)
168171
screen_name = screen_name.strip_at
169-
hash = {:include_entities => false, :trim_user => true}
170-
hash.merge!(:lat => location.lat, :long => location.lng) if options['location']
172+
defaults = {:include_entities => false, :trim_user => true}
173+
defaults.merge!(:lat => location.lat, :long => location.lng) if options['location']
171174
user = client.user(screen_name, :include_entities => false)
172-
hash.merge!(:in_reply_to_status_id => user.status.id) if user.status
173-
status = client.update("@#{user.screen_name} #{message}", hash)
175+
defaults.merge!(:in_reply_to_status_id => user.status.id) if user.status
176+
status = client.update("@#{user.screen_name} #{message}", defaults)
174177
say "Reply created by @#{@rcfile.default_profile[0]} to @#{user.screen_name} (#{time_ago_in_words(status.created_at)} ago)"
175178
say
176179
say "Run `#{$0} delete status` to delete."
@@ -198,9 +201,12 @@ def retweet(screen_name)
198201
map %w(rt) => :retweet
199202

200203
desc "sent_messages", "Returns the 20 most recent Direct Messages sent to you."
204+
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
201205
def sent_messages
206+
defaults = {:include_entities => false}
207+
defaults.merge!(:count => options['number']) if options['number']
202208
run_pager
203-
client.direct_messages_sent(:include_entities => false).each do |direct_message|
209+
client.direct_messages_sent(defaults).each do |direct_message|
204210
say "#{direct_message.recipient.screen_name.rjust(MAX_SCREEN_NAME_SIZE)}: #{direct_message.text} (#{time_ago_in_words(direct_message.created_at)} ago)"
205211
end
206212
end
@@ -222,9 +228,9 @@ def stats(screen_name)
222228
desc "status MESSAGE", "Post a Tweet."
223229
method_option :location, :aliases => "-l", :type => :boolean, :default => true
224230
def status(message)
225-
hash = {:include_entities => false, :trim_user => true}
226-
hash.merge!(:lat => location.lat, :long => location.lng) if options['location']
227-
status = client.update(message, hash)
231+
defaults = {:include_entities => false, :trim_user => true}
232+
defaults.merge!(:lat => location.lat, :long => location.lng) if options['location']
233+
status = client.update(message, defaults)
228234
say "Tweet created by @#{@rcfile.default_profile[0]} (#{time_ago_in_words(status.created_at)} ago)"
229235
say
230236
say "Run `#{$0} delete status` to delete."
@@ -243,17 +249,17 @@ def suggest
243249
end
244250
end
245251

246-
desc "timeline [SCREEN_NAME]", "Returns the #{DEFAULT_RPP} most recent Tweets posted by a user."
247-
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
252+
desc "timeline [SCREEN_NAME]", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets posted by a user."
253+
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
248254
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
249255
def timeline(screen_name=nil)
250-
hash = {:include_entities => false}
251-
hash.merge!(:count => options['number']) if options['number']
256+
defaults = {:include_entities => false}
257+
defaults.merge!(:count => options['number']) if options['number']
252258
if screen_name
253259
screen_name = screen_name.strip_at
254-
timeline = client.user_timeline(screen_name, hash)
260+
timeline = client.user_timeline(screen_name, defaults)
255261
else
256-
timeline = client.home_timeline(hash)
262+
timeline = client.home_timeline(defaults)
257263
end
258264
timeline.reverse! if options['reverse']
259265
run_pager

lib/t/cli/list.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class List < Thor
1010

1111
DEFAULT_HOST = 'api.twitter.com'
1212
DEFAULT_PROTOCOL = 'https'
13-
DEFAULT_RPP = 20
13+
DEFAULT_NUM_RESULTS = 20
1414
MAX_SCREEN_NAME_SIZE = 20
1515

1616
check_unknown_options!
@@ -23,19 +23,19 @@ def initialize(*)
2323
desc "create LIST_NAME [DESCRIPTION]", "Create a new list."
2424
method_option :private, :aliases => "-p", :type => :boolean
2525
def create(list_name, description="")
26-
hash = description.blank? ? {} : {:description => description}
27-
hash.merge!(:mode => 'private') if options['private']
28-
client.list_create(list_name, hash)
26+
defaults = description.blank? ? {} : {:description => description}
27+
defaults.merge!(:mode => 'private') if options['private']
28+
client.list_create(list_name, defaults)
2929
say "@#{@rcfile.default_profile[0]} created the list \"#{list_name}\"."
3030
end
3131

3232
desc "timeline LIST_NAME", "Show tweet timeline for members of the specified list."
33-
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
33+
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
3434
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
3535
def timeline(list_name)
36-
hash = {:include_entities => false}
37-
hash.merge!(:per_page => options['number']) if options['number']
38-
timeline = client.list_timeline(list_name, hash)
36+
defaults = {:include_entities => false}
37+
defaults.merge!(:per_page => options['number']) if options['number']
38+
timeline = client.list_timeline(list_name, defaults)
3939
timeline.reverse! if options['reverse']
4040
run_pager
4141
timeline.each do |status|

lib/t/cli/search.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Search < Thor
1111

1212
DEFAULT_HOST = 'api.twitter.com'
1313
DEFAULT_PROTOCOL = 'https'
14-
DEFAULT_RPP = 20
14+
DEFAULT_NUM_RESULTS = 20
1515
MAX_PAGES = 16
1616
MAX_RPP = 200
1717
MAX_SCREEN_NAME_SIZE = 20
@@ -23,13 +23,13 @@ def initialize(*)
2323
@rcfile = RCFile.instance
2424
end
2525

26-
desc "all QUERY", "Returns the #{DEFAULT_RPP} most recent Tweets that match a specified query."
27-
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
26+
desc "all QUERY", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets that match a specified query."
27+
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
2828
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
2929
def all(query)
30-
hash = {:include_entities => false}
31-
hash.merge!(:rpp => options['number']) if options['number']
32-
timeline = client.search(query, hash)
30+
defaults = {:include_entities => false}
31+
defaults.merge!(:rpp => options['number']) if options['number']
32+
timeline = client.search(query, defaults)
3333
timeline.reverse! if options['reverse']
3434
run_pager
3535
timeline.each do |status|

0 commit comments

Comments
 (0)