Skip to content

Commit

Permalink
Allow user to pass number to DM methods
Browse files Browse the repository at this point in the history
  • Loading branch information
sferik committed Jan 2, 2012
1 parent a2e50dd commit beca6fc
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 40 deletions.
58 changes: 32 additions & 26 deletions lib/t/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class CLI < Thor

DEFAULT_HOST = 'api.twitter.com'
DEFAULT_PROTOCOL = 'https'
DEFAULT_RPP = 20
DEFAULT_NUM_RESULTS = 20
MAX_SCREEN_NAME_SIZE = 20

check_unknown_options!
Expand Down Expand Up @@ -88,9 +88,12 @@ def block(screen_name)
end

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

desc "favorites", "Returns the #{DEFAULT_RPP} most recent Tweets you favorited."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
desc "favorites", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets you favorited."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
def favorites
hash = {:include_entities => false}
hash.merge!(:count => options['number']) if options['number']
timeline = client.favorites(hash)
defaults = {:include_entities => false}
defaults.merge!(:count => options['number']) if options['number']
timeline = client.favorites(defaults)
timeline.reverse! if options['reverse']
run_pager
timeline.each do |status|
Expand All @@ -140,13 +143,13 @@ def favorites
end
map %w(faves) => :favorites

desc "mentions", "Returns the #{DEFAULT_RPP} most recent Tweets mentioning you."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
desc "mentions", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets mentioning you."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
def mentions
hash = {:include_entities => false}
hash.merge!(:count => options['number']) if options['number']
timeline = client.mentions(hash)
defaults = {:include_entities => false}
defaults.merge!(:count => options['number']) if options['number']
timeline = client.mentions(defaults)
timeline.reverse! if options['reverse']
run_pager
timeline.each do |status|
Expand All @@ -166,11 +169,11 @@ def open(screen_name)
method_option :location, :aliases => "-l", :type => :boolean, :default => true
def reply(screen_name, message)
screen_name = screen_name.strip_at
hash = {:include_entities => false, :trim_user => true}
hash.merge!(:lat => location.lat, :long => location.lng) if options['location']
defaults = {:include_entities => false, :trim_user => true}
defaults.merge!(:lat => location.lat, :long => location.lng) if options['location']
user = client.user(screen_name, :include_entities => false)
hash.merge!(:in_reply_to_status_id => user.status.id) if user.status
status = client.update("@#{user.screen_name} #{message}", hash)
defaults.merge!(:in_reply_to_status_id => user.status.id) if user.status
status = client.update("@#{user.screen_name} #{message}", defaults)
say "Reply created by @#{@rcfile.default_profile[0]} to @#{user.screen_name} (#{time_ago_in_words(status.created_at)} ago)"
say
say "Run `#{$0} delete status` to delete."
Expand Down Expand Up @@ -198,9 +201,12 @@ def retweet(screen_name)
map %w(rt) => :retweet

desc "sent_messages", "Returns the 20 most recent Direct Messages sent to you."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
def sent_messages
defaults = {:include_entities => false}
defaults.merge!(:count => options['number']) if options['number']
run_pager
client.direct_messages_sent(:include_entities => false).each do |direct_message|
client.direct_messages_sent(defaults).each do |direct_message|
say "#{direct_message.recipient.screen_name.rjust(MAX_SCREEN_NAME_SIZE)}: #{direct_message.text} (#{time_ago_in_words(direct_message.created_at)} ago)"
end
end
Expand All @@ -222,9 +228,9 @@ def stats(screen_name)
desc "status MESSAGE", "Post a Tweet."
method_option :location, :aliases => "-l", :type => :boolean, :default => true
def status(message)
hash = {:include_entities => false, :trim_user => true}
hash.merge!(:lat => location.lat, :long => location.lng) if options['location']
status = client.update(message, hash)
defaults = {:include_entities => false, :trim_user => true}
defaults.merge!(:lat => location.lat, :long => location.lng) if options['location']
status = client.update(message, defaults)
say "Tweet created by @#{@rcfile.default_profile[0]} (#{time_ago_in_words(status.created_at)} ago)"
say
say "Run `#{$0} delete status` to delete."
Expand All @@ -243,17 +249,17 @@ def suggest
end
end

desc "timeline [SCREEN_NAME]", "Returns the #{DEFAULT_RPP} most recent Tweets posted by a user."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
desc "timeline [SCREEN_NAME]", "Returns the #{DEFAULT_NUM_RESULTS} most recent Tweets posted by a user."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
def timeline(screen_name=nil)
hash = {:include_entities => false}
hash.merge!(:count => options['number']) if options['number']
defaults = {:include_entities => false}
defaults.merge!(:count => options['number']) if options['number']
if screen_name
screen_name = screen_name.strip_at
timeline = client.user_timeline(screen_name, hash)
timeline = client.user_timeline(screen_name, defaults)
else
timeline = client.home_timeline(hash)
timeline = client.home_timeline(defaults)
end
timeline.reverse! if options['reverse']
run_pager
Expand Down
16 changes: 8 additions & 8 deletions lib/t/cli/list.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class List < Thor

DEFAULT_HOST = 'api.twitter.com'
DEFAULT_PROTOCOL = 'https'
DEFAULT_RPP = 20
DEFAULT_NUM_RESULTS = 20
MAX_SCREEN_NAME_SIZE = 20

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

desc "timeline LIST_NAME", "Show tweet timeline for members of the specified list."
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_RPP
method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
def timeline(list_name)
hash = {:include_entities => false}
hash.merge!(:per_page => options['number']) if options['number']
timeline = client.list_timeline(list_name, hash)
defaults = {:include_entities => false}
defaults.merge!(:per_page => options['number']) if options['number']
timeline = client.list_timeline(list_name, defaults)
timeline.reverse! if options['reverse']
run_pager
timeline.each do |status|
Expand Down
12 changes: 6 additions & 6 deletions lib/t/cli/search.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class Search < Thor

DEFAULT_HOST = 'api.twitter.com'
DEFAULT_PROTOCOL = 'https'
DEFAULT_RPP = 20
DEFAULT_NUM_RESULTS = 20
MAX_PAGES = 16
MAX_RPP = 200
MAX_SCREEN_NAME_SIZE = 20
Expand All @@ -23,13 +23,13 @@ def initialize(*)
@rcfile = RCFile.instance
end

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

0 comments on commit beca6fc

Please sign in to comment.