lib/vkontakte_api/error.rb in vkontakte_api-0.2.1 vs lib/vkontakte_api/error.rb in vkontakte_api-1.0.rc

- old
+ new

@@ -1,30 +1,38 @@ module VkontakteApi - # An exception raised by `VkontakteApi::API` when VKontakte returns an error. + # An exception raised by `VkontakteApi::Result` when given a response with an error. class Error < StandardError # An error code. # @return [Fixnum] attr_reader :error_code - # An exception is initialized by the data from response hash. + # An exception is initialized by the data from response mash. # @param [Hash] data Error data. def initialize(data) - @error_code = data.delete(:error_code) - @error_msg = data.delete(:error_msg) - @params = {} + @error_code = data.error_code + @error_msg = data.error_msg - request_params = parse_params(data.delete :request_params) + request_params = parse_params(data.request_params) @method_name = request_params.delete('method') @access_token = request_params.delete('access_token') @oauth = request_params.delete('oauth') @params = request_params end # A full description of the error. # @return [String] def message - "VKontakte returned an error #{@error_code}: '#{@error_msg}' after calling method '#{@method_name}' with parameters #{@params.inspect}." + message = "VKontakte returned an error #{@error_code}: '#{@error_msg}'" + message << " after calling method '#{@method_name}'" + + if @params.empty? + message << " without parameters." + else + message << " with parameters #{@params.inspect}." + end + + message end private def parse_params(params) params.inject({}) do |memo, pair|