From 754e74140b08c61cd2dc46493c4d0ee027dfab12 Mon Sep 17 00:00:00 2001 From: Alexander Marychev Date: Fri, 26 Apr 2024 13:22:41 +0300 Subject: [PATCH 1/3] Parsing removed sources of schema --- lib/json_skooma/keywords/core/ref.rb | 18 ++++++++++++++++++ lib/json_skooma/sources.rb | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/json_skooma/keywords/core/ref.rb b/lib/json_skooma/keywords/core/ref.rb index a4cbe9d..229fb45 100644 --- a/lib/json_skooma/keywords/core/ref.rb +++ b/lib/json_skooma/keywords/core/ref.rb @@ -7,6 +7,7 @@ class Ref < Base self.key = "$ref" def resolve + add_remote_source if need_to_adding? @ref_schema = parent_schema.resolve_ref(json) end @@ -14,6 +15,23 @@ def evaluate(instance, result) @ref_schema.evaluate(instance, result) result.ref_schema = @ref_schema end + + def add_remote_source + parent_schema.registry.add_source( + pathname.dirname.to_s + "/", + JSONSkooma::Sources::Remote.new(json) + # JSONSkooma::Sources::Remote.new(pathname.basename) + ) + end + + def need_to_adding? + json.start_with?("http") && + parent_schema.registry.instance_variable_get("@uri_sources").keys.none?{ |k| json.include?(k) } + end + + def pathname + Pathname.new(json) + end end end end diff --git a/lib/json_skooma/sources.rb b/lib/json_skooma/sources.rb index 6cd92f2..eed633f 100644 --- a/lib/json_skooma/sources.rb +++ b/lib/json_skooma/sources.rb @@ -46,7 +46,7 @@ class Remote < Base def read(relative_path) path = suffix ? relative_path + suffix : relative_path url = URI.join(base, path) - URI.parse(url).open.read + url.open.read rescue OpenURI::HTTPError, SocketError raise Error, "Could not fetch #{url}" end From b13071291b411052eec64b3925e8f4e0a402d1cb Mon Sep 17 00:00:00 2001 From: Alexander Marychev Date: Fri, 26 Apr 2024 13:47:23 +0300 Subject: [PATCH 2/3] Fixes --- lib/json_skooma/keywords/core/ref.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/json_skooma/keywords/core/ref.rb b/lib/json_skooma/keywords/core/ref.rb index 229fb45..f686f12 100644 --- a/lib/json_skooma/keywords/core/ref.rb +++ b/lib/json_skooma/keywords/core/ref.rb @@ -20,7 +20,6 @@ def add_remote_source parent_schema.registry.add_source( pathname.dirname.to_s + "/", JSONSkooma::Sources::Remote.new(json) - # JSONSkooma::Sources::Remote.new(pathname.basename) ) end From 54123e159a6fa5b1b987f8f1417e31418bb6a3db Mon Sep 17 00:00:00 2001 From: Alexander Marychev Date: Sat, 27 Apr 2024 13:44:29 +0300 Subject: [PATCH 3/3] Revert auto-resolve part logic --- lib/json_skooma/keywords/core/ref.rb | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/lib/json_skooma/keywords/core/ref.rb b/lib/json_skooma/keywords/core/ref.rb index f686f12..a4cbe9d 100644 --- a/lib/json_skooma/keywords/core/ref.rb +++ b/lib/json_skooma/keywords/core/ref.rb @@ -7,7 +7,6 @@ class Ref < Base self.key = "$ref" def resolve - add_remote_source if need_to_adding? @ref_schema = parent_schema.resolve_ref(json) end @@ -15,22 +14,6 @@ def evaluate(instance, result) @ref_schema.evaluate(instance, result) result.ref_schema = @ref_schema end - - def add_remote_source - parent_schema.registry.add_source( - pathname.dirname.to_s + "/", - JSONSkooma::Sources::Remote.new(json) - ) - end - - def need_to_adding? - json.start_with?("http") && - parent_schema.registry.instance_variable_get("@uri_sources").keys.none?{ |k| json.include?(k) } - end - - def pathname - Pathname.new(json) - end end end end