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