lib/recurly/resource.rb in recurly-2.7.3 vs lib/recurly/resource.rb in recurly-2.7.4
- old
+ new
@@ -138,25 +138,34 @@
# begin
# Recurly::Account.create! :first_name => "Flynn"
# rescue Recurly::Resource::Invalid => e
# e.record.errors # => errors: {"account_code"=>["can't be blank"]}>
# end
- class Invalid < API::UnprocessableEntity
+ class Invalid < Error
# @return [Resource, nil] The invalid record.
attr_reader :record
- def initialize(record_or_message)
- set_message case record_or_message
- when Resource
- @record = record_or_message
- record_or_message.errors.map { |k, v| "#{k} #{v * ', '}" }.join '; '
+ def initialize(message)
+ if message.is_a? Resource
+ @record = message
+ set_message(record_to_message)
else
- record_or_message
+ set_message(message)
end
end
+
+ private
+
+ def record_to_message
+ @record.errors.map do |k, v|
+ message = v.join(', ')
+ k == 'base' ? message : "#{k} #{message}"
+ end.join('; ')
+ end
end
+
class << self
# @return [String] The demodulized name of the resource class.
# @example
# Recurly::Account.name # => "Account"
def resource_name
@@ -405,15 +414,15 @@
:method => el.attribute('method').to_s,
:href => el.attribute('href').value
}
next
end
-
+
# Nokogiri on Jruby-1.7.19 likes to throw NullPointer exceptions
# if you try to run certian operations like el.attribute(''). Since
# we dont care about text nodes, let's just skip them
- next if defined?(Nokogiri::XML::Node::TEXT_NODE) && el.node_type == Nokogiri::XML::Node::TEXT_NODE
-
+ next if defined?(Nokogiri::XML::Node::TEXT_NODE) && el.node_type == Nokogiri::XML::Node::TEXT_NODE
+
if el.children.empty? && href = el.attribute('href')
klass_name = Helper.classify(klass.association_class_name(el.name) ||
el.attribute('type') ||
el.name)