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|