Sha256: a588dffcc9f463505043efa93bb6a85cabe4c7779d3521e1a6573aea1f0f2abf

Contents?: true

Size: 1.42 KB

Versions: 15

Compression:

Stored size: 1.42 KB

Contents

require 'json'

module OasRails
  module Spec
    class Specification
      include Specable
      attr_accessor :components, :info, :openapi, :servers, :tags, :external_docs, :paths

      # Initializes a new Specification object.
      # Clears the cache if running in the development environment.
      def initialize
        clear_cache unless Rails.env.production?

        @components = Components.new(self)
        @info = OasRails.config.info
        @openapi = '3.1.0'
        @servers = OasRails.config.servers
        @tags = OasRails.config.tags
        @external_docs = {}
        @paths = Spec::Paths.new(self)
      end

      def build(route_extractor: Extractors::RouteExtractor)
        route_extractor.host_paths.each do |path|
          @paths.add_path(path)
        end
      end

      # Clears the cache for MethodSource and RouteExtractor.
      #
      # @return [void]
      def clear_cache
        MethodSource.clear_cache
        Extractors::RouteExtractor.clear_cache
      end

      def oas_fields
        [:openapi, :info, :servers, :paths, :components, :security, :tags, :external_docs]
      end

      # Create the Security Requirement Object.
      # @see https://spec.openapis.org/oas/latest.html#security-requirement-object
      def security
        return [] unless OasRails.config.authenticate_all_routes_by_default

        OasRails.config.security_schemas.map { |key, _| { key => [] } }
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
oas_rails-0.9.0 lib/oas_rails/spec/specification.rb
oas_rails-0.8.4 lib/oas_rails/spec/specification.rb
oas_rails-0.8.3 lib/oas_rails/spec/specification.rb
oas_rails-0.8.2 lib/oas_rails/spec/specification.rb
oas_rails-0.8.1 lib/oas_rails/spec/specification.rb
oas_rails-0.8.0 lib/oas_rails/spec/specification.rb
oas_rails-0.7.0 lib/oas_rails/spec/specification.rb
oas_rails-0.6.0 lib/oas_rails/spec/specification.rb
oas_rails-0.5.0 lib/oas_rails/spec/specification.rb
oas_rails-0.4.5 lib/oas_rails/spec/specification.rb
oas_rails-0.4.4 lib/oas_rails/spec/specification.rb
oas_rails-0.4.3 lib/oas_rails/spec/specification.rb
oas_rails-0.4.2 lib/oas_rails/spec/specification.rb
oas_rails-0.4.1 lib/oas_rails/spec/specification.rb
oas_rails-0.4.0 lib/oas_rails/spec/specification.rb