From: Tom Hughes Date: Wed, 21 Jun 2017 20:20:41 +0000 (+0100) Subject: Refactor AMF encodevalue routine X-Git-Tag: live~3360 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/ab3df6fc56a2a16c6af65ac429505d682153a60d?ds=sidebyside Refactor AMF encodevalue routine Simplify the switch, and raise an exception if we see an unexpected type rather than just logging and then accidentally triggering a odd error by returning true when a string is expected. --- diff --git a/lib/potlatch.rb b/lib/potlatch.rb index 717622762..898a5a07f 100644 --- a/lib/potlatch.rb +++ b/lib/potlatch.rb @@ -70,31 +70,31 @@ module Potlatch # Pack variables as AMF def self.encodevalue(n) - case n.class.to_s - when "Array" + case n + when Array a = 10.chr + encodelong(n.length) n.each do |b| a += encodevalue(b) end a - when "Hash" + when Hash a = 3.chr n.each do |k, v| a += encodestring(k.to_s) + encodevalue(v) end a + 0.chr + 0.chr + 9.chr - when "String" + when String 2.chr + encodestring(n) - when "Bignum", "Fixnum", "Float" + when Numeric 0.chr + encodedouble(n) - when "NilClass" + when NilClass 5.chr - when "TrueClass" + when TrueClass 0.chr + encodedouble(1) - when "FalseClass" + when FalseClass 0.chr + encodedouble(0) else - Rails.logger.error("Unexpected Ruby type for AMF conversion: " + n.class.to_s) + raise "Unexpected Ruby type for AMF conversion: #{n.class.name}" end end