lib/twitter/rest/api/utils.rb in twitter-5.5.1 vs lib/twitter/rest/api/utils.rb in twitter-5.6.0

- old
+ new

@@ -1,33 +1,19 @@ require 'addressable/uri' require 'twitter/arguments' -require 'twitter/cursor' +require 'twitter/request' require 'twitter/user' require 'twitter/utils' module Twitter module REST module API module Utils - DEFAULT_CURSOR = -1 + include Twitter::Utils URI_SUBSTRING = '://' + DEFAULT_CURSOR = -1 - 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 # # @param object [Integer, String, URI, Twitter::Identity] An ID, URI, or object. @@ -45,119 +31,105 @@ end end # @param request_method [Symbol] # @param path [String] + # @param options [Hash] + # @param klass [Class] + def perform_with_object(request_method, path, options, klass) + request = Twitter::Request.new(self, request_method, path, options) + request.perform_with_object(klass) + end + + # @param request_method [Symbol] + # @param path [String] + # @param options [Hash] + # @param klass [Class] + def perform_with_objects(request_method, path, options, klass) + request = Twitter::Request.new(self, request_method, path, options) + request.perform_with_objects(klass) + end + + # @param request_method [Symbol] + # @param path [String] + # @param options [Hash] + # @param klass [Class] + def perform_with_cursor(request_method, path, options, collection_name, klass = nil) # rubocop:disable ParameterLists + merge_default_cursor!(options) + request = Twitter::Request.new(self, request_method, path, options) + request.perform_with_cursor(collection_name.to_sym, klass) + end + + # @param request_method [Symbol] + # @param path [String] # @param args [Array] # @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| - object_from_response(Twitter::User, request_method, path, merge_user(arguments.options, user)) + parallel_map(arguments) do |user| + perform_with_object(request_method, path, merge_user(arguments.options, user), Twitter::User) end end # @param request_method [Symbol] # @param path [String] # @param args [Array] # @return [Array<Twitter::User>] def user_objects_from_response(request_method, path, args) arguments = Twitter::Arguments.new(args) merge_user!(arguments.options, arguments.pop || screen_name) unless arguments.options[:user_id] || arguments.options[:screen_name] - objects_from_response(Twitter::User, request_method, path, arguments.options) + perform_with_objects(request_method, path, arguments.options, Twitter::User) end # @param klass [Class] # @param request_method [Symbol] # @param path [String] # @param args [Array] # @return [Array] - def objects_from_response_with_user(klass, request_method, path, args) # rubocop:disable ParameterLists + def objects_from_response_with_user(klass, request_method, path, args) arguments = Twitter::Arguments.new(args) merge_user!(arguments.options, arguments.pop) - objects_from_response(klass, request_method, path, arguments.options) + perform_with_objects(request_method, path, arguments.options, klass) end # @param klass [Class] # @param request_method [Symbol] # @param path [String] - # @param options [Hash] - # @return [Array] - def objects_from_response(klass, request_method, path, options = {}) # rubocop:disable ParameterLists - response = send(request_method.to_sym, path, options)[:body] - objects_from_array(klass, response) - end - - # @param klass [Class] - # @param array [Array] - # @return [Array] - def objects_from_array(klass, array) - array.map do |element| - klass.new(element) - end - end - - # @param klass [Class] - # @param request_method [Symbol] - # @param path [String] # @param args [Array] # @return [Array] - def parallel_objects_from_response(klass, request_method, path, args) # rubocop:disable ParameterLists + def parallel_objects_from_response(klass, request_method, path, args) arguments = Twitter::Arguments.new(args) - Twitter::Utils.parallel_map(arguments) do |object| - id = extract_id(object) - object_from_response(klass, request_method, path, arguments.options.merge(:id => id)) + parallel_map(arguments) do |object| + perform_with_object(request_method, path, arguments.options.merge(:id => extract_id(object)), klass) end end - # @param klass [Class] - # @param request_method [Symbol] - # @param path [String] - # @param options [Hash] - # @return [Object] - def object_from_response(klass, request_method, path, options = {}) # rubocop:disable ParameterLists - response = send(request_method.to_sym, path, options) - klass.from_response(response) - end - # @param collection_name [Symbol] # @param klass [Class] # @param request_method [Symbol] # @param path [String] # @param args [Array] # @return [Twitter::Cursor] def cursor_from_response_with_user(collection_name, klass, request_method, path, args) # rubocop:disable ParameterLists arguments = Twitter::Arguments.new(args) merge_user!(arguments.options, arguments.pop || screen_name) unless arguments.options[:user_id] || arguments.options[:screen_name] - cursor_from_response(collection_name, klass, request_method, path, arguments.options) + perform_with_cursor(request_method, path, arguments.options, collection_name, klass) end - # @param collection_name [Symbol] - # @param klass [Class] - # @param request_method [Symbol] - # @param path [String] - # @param options [Hash] - # @return [Twitter::Cursor] - def cursor_from_response(collection_name, klass, request_method, path, options) # rubocop:disable ParameterLists - merge_default_cursor!(options) - response = send(request_method.to_sym, path, options) - Twitter::Cursor.from_response(response, collection_name.to_sym, klass, self, request_method, path, options) - end - def handle_forbidden_error(klass, error) error = klass.new(error) if error.message == klass::MESSAGE fail(error) end - def merge_default_cursor!(options) - options[:cursor] = DEFAULT_CURSOR unless options[:cursor] - end - def screen_name @screen_name ||= verify_credentials.screen_name end + def merge_default_cursor!(options) + options[:cursor] = DEFAULT_CURSOR unless options[:cursor] + end + # Take a user and merge it into the hash with the correct key # # @param hash [Hash] # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, URI, or object. # @return [Hash] @@ -185,10 +157,10 @@ when Twitter::User set_compound_key('user_id', user.id, hash, prefix) end end - def set_compound_key(key, value, hash, prefix = nil) # rubocop:disable ParameterLists + def set_compound_key(key, value, hash, prefix = nil) compound_key = [prefix, key].compact.join('_').to_sym hash[compound_key] = value hash end