Skip to content
2 changes: 2 additions & 0 deletions lib/openapi_parser/schemas.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@
require_relative 'schemas/media_type'
require_relative 'schemas/schema'
require_relative 'schemas/header'
require_relative 'schemas/security_schemes'
require_relative 'schemas/jwt'
2 changes: 2 additions & 0 deletions lib/openapi_parser/schemas/classes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ class MediaType < Base; end
class Schema < Base; end
class Components < Base; end
class Header < Base; end
class SecurityScheme < Base; end
class Jwt < Base; end
end
8 changes: 8 additions & 0 deletions lib/openapi_parser/schemas/components.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,13 @@ class Components < Base
# @!attribute [r] headers
# @return [Hash{String => Header}, nil] header objects
openapi_attr_hash_object :headers, Header, reference: true

# @!attribute [r] securitySchemes
# @return [Hash{String => SecurityScheme}, nil]
openapi_attr_hash_object :security_schemes, SecurityScheme, reference: false, schema_key: :securitySchemes

def validate_security_schemes(params, options)
security_schemes&.validate(params, options)
end
end
end
13 changes: 13 additions & 0 deletions lib/openapi_parser/schemas/jwt.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module OpenAPIParser::Schemas
class Jwt < Base
# @!attribute [r] type
# @return [String, nil]
# @!attribute [r] scheme
# @return [String, nil]
# @!attribute [r] bearerFormat
# @return [String, nil]

openapi_attr_values :type, :scheme,
:bearerFormat
end
end
13 changes: 13 additions & 0 deletions lib/openapi_parser/schemas/security_schemes.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module OpenAPIParser::Schemas
class SecurityScheme < Base
# @!attribute [r] jwt
# @return [Jwt, nil]
openapi_attr_object :jwt, Jwt, reference: false

# validate by jwt
# @param [Object] value
def validate(value)
OpenAPIParser::SchemaValidator.validate(value, jwt, OpenAPIParser::SchemaValidator::Options.new)
end
end
end