diff --git a/Gemfile.lock b/Gemfile.lock index 605f5b1..c20b6c2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -27,7 +27,7 @@ GEM deep_merge (1.2.1) diff-lcs (1.3) docile (1.1.5) - ffi (1.9.25) + ffi (1.16.3) formatador (0.2.5) guard (2.15.0) formatador (>= 0.2.4) @@ -48,13 +48,12 @@ GEM i18n (1.8.10) concurrent-ruby (~> 1.0) json (2.3.1) - listen (3.1.5) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) lumberjack (1.0.13) method_source (0.9.2) - mini_portile2 (2.5.1) + mini_portile2 (2.8.5) minitest (5.14.4) mustermann (1.1.1) ruby2_keywords (~> 0.0.1) @@ -62,8 +61,8 @@ GEM hansi (~> 0.2.0) mustermann (= 1.1.1) nenv (0.3.0) - nokogiri (1.11.4) - mini_portile2 (~> 2.5.0) + nokogiri (1.16.2) + mini_portile2 (~> 2.8.2) racc (~> 1.4) notiffany (0.1.1) nenv (~> 0.1) @@ -72,11 +71,11 @@ GEM coderay (~> 1.1.0) method_source (~> 0.9.0) public_suffix (4.0.6) - racc (1.5.2) + racc (1.7.3) rake (13.0.1) - rb-fsevent (0.10.3) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) rspec (3.8.0) rspec-core (~> 3.8.0) rspec-expectations (~> 3.8.0) @@ -93,7 +92,6 @@ GEM rspec-support (~> 3.8.0) rspec-support (3.8.0) ruby2_keywords (0.0.4) - ruby_dep (1.5.0) shellany (0.0.1) simplecov (0.15.1) docile (~> 1.1.0) diff --git a/lib/oas_parser.rb b/lib/oas_parser.rb index 66fc615..3826e7e 100644 --- a/lib/oas_parser.rb +++ b/lib/oas_parser.rb @@ -2,11 +2,12 @@ require 'uri' require 'yaml' require 'active_support/core_ext/object/blank' +require 'active_support/core_ext/array/conversions' require 'active_support/core_ext/hash/conversions' require 'nokogiri' require 'addressable/uri' -require 'deep_merge' +require 'deep_merge/rails_compat' require_relative 'oas_parser/path.rb' require_relative 'oas_parser/payload.rb' diff --git a/lib/oas_parser/parser.rb b/lib/oas_parser/parser.rb index 1f7576d..9b700fa 100644 --- a/lib/oas_parser/parser.rb +++ b/lib/oas_parser/parser.rb @@ -1,7 +1,7 @@ module OasParser class Parser def self.resolve(path) - content = YAML.load_file(path) + content = YAML.load_file(path, permitted_classes: [Time]) Parser.new(path, content).resolve end diff --git a/lib/oas_parser/property.rb b/lib/oas_parser/property.rb index eb7a646..aa11a1b 100644 --- a/lib/oas_parser/property.rb +++ b/lib/oas_parser/property.rb @@ -27,7 +27,7 @@ def convert_property_schema_to_properties(schema) if schema['allOf'] schema['properties'] = {} schema['allOf'].each do |p| - schema['properties'].deep_merge!(p['properties']) + schema['properties'].deeper_merge!(p['properties']) end schema.delete('allOf') end diff --git a/lib/oas_parser/request_body.rb b/lib/oas_parser/request_body.rb index 852e48f..f923569 100644 --- a/lib/oas_parser/request_body.rb +++ b/lib/oas_parser/request_body.rb @@ -49,7 +49,7 @@ def deep_safe_merge(source_hash, new_hash) if new.respond_to?(:blank) && new.blank? old elsif (old.kind_of?(Hash) and new.kind_of?(Hash)) - old.deep_merge(new) + old.deeper_merge(new) elsif (old.kind_of?(Array) and new.kind_of?(Array)) old.concat(new).uniq else diff --git a/lib/oas_parser/response_parser.rb b/lib/oas_parser/response_parser.rb index 2499f90..633f6bc 100644 --- a/lib/oas_parser/response_parser.rb +++ b/lib/oas_parser/response_parser.rb @@ -92,7 +92,7 @@ def parse_object(object) if object['allOf'] merged_object = { 'type' => 'object' } - object['allOf'].each { |o| merged_object.deep_merge!(o) } + object['allOf'].each { |o| merged_object.deeper_merge!(o) } return parameter_value(merged_object) elsif object['properties'] o = {}