Class: T::List
- Inherits:
-
Thor
- Object
- Thor
- T::List
- Includes:
- Collectable, Printable, Requestable, Utils
- Defined in:
- lib/t/list.rb
Constant Summary collapse
- DEFAULT_NUM_RESULTS =
20
Constants included from Utils
Constants included from RequestableAPI
RequestableAPI::BASE_URL, RequestableAPI::BASE_URL_UPLOAD, RequestableAPI::BASE_URL_V1, 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
Constants included from Printable
Printable::LISTS_SORT_MAP, Printable::LIST_HEADINGS, Printable::MONTH_IN_SECONDS, Printable::TWEET_HEADINGS, Printable::USERS_SORT_MAP, Printable::USER_HEADINGS
Constants included from Collectable
Collectable::MAX_NUM_RESULTS, Collectable::MAX_PAGE
Instance Method Summary collapse
- #add(list_name, user, *users) ⇒ Object
- #create(list_name, description = nil) ⇒ Object
- #information(user_list) ⇒ Object
-
#initialize ⇒ List
constructor
A new instance of List.
- #members(user_list) ⇒ Object
- #remove(list_name, user, *users) ⇒ Object
- #timeline(user_list) ⇒ Object
Methods included from RequestableAPI
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
Methods included from Collectable
#collect_with_count, #collect_with_max_id, #collect_with_page
Constructor Details
Instance Method Details
#add(list_name, user, *users) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/t/list.rb', line 26 def add(list_name, user, *users) added_users, number = fetch_users(users.unshift(user), ) do |users_to_add| x_add_list_members(list_name, users_to_add) users_to_add end say "@#{@rcfile.active_profile[0]} added #{pluralize(number, 'member')} to the list \"#{list_name}\"." say if ["id"] say "Run `#{File.basename($PROGRAM_NAME)} list remove --id #{list_name} #{added_users.join(' ')}` to undo." else say "Run `#{File.basename($PROGRAM_NAME)} list remove #{list_name} #{added_users.collect { |added_user| "@#{added_user}" }.join(' ')}` to undo." end end |
#create(list_name, description = nil) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/t/list.rb', line 42 def create(list_name, description = nil) opts = description ? {description:} : {} opts[:mode] = "private" if ["private"] x_create_list(list_name, opts) say "@#{@rcfile.active_profile[0]} created the list \"#{list_name}\"." end |
#information(user_list) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/t/list.rb', line 51 def information(user_list) owner, list_name = extract_owner(user_list, ) list = x_list(owner, list_name) if ["csv"] require "csv" say ["ID", "Description", "Slug", "Screen name", "Created at", "Members", "Subscribers", "Following", "Mode", "URL"].to_csv say [list["id"], list["description"], list["slug"], list["user"]["screen_name"], csv_formatted_time(list), list["member_count"], list["subscriber_count"], !!list["following"], list["mode"], list["uri"]].to_csv else array = [] array << ["ID", list["id"].to_s] array << ["Description", list["description"]] unless list["description"].nil? array << ["Slug", list["slug"]] array << ["Screen name", "@#{list['user']['screen_name']}"] array << ["Created at", "#{ls_formatted_time(list, 'created_at', allow_relative: false)} (#{time_ago_in_words(parse_time(list['created_at']))} ago)"] array << ["Members", number_with_delimiter(list["member_count"])] array << ["Subscribers", number_with_delimiter(list["subscriber_count"])] array << ["Status", list["following"] ? "Following" : "Not following"] array << ["Mode", list["mode"]] array << ["URL", list["uri"]] print_table(array) end end |
#members(user_list) ⇒ Object
82 83 84 85 86 |
# File 'lib/t/list.rb', line 82 def members(user_list) owner, list_name = extract_owner(user_list, ) users = x_list_members(owner, list_name).to_a print_users(users) end |
#remove(list_name, user, *users) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/t/list.rb', line 90 def remove(list_name, user, *users) removed_users, number = fetch_users(users.unshift(user), ) do |users_to_remove| x_remove_list_members(list_name, users_to_remove) users_to_remove end say "@#{@rcfile.active_profile[0]} removed #{pluralize(number, 'member')} from the list \"#{list_name}\"." say if ["id"] say "Run `#{File.basename($PROGRAM_NAME)} list add --id #{list_name} #{removed_users.join(' ')}` to undo." else say "Run `#{File.basename($PROGRAM_NAME)} list add #{list_name} #{removed_users.collect { |removed_user| "@#{removed_user}" }.join(' ')}` to undo." end end |
#timeline(user_list) ⇒ Object
112 113 114 115 116 117 118 119 120 121 |
# File 'lib/t/list.rb', line 112 def timeline(user_list) owner, list_name = extract_owner(user_list, ) count = ["number"] || DEFAULT_NUM_RESULTS opts = {} opts[:include_entities] = !!["decode_uris"] tweets = collect_with_count(count) do |count_opts| x_list_timeline(owner, list_name, count_opts.merge(opts)) end print_tweets(tweets) end |