Sha256: 6bdcb510c6fd637667ec41e777a14071093f6392a73f8a79da9feb9f7a0d73b5
Contents?: true
Size: 1.64 KB
Versions: 4
Compression:
Stored size: 1.64 KB
Contents
class OpenAPIParser::SchemaValidator class StringValidator < Base include ::OpenAPIParser::SchemaValidator::Enumable def initialize(validator, coerce_value, datetime_coerce_class) super(validator, coerce_value) @datetime_coerce_class = datetime_coerce_class end def coerce_and_validate(value, schema, **_keyword_args) return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(String) value, err = check_enum_include(value, schema) return [nil, err] if err value, err = pattern_validate(value, schema) return [nil, err] if err unless @datetime_coerce_class.nil? value, err = coerce_date_time(value, schema) return [nil, err] if err end [value, nil] end private # @param [OpenAPIParser::Schemas::Schema] schema def coerce_date_time(value, schema) return parse_date_time(value, schema) if schema.format == 'date-time' [value, nil] end def parse_date_time(value, schema) begin return @datetime_coerce_class.parse(value), nil rescue ArgumentError => e raise e unless e.message =~ /invalid date/ end OpenAPIParser::ValidateError.build_error_result(value, schema) end # @param [OpenAPIParser::Schemas::Schema] schema def pattern_validate(value, schema) # pattern support string only so put this return [value, nil] unless schema.pattern return [value, nil] if value =~ /#{schema.pattern}/ [nil, OpenAPIParser::InvalidPattern.new(value, schema.pattern, schema.object_reference)] end end end
Version data entries
4 entries across 4 versions & 1 rubygems