Skip to content

Commit

Permalink
Move deprecate_alias into Twitter::Utils
Browse files Browse the repository at this point in the history
  • Loading branch information
sferik committed Jan 11, 2014
1 parent 71eba01 commit 062c20b
Show file tree
Hide file tree
Showing 9 changed files with 38 additions and 30 deletions.
3 changes: 2 additions & 1 deletion lib/twitter/rest/api/direct_messages.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ module REST
module API
module DirectMessages
include Twitter::REST::API::Utils
include Twitter::Utils

# Returns the 20 most recent direct messages sent to the authenticating user
#
Expand Down Expand Up @@ -89,7 +90,7 @@ def direct_messages(*args)
if arguments.empty?
direct_messages_received(arguments.options)
else
Twitter::Utils.parallel_map(arguments) do |id|
parallel_map(arguments) do |id|
direct_message(id, arguments.options)
end
end
Expand Down
5 changes: 3 additions & 2 deletions lib/twitter/rest/api/favorites.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module REST
module API
module Favorites
include Twitter::REST::API::Utils
include Twitter::Utils

# @see https://dev.twitter.com/docs/api/1.1/get/favorites/list
# @rate_limited Yes
Expand Down Expand Up @@ -68,7 +69,7 @@ def unfavorite(*args)
# @param options [Hash] A customizable set of options.
def favorite(*args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |tweet|
parallel_map(arguments) do |tweet|
id = extract_id(tweet)
begin
object_from_response(Twitter::Tweet, :post, '/1.1/favorites/create.json', arguments.options.merge(:id => id))
Expand Down Expand Up @@ -96,7 +97,7 @@ def favorite(*args)
# @param options [Hash] A customizable set of options.
def favorite!(*args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |tweet|
parallel_map(arguments) do |tweet|
id = extract_id(tweet)
begin
object_from_response(Twitter::Tweet, :post, '/1.1/favorites/create.json', arguments.options.merge(:id => id))
Expand Down
3 changes: 2 additions & 1 deletion lib/twitter/rest/api/friends_and_followers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module REST
module API
module FriendsAndFollowers
include Twitter::REST::API::Utils
include Twitter::Utils

# @see https://dev.twitter.com/docs/api/1.1/get/friends/ids
# @rate_limited Yes
Expand Down Expand Up @@ -137,7 +138,7 @@ def follow(*args)
# @option options [Boolean] :follow (false) Enable notifications for the target user.
def follow!(*args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |user|
parallel_map(arguments) do |user|
object_from_response(Twitter::User, :post, '/1.1/friendships/create.json', merge_user(arguments.options, user))
end.compact
end
Expand Down
3 changes: 2 additions & 1 deletion lib/twitter/rest/api/lists.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ module REST
module API
module Lists
include Twitter::REST::API::Utils
include Twitter::Utils
MAX_USERS_PER_REQUEST = 100
URI_SUBSTRING = '://'

Expand Down Expand Up @@ -446,7 +447,7 @@ def list_from_response_with_users(request_method, path, args)
members = arguments.pop
merge_list!(options, arguments.pop)
merge_owner!(options, arguments.pop)
Twitter::Utils.parallel_map(members.flatten.each_slice(MAX_USERS_PER_REQUEST)) do |users|
parallel_map(members.flatten.each_slice(MAX_USERS_PER_REQUEST)) do |users|
object_from_response(Twitter::List, request_method, path, merge_users(options, users))
end.last
end
Expand Down
5 changes: 3 additions & 2 deletions lib/twitter/rest/api/saved_searches.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ module REST
module API
module SavedSearches
include Twitter::REST::API::Utils
include Twitter::Utils

# @rate_limited Yes
# @authentication Requires user context
Expand All @@ -34,7 +35,7 @@ def saved_searches(*args)
if arguments.empty?
objects_from_response(Twitter::SavedSearch, :get, '/1.1/saved_searches/list.json', arguments.options)
else
Twitter::Utils.parallel_map(arguments) do |id|
parallel_map(arguments) do |id|
saved_search(id, arguments.options)
end
end
Expand Down Expand Up @@ -82,7 +83,7 @@ def create_saved_search(query, options = {})
# @param options [Hash] A customizable set of options.
def destroy_saved_search(*args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |id|
parallel_map(arguments) do |id|
object_from_response(Twitter::SavedSearch, :post, "/1.1/saved_searches/destroy/#{id}.json", arguments.options)
end
end
Expand Down
9 changes: 5 additions & 4 deletions lib/twitter/rest/api/tweets.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ module REST
module API
module Tweets
include Twitter::REST::API::Utils
include Twitter::Utils

# Returns up to 100 of the first retweets of a given tweet
#
Expand Down Expand Up @@ -143,7 +144,7 @@ def update(status, options = {})
# @option options [Boolean, String, Integer] :trim_user Each tweet returned in a timeline will include a user object with only the author's numerical ID when set to true, 't' or 1.
def retweet(*args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |tweet|
parallel_map(arguments) do |tweet|
id = extract_id(tweet)
begin
post_retweet(id, arguments.options)
Expand All @@ -169,7 +170,7 @@ def retweet(*args)
# @option options [Boolean, String, Integer] :trim_user Each tweet returned in a timeline will include a user object with only the author's numerical ID when set to true, 't' or 1.
def retweet!(*args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |tweet|
parallel_map(arguments) do |tweet|
id = extract_id(tweet)
begin
post_retweet(id, arguments.options)
Expand Down Expand Up @@ -250,7 +251,7 @@ def oembed(tweet, options = {})
# @option options [String] :lang Language code for the rendered embed. This will affect the text and localization of the rendered HTML.
def oembeds(*args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |tweet|
parallel_map(arguments) do |tweet|
id = extract_id(tweet)
oembed(id, arguments.options)
end
Expand Down Expand Up @@ -282,7 +283,7 @@ def retweeters_ids(*args)
# @return [Array<Twitter::Tweet>]
def parallel_tweets_from_response(request_method, path, args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |tweet|
parallel_map(arguments) do |tweet|
id = extract_id(tweet)
object_from_response(Twitter::Tweet, request_method, path + "/#{id}.json", arguments.options)
end
Expand Down
3 changes: 2 additions & 1 deletion lib/twitter/rest/api/users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module REST
module API
module Users
include Twitter::REST::API::Utils
include Twitter::Utils
MAX_USERS_PER_REQUEST = 100

# Updates the authenticating user's settings.
Expand Down Expand Up @@ -227,7 +228,7 @@ def unblock(*args)
def users(*args)
arguments = Twitter::Arguments.new(args)
method = arguments.options.delete(:method) || :post
Twitter::Utils.parallel_map(arguments.each_slice(MAX_USERS_PER_REQUEST)) do |users|
parallel_map(arguments.each_slice(MAX_USERS_PER_REQUEST)) do |users|
objects_from_response(Twitter::User, method, '/1.1/users/lookup.json', merge_users(arguments.options, users))
end.flatten
end
Expand Down
20 changes: 3 additions & 17 deletions lib/twitter/rest/api/utils.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,10 @@ module Twitter
module REST
module API
module Utils
include Twitter::Utils
DEFAULT_CURSOR = -1
URI_SUBSTRING = '://'

class << self
def included(base)
base.extend(ClassMethods)
end
end

module ClassMethods
def deprecate_alias(new_name, old_name)
define_method(new_name) do |*args, &block|
warn "#{Kernel.caller.first}: [DEPRECATION] ##{new_name} is deprecated. Use ##{old_name} instead."
send(old_name, *args, &block)
end
end
end

private

# Take a URI string or Twitter::Identity object and return its ID
Expand All @@ -51,7 +37,7 @@ def extract_id(object)
# @return [Array<Twitter::User>]
def parallel_user_objects_from_response(request_method, path, args)
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |user|
parallel_map(arguments) do |user|
object_from_response(Twitter::User, request_method, path, merge_user(arguments.options, user))
end
end
Expand Down Expand Up @@ -103,7 +89,7 @@ def objects_from_array(klass, array)
# @return [Array]
def parallel_objects_from_response(klass, request_method, path, args) # rubocop:disable ParameterLists
arguments = Twitter::Arguments.new(args)
Twitter::Utils.parallel_map(arguments) do |object|
parallel_map(arguments) do |object|
id = extract_id(object)
object_from_response(klass, request_method, path, arguments.options.merge(:id => id))
end
Expand Down
17 changes: 16 additions & 1 deletion lib/twitter/utils.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
module Twitter
module Utils
module_function
class << self
def included(base)
base.extend(ClassMethods)
end
end

module ClassMethods
def deprecate_alias(new_name, old_name)
define_method(new_name) do |*args, &block|
warn "#{Kernel.caller.first}: [DEPRECATION] ##{new_name} is deprecated. Use ##{old_name} instead."
send(old_name, *args, &block)
end
end
end

def parallel_map(enumerable)
# Don't bother spawning a new thread if there's only one item
if enumerable.count == 1
Expand All @@ -9,5 +23,6 @@ def parallel_map(enumerable)
enumerable.map { |object| Thread.new { yield object } }.map(&:value)
end
end
module_function :parallel_map
end
end

0 comments on commit 062c20b

Please sign in to comment.