# 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