lib/twitter/api/lists.rb in twitter-4.4.2 vs lib/twitter/api/lists.rb in twitter-4.4.3
- old
+ new
@@ -1,6 +1,8 @@
+require 'twitter/api/arguments'
require 'twitter/api/utils'
+require 'twitter/core_ext/enumerable'
require 'twitter/cursor'
require 'twitter/error/forbidden'
require 'twitter/error/not_found'
require 'twitter/list'
require 'twitter/tweet'
@@ -28,11 +30,11 @@
# @param options [Hash] A customizable set of options.
# @example Returns all lists that @sferik subscribes to
# Twitter.lists('sferik')
# Twitter.lists(7505382)
def lists(*args)
- objects_from_response(Twitter::List, :get, "/1.1/lists/list.json", args)
+ objects_from_response_with_user(Twitter::List, :get, "/1.1/lists/list.json", args)
end
alias lists_subscribed_to lists
# Show tweet timeline for members of the specified list
#
@@ -61,14 +63,14 @@
# Twitter.list_timeline('sferik', 'presidents')
# Twitter.list_timeline('sferik', 8863586)
# Twitter.list_timeline(7505382, 'presidents')
# Twitter.list_timeline(7505382, 8863586)
def list_timeline(*args)
- options = extract_options!(args)
- merge_list!(options, args.pop)
- merge_owner!(options, args.pop || screen_name) unless options[:owner_id] || options[:owner_screen_name]
- collection_from_response(Twitter::Tweet, :get, "/1.1/lists/statuses.json", options)
+ arguments = Twitter::API::Arguments.new(args)
+ merge_list!(arguments.options, arguments.pop)
+ merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
+ objects_from_response(Twitter::Tweet, :get, "/1.1/lists/statuses.json", arguments.options)
end
# Removes the specified member from the list
#
# @see https://dev.twitter.com/docs/api/1.1/post/lists/members/destroy
@@ -93,11 +95,11 @@
# Twitter.list_remove_member('sferik', 'presidents', 813286)
# Twitter.list_remove_member('sferik', 'presidents', 'BarackObama')
# Twitter.list_remove_member('sferik', 8863586, 'BarackObama')
# Twitter.list_remove_member(7505382, 'presidents', 813286)
def list_remove_member(*args)
- list_modify_member(:post, "/1.1/lists/members/destroy.json", args)
+ list_from_response_with_user(:post, "/1.1/lists/members/destroy.json", args)
end
# List the lists the specified user has been added to
#
# @see https://dev.twitter.com/docs/api/1.1/get/lists/memberships
@@ -118,11 +120,11 @@
# @option options [Boolean, String, Integer] :filter_to_owned_lists When set to true, t or 1, will return just lists the authenticating user owns, and the user represented by user_id or screen_name is a member of.
# @example List the lists that @sferik has been added to
# Twitter.memberships('sferik')
# Twitter.memberships(7505382)
def memberships(*args)
- lists_from_response(:get, "/1.1/lists/memberships.json", args, :memberships)
+ cursor_from_response_with_user(:lists, Twitter::List, :get, "/1.1/lists/memberships.json", args, :memberships)
end
# Returns the subscribers of the specified list
#
# @see https://dev.twitter.com/docs/api/1.1/get/lists/subscribers
@@ -145,11 +147,11 @@
# @example Return the subscribers of @sferik's "presidents" list
# Twitter.list_subscribers('sferik', 'presidents')
# Twitter.list_subscribers('sferik', 8863586)
# Twitter.list_subscribers(7505382, 'presidents')
def list_subscribers(*args)
- list_users(:get, "/1.1/lists/subscribers.json", args, :list_subscribers)
+ cursor_from_response_with_list(:get, "/1.1/lists/subscribers.json", args, :list_subscribers)
end
# Make the authenticated user follow the specified list
#
# @see https://dev.twitter.com/docs/api/1.1/post/lists/subscribers/create
@@ -258,11 +260,11 @@
# Twitter.list_add_members(7505382, 'presidents', ['BarackObama', 'pengwynn'])
# Twitter.list_add_members(7505382, 'presidents', [813286, 18755393])
# Twitter.list_add_members(7505382, 8863586, ['BarackObama', 'pengwynn'])
# Twitter.list_add_members(7505382, 8863586, [813286, 18755393])
def list_add_members(*args)
- list_modify_members(:post, "/1.1/lists/members/create_all.json", args)
+ list_from_response_with_users(:post, "/1.1/lists/members/create_all.json", args)
end
# Check if a user is a member of the specified list
#
# @see https://dev.twitter.com/docs/api/1.1/get/lists/members/show
@@ -313,11 +315,11 @@
# Twitter.list_members('sferik', 'presidents')
# Twitter.list_members('sferik', 8863586)
# Twitter.list_members(7505382, 'presidents')
# Twitter.list_members(7505382, 8863586)
def list_members(*args)
- list_users(:get, "/1.1/lists/members.json", args, :list_members)
+ cursor_from_response_with_list(:get, "/1.1/lists/members.json", args, :list_members)
end
# Add a member to a list
#
# @see https://dev.twitter.com/docs/api/1.1/post/lists/members/create
@@ -342,11 +344,11 @@
# Twitter.list_add_member('sferik', 'presidents', 813286)
# Twitter.list_add_member('sferik', 8863586, 813286)
# Twitter.list_add_member(7505382, 'presidents', 813286)
# Twitter.list_add_member(7505382, 8863586, 813286)
def list_add_member(*args)
- list_modify_member(:post, "/1.1/lists/members/create.json", args)
+ list_from_response_with_user(:post, "/1.1/lists/members/create.json", args)
end
# Deletes the specified list
#
# @see https://dev.twitter.com/docs/api/1.1/post/lists/destroy
@@ -467,11 +469,11 @@
# @option options [Integer] :cursor (-1) Breaks the results into pages. Provide values as returned in the response objects's next_cursor and previous_cursor attributes to page back and forth in the list.
# @example List the lists that @sferik follows
# Twitter.subscriptions('sferik')
# Twitter.subscriptions(7505382)
def subscriptions(*args)
- lists_from_response(:get, "/1.1/lists/subscriptions.json", args, :subscriptions)
+ cursor_from_response_with_user(:lists, Twitter::List, :get, "/1.1/lists/subscriptions.json", args, :subscriptions)
end
# Removes specified members from the list
#
# @see https://dev.twitter.com/docs/api/1.1/post/lists/members/destroy_all
@@ -499,70 +501,58 @@
# Twitter.list_remove_members(7505382, 'presidents', ['BarackObama', 'pengwynn'])
# Twitter.list_remove_members(7505382, 'presidents', [813286, 18755393])
# Twitter.list_remove_members(7505382, 8863586, ['BarackObama', 'pengwynn'])
# Twitter.list_remove_members(7505382, 8863586, [813286, 18755393])
def list_remove_members(*args)
- list_modify_members(:post, "/1.1/lists/members/destroy_all.json", args)
+ list_from_response_with_users(:post, "/1.1/lists/members/destroy_all.json", args)
end
private
# @param request_method [Symbol]
# @param path [String]
# @param args [Array]
# @return [Array<Twitter::User>]
def list_from_response(request_method, path, args)
- options = extract_options!(args)
- merge_list!(options, args.pop)
- merge_owner!(options, args.pop || screen_name) unless options[:owner_id] || options[:owner_screen_name]
- object_from_response(Twitter::List, request_method, path, options)
+ arguments = Twitter::API::Arguments.new(args)
+ merge_list!(arguments.options, arguments.pop)
+ merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
+ object_from_response(Twitter::List, request_method, path, arguments.options)
end
- # @param request_method [Symbol]
- # @param path [String]
- # @param args [Array]
- # @return [Array<Twitter::List>]
- def lists_from_response(request_method, path, args, calling_method)
- options = extract_options!(args)
- merge_default_cursor!(options)
- merge_user!(options, args.pop || screen_name) unless options[:user_id] || options[:screen_name]
- cursor_from_response(:lists, Twitter::List, request_method, path, options, calling_method)
+ def cursor_from_response_with_list(request_method, path, args, calling_method)
+ arguments = Twitter::API::Arguments.new(args)
+ merge_list!(arguments.options, arguments.pop)
+ merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
+ cursor_from_response(:users, Twitter::User, request_method, path, arguments.options, calling_method)
end
- def list_users(request_method, path, args, calling_method)
- options = extract_options!(args)
- merge_default_cursor!(options)
- merge_list!(options, args.pop)
- merge_owner!(options, args.pop || screen_name) unless options[:owner_id] || options[:owner_screen_name]
- cursor_from_response(:users, Twitter::User, request_method, path, options, calling_method)
- end
-
def list_user?(request_method, path, args)
- options = extract_options!(args)
- merge_user!(options, args.pop)
- merge_list!(options, args.pop)
- merge_owner!(options, args.pop || screen_name) unless options[:owner_id] || options[:owner_screen_name]
- send(request_method.to_sym, path, options)
+ arguments = Twitter::API::Arguments.new(args)
+ merge_user!(arguments.options, arguments.pop)
+ merge_list!(arguments.options, arguments.pop)
+ merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
+ send(request_method.to_sym, path, arguments.options)
true
rescue Twitter::Error::NotFound, Twitter::Error::Forbidden
false
end
- def list_modify_member(request_method, path, args)
- options = extract_options!(args)
- merge_user!(options, args.pop)
- merge_list!(options, args.pop)
- merge_owner!(options, args.pop || screen_name) unless options[:owner_id] || options[:owner_screen_name]
- object_from_response(Twitter::List, request_method, path, options)
+ def list_from_response_with_user(request_method, path, args)
+ arguments = Twitter::API::Arguments.new(args)
+ merge_user!(arguments.options, arguments.pop)
+ merge_list!(arguments.options, arguments.pop)
+ merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
+ object_from_response(Twitter::List, request_method, path, arguments.options)
end
- def list_modify_members(request_method, path, args)
- options = extract_options!(args)
- members = args.pop
- merge_list!(options, args.pop)
- merge_owner!(options, args.pop || screen_name) unless options[:owner_id] || options[:owner_screen_name]
+ def list_from_response_with_users(request_method, path, args)
+ arguments = Twitter::API::Arguments.new(args)
+ members = arguments.pop
+ merge_list!(arguments.options, arguments.pop)
+ merge_owner!(arguments.options, arguments.pop || screen_name) unless arguments.options[:owner_id] || arguments.options[:owner_screen_name]
members.flatten.each_slice(MAX_USERS_PER_REQUEST).threaded_map do |users|
- object_from_response(Twitter::List, request_method, path, merge_users(options, users))
+ object_from_response(Twitter::List, request_method, path, merge_users(arguments.options, users))
end.last
end
# Take a list and merge it into the hash with the correct key
#