Class: T::Delete

Inherits:
Thor
  • Object
show all
Includes:
Requestable, Utils
Defined in:
lib/t/delete.rb

Constant Summary

Constants included from Utils

Utils::DISTANCE_THRESHOLDS

Constants included from RequestableAPI

RequestableAPI::BASE_URL, RequestableAPI::BASE_URL_UPLOAD, RequestableAPI::BASE_URL_V1, RequestableAPI::DEFAULT_NUM_RESULTS, RequestableAPI::FORM_HEADERS, RequestableAPI::JSON_HEADERS, RequestableAPI::MAX_PAGE, RequestableAPI::MAX_SEARCH_RESULTS, RequestableAPI::V2_LIST_FIELDS, RequestableAPI::V2_PLACE_FIELDS, RequestableAPI::V2_TWEET_EXPANSIONS, RequestableAPI::V2_TWEET_FIELDS, RequestableAPI::V2_USER_EXPANSIONS, RequestableAPI::V2_USER_FIELDS

Instance Method Summary collapse

Methods included from RequestableAPI

#setup_requestable_api!

Methods included from RequestableAPI::AccountEndpoints

#x_before_request, #x_filter, #x_sample, #x_settings, #x_trend_locations, #x_trends, #x_update_profile, #x_update_profile_background_image, #x_update_profile_image

Methods included from RequestableAPI::ListEndpoints

#x_add_list_members, #x_create_list, #x_destroy_list, #x_list, #x_list_member?, #x_list_members, #x_list_timeline, #x_lists, #x_remove_list_members

Methods included from RequestableAPI::DMEndpoints

#x_create_direct_message_event, #x_destroy_direct_message, #x_direct_message, #x_direct_messages_received, #x_direct_messages_sent

Methods included from RequestableAPI::Mutations

#x_block, #x_destroy_status, #x_favorite, #x_follow, #x_mute, #x_muted_ids, #x_report_spam, #x_retweet, #x_unblock, #x_unfavorite, #x_unfollow, #x_unmute

Methods included from RequestableAPI::TweetEndpoints

#x_favorites, #x_home_timeline, #x_mentions, #x_retweeted_by_me, #x_retweeted_by_user, #x_retweeters_ids, #x_retweets_of_me, #x_search, #x_status, #x_update, #x_update_with_media, #x_user_timeline

Methods included from RequestableAPI::UserEndpoints

#x_follower_ids, #x_friend_ids, #x_friendship?, #x_user, #x_user_search, #x_users, #x_verify_credentials

Constructor Details

#initializeDelete

Returns a new instance of Delete.



13
14
15
16
# File 'lib/t/delete.rb', line 13

def initialize(*)
  @rcfile = T::RCFile.instance
  super
end

Instance Method Details

#account(account, key = nil) ⇒ Object



100
101
102
103
104
105
106
# File 'lib/t/delete.rb', line 100

def (, key = nil)
  if key && @rcfile.profiles[].keys.size > 1
    @rcfile.delete_key(, key)
  else
    @rcfile.delete_profile()
  end
end

#block(user, *users) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/t/delete.rb', line 21

def block(user, *users)
  unblocked_users, number = fetch_users(users.unshift(user), options) do |users_to_unblock|
    x_unblock(users_to_unblock)
  end
  say "@#{@rcfile.active_profile[0]} unblocked #{pluralize(number, 'user')}."
  say
  say "Run `#{File.basename($PROGRAM_NAME)} block #{unblocked_users.collect { |unblocked_user| "@#{unblocked_user['screen_name']}" }.join(' ')}` to block."
end

#dm(direct_message_id, *direct_message_ids) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/t/delete.rb', line 32

def dm(direct_message_id, *direct_message_ids)
  direct_message_ids.unshift(direct_message_id)
  direct_message_ids.collect!(&:to_i)
  if options["force"]
    x_destroy_direct_message(*direct_message_ids)
    say "@#{@rcfile.active_profile[0]} deleted #{direct_message_ids.size} direct message#{'s' unless direct_message_ids.size == 1}."
  else
    direct_message_ids.each do |direct_message_id_to_delete|
      direct_message = x_direct_message(direct_message_id_to_delete)
      next unless direct_message

      recipient = x_user(direct_message["recipient_id"])
      next unless yes? "Are you sure you want to permanently delete the direct message to @#{recipient['screen_name']}: \"#{direct_message['text']}\"? [y/N]"

      x_destroy_direct_message(direct_message_id_to_delete)
      say "@#{@rcfile.active_profile[0]} deleted the direct message sent to @#{recipient['screen_name']}: \"#{direct_message['text']}\""
    end
  end
end

#favorite(status_id, *status_ids) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/t/delete.rb', line 55

def favorite(status_id, *status_ids)
  status_ids.unshift(status_id)
  status_ids.collect!(&:to_i)
  if options["force"]
    tweets = x_unfavorite(status_ids)
    tweets.each do |status|
      say "@#{@rcfile.active_profile[0]} unfavorited Tweet #{status['id_str']}."
    end
  else
    status_ids.each do |status_id_to_unfavorite|
      status = x_status(status_id_to_unfavorite, include_my_retweet: false)
      next unless yes? "Are you sure you want to remove @#{status['user']['screen_name']}'s status: \"#{status['full_text']}\" from your favorites? [y/N]"

      x_unfavorite(status_id_to_unfavorite)
      say "@#{@rcfile.active_profile[0]} unfavorited @#{status['user']['screen_name']}'s status: \"#{status['full_text']}\""
    end
  end
end

#list(list) ⇒ Object



78
79
80
81
82
83
84
85
# File 'lib/t/delete.rb', line 78

def list(list)
  list = list.to_i if options["id"]
  list = x_list(list)
  return if !options["force"] && !(yes? "Are you sure you want to permanently delete the list \"#{list['name']}\"? [y/N]")

  x_destroy_list(list)
  say "@#{@rcfile.active_profile[0]} deleted the list \"#{list['name']}\"."
end

#mute(user, *users) ⇒ Object



90
91
92
93
94
95
96
97
# File 'lib/t/delete.rb', line 90

def mute(user, *users)
  unmuted_users, number = fetch_users(users.unshift(user), options) do |users_to_unmute|
    x_unmute(users_to_unmute)
  end
  say "@#{@rcfile.active_profile[0]} unmuted #{pluralize(number, 'user')}."
  say
  say "Run `#{File.basename($PROGRAM_NAME)} mute #{unmuted_users.collect { |unmuted_user| "@#{unmuted_user['screen_name']}" }.join(' ')}` to mute."
end

#status(status_id, *status_ids) ⇒ Object



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/t/delete.rb', line 110

def status(status_id, *status_ids)
  status_ids.unshift(status_id)
  status_ids.collect!(&:to_i)
  if options["force"]
    tweets = x_destroy_status(status_ids)
    tweets.each do |status|
      say "@#{@rcfile.active_profile[0]} deleted Tweet #{status['id_str']}."
    end
  else
    status_ids.each do |status_id_to_delete|
      status = x_status(status_id_to_delete, include_my_retweet: false)
      next unless yes? "Are you sure you want to permanently delete @#{status['user']['screen_name']}'s status: \"#{status['full_text']}\"? [y/N]"

      x_destroy_status(status_id_to_delete)
      say "@#{@rcfile.active_profile[0]} deleted the Tweet: \"#{status['full_text']}\""
    end
  end
end