diff --git a/lib/beyond_api/ext.rb b/lib/beyond_api/ext.rb index 38b06ce..01ee85d 100644 --- a/lib/beyond_api/ext.rb +++ b/lib/beyond_api/ext.rb @@ -16,6 +16,27 @@ def camelize_keys def underscorize_keys deep_transform_keys { |key| key.to_s.underscore } end + + def rubify + result = {} + new_hash = self.delete_if {|key, value| key == '_links' } + new_hash.each do |key, value| + new_key = key.sanitize_key + if key == '_embedded' + result.merge!(value.rubify) + elsif value.is_a?(Hash) + result[new_key] = value.rubify + elsif value.is_a?(Array) + result[new_key] = [] + value.each do |val| + result[new_key] << val.rubify + end + else + result[new_key] = value + end + end + result + end end class String diff --git a/lib/beyond_api/utils.rb b/lib/beyond_api/utils.rb index 83f6dcb..a48ae2e 100644 --- a/lib/beyond_api/utils.rb +++ b/lib/beyond_api/utils.rb @@ -4,6 +4,7 @@ module BeyondAPI module Utils def handle_response(response, status, respond_with_true: false) + response = response.rubify if status.between?(200, 299) return true if respond_with_true if BeyondAPI.configuration.object_struct_responses @@ -25,6 +26,5 @@ def to_object_struct(data) return data end end - end end