Sha256: 264f99d11f60a1ef9dc8962b650fd1dd2483cfe1a75be60765b5617d65bc4fd9

Contents?: true

Size: 1.11 KB

Versions: 13

Compression:

Stored size: 1.11 KB

Contents

require 'mustermann/template'

module OasParser
  class Definition
    include OasParser::RawAccessor
    raw_keys :info, :servers, :components, :openapi
    attr_reader :path

    attr_accessor :raw

    def self.resolve(path)
      raw = Parser.resolve(path)
      Definition.new(raw, path)
    end

    def initialize(raw, path)
      @raw = raw
      @path = path
    end

    def format
      File.extname(@path).sub('.', '')
    end

    def paths
      raw['paths'].map do |path, definition|
        OasParser::Path.new(self, path, definition)
      end
    end

    def path_by_path(path)
      definition = raw['paths'][path]
      return OasParser::Path.new(self, path, definition) if definition

      key = raw['paths'].keys.detect do |path_entry|
        Mustermann::Template.new(path_entry).match(path)
      end
      definition = raw['paths'][key]
      raise OasParser::PathNotFound.new("Path not found: '#{path}'") unless definition
      OasParser::Path.new(self, key, definition)
    end

    def security
      raw['security'] || []
    end

    def endpoints
      paths.flat_map(&:endpoints)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
oas_parser-0.24.0 lib/oas_parser/definition.rb
oas_parser-0.23.0 lib/oas_parser/definition.rb
oas_parser-0.22.4 lib/oas_parser/definition.rb
oas_parser-0.22.2 lib/oas_parser/definition.rb
oas_parser-0.22.1 lib/oas_parser/definition.rb
oas_parser-0.22.0 lib/oas_parser/definition.rb
oas_parser-0.21.1 lib/oas_parser/definition.rb
oas_parser-0.21.0 lib/oas_parser/definition.rb
oas_parser-0.20.0 lib/oas_parser/definition.rb
oas_parser-0.19.0 lib/oas_parser/definition.rb
oas_parser-0.18.2 lib/oas_parser/definition.rb
oas_parser-0.18.1 lib/oas_parser/definition.rb
oas_parser-0.18.0 lib/oas_parser/definition.rb