Class: Freddy::Payload::JsonAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/freddy/payload.rb

Class Method Summary collapse

Class Method Details

.dump(payload) ⇒ Object



44
45
46
# File 'lib/freddy/payload.rb', line 44

def self.dump(payload)
  JSON.dump(serialize_time_objects(payload))
end

.parse(payload) ⇒ Object



38
39
40
41
42
# File 'lib/freddy/payload.rb', line 38

def self.parse(payload)
  # MRI has :symbolize_keys, but JRuby does not. Not adding it at the
  # moment.
  Symbolizer.symbolize(JSON.parse(payload))
end

.serialize_time_objects(object) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/freddy/payload.rb', line 48

def self.serialize_time_objects(object)
  if object.is_a?(Hash)
    object.reduce({}) do |hash, (key, value)|
      hash.merge(key => serialize_time_objects(value))
    end
  elsif object.is_a?(Array)
    object.map(&method(:serialize_time_objects))
  elsif object.is_a?(Time) || object.is_a?(Date)
    object.iso8601
  else
    object
  end
end