36 lines
820 B
Ruby
36 lines
820 B
Ruby
# frozen_string_literal: true
|
|
require 'rest-client'
|
|
|
|
class JsonHelper
|
|
def self.deep_transform_keys(json_hash)
|
|
if json_hash.is_a? Array
|
|
json_hash.map { |jh| symbolize_names_snake_case(jh) }
|
|
else
|
|
symbolize_names_snake_case(json_hash)
|
|
end
|
|
end
|
|
|
|
def self.symbolize_names_snake_case(json_hash)
|
|
json_hash.deep_transform_keys { |k| k.to_s.underscore.to_sym }
|
|
end
|
|
|
|
def self.fix_null_byte(s)
|
|
s.gsub("`\u0000`", "null_byte")
|
|
end
|
|
|
|
def self.read_json_from_file(filename)
|
|
JSON.parse(File.read(filename), symbolize_names: true)
|
|
end
|
|
|
|
def self.read_json_from_url(url)
|
|
r = RestClient::Request.execute(
|
|
:method => :get,
|
|
:url => url
|
|
)
|
|
if r.code == 200
|
|
JSON.parse(r.body, symobilize_names: true)
|
|
else
|
|
puts "Http Code: #{r.code}"
|
|
end
|
|
end
|
|
end
|