Sha256: 20d40c6aa6cb575e11eac08aa5963b7c9f4a149da094182385c29868d2ecf492

Contents?: true

Size: 1.64 KB

Versions: 15

Compression:

Stored size: 1.64 KB

Contents

# frozen_string_literal: true

require 'forwardable'
require_relative './endpoint'
require_relative './response_format'
require_relative './groups'
require_relative './versions'
require_relative '../services/open_api_definition_resolver'

module Nexmo
  module OAS
    module Renderer
      module Presenters
        class OpenApiSpecification
          extend Forwardable

          attr_reader :definition_name

          def_delegators :@versions, :current_version, :available_versions
          def_delegators :@groups, :groups

          def initialize(definition_name:, expand_responses:)
            @definition_name  = definition_name
            @expand_responses = expand_responses
            @versions         = Versions.new(definition_name)
            @groups           = Groups.new(definition)
          end

          def errors?
            File.exist?("#{API.oas_path}/../../errors/#{@definition_name}.md")
          end

          def definition_errors
            return unless errors?

            @definition_errors ||= Nexmo::Markdown::Renderer.new.call(
              File.read("#{API.oas_path}/../../errors/#{@definition_name}.md")
            )
          end

          def definition
            @definition ||= OpenApiDefinitionResolver.find(@definition_name)
          end

          def auto_expand_responses
            @expand_responses
          end

          def formats
            @formats ||= ResponseFormat.to_dropdown(endpoints.flat_map(&:formats).uniq)
          end

          private

          def endpoints
            @endpoints ||= definition.endpoints.map { |e| Endpoint.new(e) }
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
nexmo-oas-renderer-2.7.2 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.7.1 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.7.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.6.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.5.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.4.1 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.4.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.3.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.2.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.1.3 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.1.2 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.1.1 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.1.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.0.1 lib/nexmo/oas/renderer/presenters/open_api_specification.rb
nexmo-oas-renderer-2.0.0 lib/nexmo/oas/renderer/presenters/open_api_specification.rb