Skip to content

Commit 599d0f9

Browse files
committed
Merge remote-tracking branch 'origin/master' into rename_schema_validators
2 parents c6a71c8 + c9de79f commit 599d0f9

File tree

9 files changed

+44
-10
lines changed

9 files changed

+44
-10
lines changed

Steepfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ target :lib do
77
check "lib/openapi_parser/schema_validator/options.rb"
88
check "lib/openapi_parser/schema_validator/base.rb"
99

10-
library 'uri'
10+
library 'uri', 'json', 'pathname'
1111
end

lib/openapi_parser.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,16 @@ def load(filepath, config = {})
4343
def load_uri(uri, config:, schema_registry:)
4444
# Open-uri doesn't open file scheme uri, so we try to open file path directly
4545
# File scheme uri which points to a remote file is not supported.
46+
uri_path = uri.path
47+
raise "file not found" if uri_path.nil?
48+
4649
content = if uri.scheme == 'file'
47-
open(uri.path)&.read
50+
open(uri_path)&.read
4851
elsif uri.is_a?(OpenURI::OpenRead)
4952
uri.open()&.read
5053
end
5154

52-
extension = Pathname.new(uri.path).extname
55+
extension = Pathname.new(uri_path).extname
5356
load_hash(parse_file(content, extension), config: config, uri: uri, schema_registry: schema_registry)
5457
end
5558

@@ -85,6 +88,7 @@ def parse_yaml(content)
8588
end
8689

8790
def parse_json(content)
91+
raise "json content is nil" unless content
8892
JSON.parse(content)
8993
end
9094

lib/openapi_parser/schema_validator/base.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def coerce_and_validate(_value, _schema, **_keyword_args)
1414

1515
def validate_discriminator_schema(discriminator, value, parent_discriminator_schemas: [])
1616
property_name = discriminator.property_name
17-
unless (property_name && value.key?(property_name))
17+
if property_name.nil? || !value.key?(property_name)
1818
return [nil, OpenAPIParser::NotExistDiscriminatorPropertyName.new(discriminator.property_name, value, discriminator.object_reference)]
1919
end
2020
mapping_key = value[property_name]

sig/openapi_parser/config.rbs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
module OpenAPIParser
33
class Config
44
@config: untyped
5+
@request_validator_options: OpenAPIParser::SchemaValidator::Options
6+
@response_validate_options: OpenAPIParser::SchemaValidator::ResponseValidateOptions
57
alias request_body_options request_validator_options
68
alias path_params_options request_validator_options
79

sig/openapi_parser/errors.rbs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module OpenAPIParser
2+
class OpenAPIError < StandardError
3+
def initialize: (untyped reference) -> untyped
4+
end
5+
6+
class ValidateError < OpenAPIError
7+
def initialize: (untyped data, (String | nil) type, untyped reference) -> untyped
8+
def message: -> String
9+
10+
def self.build_error_result: (Object value, OpenAPIParser::Schemas::Schema schema) -> [nil, OpenAPIParser::ValidateError]
11+
end
12+
13+
class NotExistDiscriminatorMappedSchema < OpenAPIError
14+
def initialize: (untyped mapped_schema_reference, untyped reference) -> untyped
15+
def message: -> String
16+
end
17+
18+
class NotExistDiscriminatorPropertyName < OpenAPIError
19+
def initialize: (untyped mapped_schema_reference, untyped value, untyped reference) -> untyped
20+
def message: -> String
21+
end
22+
end
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class OpenAPIParser::ReferenceExpander
2+
def self.expand: (OpenAPIParser::Schemas::OpenAPI openapi, untyped validate_references) -> nil
3+
end

sig/openapi_parser/schema_validators/base.rbs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ module OpenAPIParser
44
class Base
55
@coerce_value: bool | nil
66

7-
def initialize: (OpenAPIParser::SchemaValidator::Validatable validatable, (bool | nil) coerce_value) -> untyped
87
attr_reader validatable: OpenAPIParser::SchemaValidator::Validatable
9-
def coerce_and_validate: (Object _value, OpenAPIParser::Schemas::Schema _schema, **untyped) -> bot
8+
9+
def initialize: (OpenAPIParser::SchemaValidator::Validatable validatable, (bool | nil) coerce_value) -> untyped
10+
def coerce_and_validate: (Object _value, OpenAPIParser::Schemas::Schema _schema, **untyped) -> [untyped, (ValidateError | NotExistDiscriminatorMappedSchema | nil)]
1011
def validate_discriminator_schema: (
1112
OpenAPIParser::Schemas::Discriminator discriminator,
1213
Hash[String, bot] value,
1314
?parent_discriminator_schemas: Array[OpenAPIParser::Schemas::Schema]
14-
) -> [Object | nil, OpenAPIParser::validate_error]
15+
) -> [Object | nil, OpenAPIParser::OpenAPIError]
1516
end
1617
end
1718
end

sig/types.rbs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ module OpenURI
66
end
77
end
88

9+
10+
module Psych
11+
def self.safe_load: (untyped content, untyped parmitted_classes) -> Hash[bot, bot]
12+
end
13+

sig/wip_types.rbs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,3 @@ class OpenAPIParser::Schemas::Discriminator < OpenAPIParser::Schemas::Base
6262
attr_reader property_name: (String | nil)
6363
attr_reader mapping: Hash[String, String]
6464
end
65-
66-
class OpenAPIParser::OpenAPIError
67-
end

0 commit comments

Comments
 (0)