Sha256: 55254c84a65a8f47afaa8d9eac96ec07043101918b49adc847a84f4c4ad7bcf9

Contents?: true

Size: 863 Bytes

Versions: 5

Compression:

Stored size: 863 Bytes

Contents

# frozen_string_literal: true

module Openapi3Parser
  module Validators
    class Reference
      def initialize(given_reference)
        @given_reference = given_reference
      end

      def valid?
        errors.empty?
      end

      def errors
        @errors ||= Array(build_errors)
      end

      private

      attr_reader :given_reference

      def build_errors
        return "expected a string" unless given_reference.is_a?(String)
        begin
          uri = URI.parse(given_reference)
        rescue URI::Error
          return "could not parse as a URI"
        end
        check_fragment(uri) || []
      end

      def check_fragment(uri)
        return if uri.fragment.nil? || uri.fragment.empty?
        first_char = uri.fragment[0]

        "invalid JSON pointer, expected a root slash" if first_char != "/"
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
openapi3_parser-0.5.2 lib/openapi3_parser/validators/reference.rb
openapi3_parser-0.5.1 lib/openapi3_parser/validators/reference.rb
openapi3_parser-0.5.0 lib/openapi3_parser/validators/reference.rb
openapi3_parser-0.4.0 lib/openapi3_parser/validators/reference.rb
openapi3_parser-0.3.0 lib/openapi3_parser/validators/reference.rb