Sha256: f3a1f2462b9bb4b0bf091a3c186b7522c0cc23667d9fe79186c73b9e0c0f892c

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 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)
      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

      unless @datetime_coerce_class.nil?
        value = coerce_date_time(value, schema)
        return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(@datetime_coerce_class)
      end

      [value, nil]
    end

    private

      # @param [OpenAPIParser::Schemas::Schema] schema
      def coerce_date_time(value, schema)
        (schema.format == 'date-time') ? parse_date_time(value) : value
      end

      def parse_date_time(value)
        begin
          return @datetime_coerce_class.parse(value)
        rescue ArgumentError => e
          raise e unless e.message =~ /invalid date/
        end

        value
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
openapi_parser-0.2.1 lib/openapi_parser/schema_validators/string_validator.rb