module Fog::JSON

The {JSON} module includes functionality that is common between APIs using JSON to send and receive data.

The intent is to provide common code for provider APIs using JSON but not require it for those using XML.

Public Class Methods

decode(obj) click to toggle source
# File lib/fog/json.rb, line 37
def self.decode(obj)
  obj = obj.read if obj.respond_to?(:read)
  return if obj.nil? || obj.empty?
  ::JSON.parse(obj)
rescue => err
  raise DecodeError.slurp(err)
end
encode(obj) click to toggle source
# File lib/fog/json.rb, line 31
def self.encode(obj)
  ::JSON.dump(obj)
rescue => err
  raise EncodeError.slurp(err)
end
sanitize(data) click to toggle source

This cleans up Time objects to be ISO8601 format

# File lib/fog/json.rb, line 18
def self.sanitize(data)
  case data
  when Array
    data.map { |datum| sanitize(datum) }
  when Hash
    data.each { |key, value| data[key] = sanitize(value) }
  when ::Time
    data.strftime("%Y-%m-%dT%H:%M:%S%:z")
  else
    data
  end
end