module OverwatchLeague::BuildResponse

Public Class Methods

call(response) click to toggle source
# File lib/overwatch_league/build_response.rb, line 4
def call(response)
  snake_case_json_string = convert_hash_keys(JSON.parse(response.body.to_s)).to_json
  JSON.parse(snake_case_json_string, object_class: OpenStruct)
end

Private Class Methods

convert_hash_keys(value) click to toggle source
# File lib/overwatch_league/build_response.rb, line 11
def convert_hash_keys(value)
  case value
    when Array
      value.map { |v| convert_hash_keys(v) }
    when Hash
      Hash[value.map { |k, v| [underscore_key(k), convert_hash_keys(v)] }]
    else
      value
   end
end
to_snake_case(string) click to toggle source
# File lib/overwatch_league/build_response.rb, line 26
def to_snake_case(string)
  string.gsub(/::/, '/').
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr("-", "_").
  downcase
end
underscore_key(k) click to toggle source
# File lib/overwatch_league/build_response.rb, line 22
def underscore_key(k)
  to_snake_case(k.to_s)
end