Sha256: 04802569a8f51bb66978b707457d1f55d36699b7b62f80fdc363aae779547809

Contents?: true

Size: 1.41 KB

Versions: 11

Compression:

Stored size: 1.41 KB

Contents

require "mini_apivore/version"
require 'hashie'


module MiniApivore
  class Swagger < Hashie::Mash
    NONVERB_PATH_ITEMS = %q(parameters)

    def validate
      case version
        when '2.0'
          schema = File.read(File.expand_path("../../../data/swagger_2.0_schema.json", __FILE__))
        else
          raise "Unknown/unsupported Swagger version to validate against: #{version}"
      end
      JSON::Validator.fully_validate(schema, self)
    end

    def version
      swagger
    end

    def base_path
      self['basePath'] || ''
    end

    def each_response(&block)
      paths.each do |path, path_data|
        next if vendor_specific_tag? path
        path_data.each do |verb, method_data|
          next if NONVERB_PATH_ITEMS.include?(verb)
          next if vendor_specific_tag? verb
          if method_data.responses.nil?
            raise "No responses found in swagger for path '#{path}', " \
              "verb #{verb}: #{method_data.inspect}"
          end
          method_data.responses.each do |response_code, response_data|
            schema_location = nil
            if response_data.schema
              schema_location = Fragment.new ['#', 'paths', path, verb, 'responses', response_code, 'schema']
            end
            block.call(path, verb, response_code, schema_location)
          end
        end
      end
    end

    def vendor_specific_tag? tag
      tag =~ /\Ax-.*/
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
mini-apivore-0.2.1 lib/mini_apivore/swagger.rb
mini-apivore-0.2.0 lib/mini_apivore/swagger.rb
mini-apivore-0.1.8 lib/mini_apivore/swagger.rb
mini-apivore-0.1.7 lib/mini_apivore/swagger.rb
mini-apivore-0.1.6 lib/mini_apivore/swagger.rb
mini-apivore-0.1.5 lib/mini_apivore/swagger.rb
mini-apivore-0.1.4 lib/mini_apivore/swagger.rb
mini-apivore-0.1.3 lib/mini_apivore/swagger.rb
mini-apivore-0.1.2 lib/mini_apivore/swagger.rb
mini-apivore-0.1.1 lib/mini_apivore/swagger.rb
mini-apivore-0.1.0 lib/mini_apivore/swagger.rb