# 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, :encoding => 'utf-8'), 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