openapi_parser 1.0.0.beta1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yaml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +4 -0
- data/lib/openapi_parser/errors.rb +11 -0
- data/lib/openapi_parser/schema_validators/string_validator.rb +25 -22
- data/lib/openapi_parser/version.rb +1 -1
- data/openapi_parser.gemspec +8 -2
- metadata +19 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3019c8458c35d159f7c8eccc8f8203d39826438804460cccd1383f9e29b95299
         | 
| 4 | 
            +
              data.tar.gz: 3471fed71a9d1f81688d87a0c907a0ab4c0529ca3e4a9d40159403b88238d1a6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d9f7ba65682079456e26ff03d4be816ad6f61b9bb9224c4cf37157a0bb4d4455d17c3e36fbadd0f557700d9926f69a50ae8ebdc9041412304b12b05feb91df4e
         | 
| 7 | 
            +
              data.tar.gz: fd611630b787af1e69a003de92c01f8c83d9e9d6e8be68fe66fdba6a93ce2a8ca412c89a00fa35bcf4d7441fe10c309ec9eb9f3e91659957429b0375629a3671
         | 
    
        data/.github/workflows/ci.yaml
    CHANGED
    
    
    
        data/.ruby-version
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            3.0 | 
| 1 | 
            +
            3.1.0
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
| @@ -206,6 +206,17 @@ module OpenAPIParser | |
| 206 206 | 
             
                end
         | 
| 207 207 | 
             
              end
         | 
| 208 208 |  | 
| 209 | 
            +
              class InvalidDateTimeFormat < OpenAPIError
         | 
| 210 | 
            +
                def initialize(value, reference)
         | 
| 211 | 
            +
                  super(reference)
         | 
| 212 | 
            +
                  @value = value
         | 
| 213 | 
            +
                end
         | 
| 214 | 
            +
             | 
| 215 | 
            +
                def message
         | 
| 216 | 
            +
                  "#{@reference} Value: #{@value.inspect} is not conformant with date-time format"
         | 
| 217 | 
            +
                end
         | 
| 218 | 
            +
              end
         | 
| 219 | 
            +
             | 
| 209 220 | 
             
              class NotExistStatusCodeDefinition < OpenAPIError
         | 
| 210 221 | 
             
                def message
         | 
| 211 222 | 
             
                  "#{@reference} status code definition does not exist"
         | 
| @@ -16,11 +16,6 @@ class OpenAPIParser::SchemaValidator | |
| 16 16 | 
             
                  value, err = pattern_validate(value, schema)
         | 
| 17 17 | 
             
                  return [nil, err] if err
         | 
| 18 18 |  | 
| 19 | 
            -
                  unless @datetime_coerce_class.nil?
         | 
| 20 | 
            -
                    value, err = coerce_date_time(value, schema)
         | 
| 21 | 
            -
                    return [nil, err] if err
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
             | 
| 24 19 | 
             
                  value, err = validate_max_min_length(value, schema)
         | 
| 25 20 | 
             
                  return [nil, err] if err
         | 
| 26 21 |  | 
| @@ -33,28 +28,14 @@ class OpenAPIParser::SchemaValidator | |
| 33 28 | 
             
                  value, err = validate_date_format(value, schema)
         | 
| 34 29 | 
             
                  return [nil, err] if err
         | 
| 35 30 |  | 
| 31 | 
            +
                  value, err = validate_datetime_format(value, schema)
         | 
| 32 | 
            +
                  return [nil, err] if err
         | 
| 33 | 
            +
             | 
| 36 34 | 
             
                  [value, nil]
         | 
| 37 35 | 
             
                end
         | 
| 38 36 |  | 
| 39 37 | 
             
                private
         | 
| 40 38 |  | 
| 41 | 
            -
                  # @param [OpenAPIParser::Schemas::Schema] schema
         | 
| 42 | 
            -
                  def coerce_date_time(value, schema)
         | 
| 43 | 
            -
                    return parse_date_time(value, schema) if schema.format == 'date-time'
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                    [value, nil]
         | 
| 46 | 
            -
                  end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                  def parse_date_time(value, schema)
         | 
| 49 | 
            -
                    begin
         | 
| 50 | 
            -
                      return @datetime_coerce_class.parse(value), nil
         | 
| 51 | 
            -
                    rescue ArgumentError => e
         | 
| 52 | 
            -
                      raise e unless e.message =~ /invalid date/
         | 
| 53 | 
            -
                    end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                    OpenAPIParser::ValidateError.build_error_result(value, schema)
         | 
| 56 | 
            -
                  end
         | 
| 57 | 
            -
             | 
| 58 39 | 
             
                  # @param [OpenAPIParser::Schemas::Schema] schema
         | 
| 59 40 | 
             
                  def pattern_validate(value, schema)
         | 
| 60 41 | 
             
                    # pattern support string only so put this
         | 
| @@ -101,5 +82,27 @@ class OpenAPIParser::SchemaValidator | |
| 101 82 |  | 
| 102 83 | 
             
                    return [value, nil]
         | 
| 103 84 | 
             
                  end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  def validate_datetime_format(value, schema)
         | 
| 87 | 
            +
                    return [value, nil] unless schema.format == 'date-time'
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                    begin
         | 
| 90 | 
            +
                      if @datetime_coerce_class.nil?
         | 
| 91 | 
            +
                        # validate only
         | 
| 92 | 
            +
                        DateTime.rfc3339(value)
         | 
| 93 | 
            +
                        [value, nil]
         | 
| 94 | 
            +
                      else
         | 
| 95 | 
            +
                        # validate and coerce
         | 
| 96 | 
            +
                        if @datetime_coerce_class == Time
         | 
| 97 | 
            +
                          [DateTime.rfc3339(value).to_time, nil]
         | 
| 98 | 
            +
                        else
         | 
| 99 | 
            +
                          [@datetime_coerce_class.rfc3339(value), nil]
         | 
| 100 | 
            +
                        end
         | 
| 101 | 
            +
                      end
         | 
| 102 | 
            +
                    rescue ArgumentError
         | 
| 103 | 
            +
                      # when rfc3339(value) failed
         | 
| 104 | 
            +
                      [nil, OpenAPIParser::InvalidDateTimeFormat.new(value, schema.object_reference)]
         | 
| 105 | 
            +
                    end
         | 
| 106 | 
            +
                  end
         | 
| 104 107 | 
             
              end
         | 
| 105 108 | 
             
            end
         | 
    
        data/openapi_parser.gemspec
    CHANGED
    
    | @@ -25,11 +25,17 @@ Gem::Specification.new do |spec| | |
| 25 25 |  | 
| 26 26 | 
             
              spec.add_development_dependency 'bundler', '>= 1.16'
         | 
| 27 27 | 
             
              spec.add_development_dependency 'fincop'
         | 
| 28 | 
            -
             | 
| 29 | 
            -
               | 
| 28 | 
            +
             | 
| 29 | 
            +
              if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("3.2.0")
         | 
| 30 | 
            +
                spec.add_development_dependency 'pry', '~> 0.12.0'
         | 
| 31 | 
            +
                spec.add_development_dependency 'pry-byebug'
         | 
| 32 | 
            +
              end
         | 
| 30 33 | 
             
              spec.add_development_dependency 'rake', '>= 12.3.3'
         | 
| 31 34 | 
             
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 32 35 | 
             
              spec.add_development_dependency 'rspec-parameterized'
         | 
| 33 36 | 
             
              spec.add_development_dependency 'simplecov'
         | 
| 34 37 | 
             
              spec.add_development_dependency "steep"
         | 
| 38 | 
            +
              # for steep 
         | 
| 39 | 
            +
              # https://github.com/soutaro/steep/issues/466
         | 
| 40 | 
            +
              spec.add_development_dependency "activesupport", '~> 6.0'
         | 
| 35 41 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: openapi_parser
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0.0 | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - ota42y
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-02-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -136,6 +136,20 @@ dependencies: | |
| 136 136 | 
             
                - - ">="
         | 
| 137 137 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 138 | 
             
                    version: '0'
         | 
| 139 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 140 | 
            +
              name: activesupport
         | 
| 141 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 142 | 
            +
                requirements:
         | 
| 143 | 
            +
                - - "~>"
         | 
| 144 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            +
                    version: '6.0'
         | 
| 146 | 
            +
              type: :development
         | 
| 147 | 
            +
              prerelease: false
         | 
| 148 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 | 
            +
                requirements:
         | 
| 150 | 
            +
                - - "~>"
         | 
| 151 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            +
                    version: '6.0'
         | 
| 139 153 | 
             
            description: parser for OpenAPI 3.0 or later
         | 
| 140 154 | 
             
            email:
         | 
| 141 155 | 
             
            - ota42y@gmail.com
         | 
| @@ -244,11 +258,11 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 244 258 | 
             
                  version: 2.6.0
         | 
| 245 259 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 246 260 | 
             
              requirements:
         | 
| 247 | 
            -
              - - " | 
| 261 | 
            +
              - - ">="
         | 
| 248 262 | 
             
                - !ruby/object:Gem::Version
         | 
| 249 | 
            -
                  version:  | 
| 263 | 
            +
                  version: '0'
         | 
| 250 264 | 
             
            requirements: []
         | 
| 251 | 
            -
            rubygems_version: 3. | 
| 265 | 
            +
            rubygems_version: 3.3.3
         | 
| 252 266 | 
             
            signing_key:
         | 
| 253 267 | 
             
            specification_version: 4
         | 
| 254 268 | 
             
            summary: OpenAPI3 parser
         |