Sha256: 55ce79ea3aa9da13bd6d801311f08af222206d2b7b6712be110b2720b646378e

Contents?: true

Size: 1.47 KB

Versions: 12

Compression:

Stored size: 1.47 KB

Contents

module OpenApi
  # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#oasObject
  class Specification
    prepend EquatableAsContent

    attr_accessor :openapi, :info, :servers, :paths, :components, :security, :tags, :external_docs

    def initialize(openapi:, info:, servers: nil, paths:, components: nil, security: nil, tags: nil, external_docs: nil)
      self.openapi = openapi
      self.info = info
      self.paths = paths
      self.components = components
      self.security = security
      self.tags = tags
      self.external_docs = external_docs
    end

    def serializable_hash
      {
        "openapi" => openapi.to_s,
        "info" => info.serializable_hash,
        "paths" => paths.serializable_hash,
        "components" => components&.serializable_hash,
        "security" => security&.map(&:serializable_hash),
        "tags" => tags&.map(&:serializable_hash),
        "externalDocs" => external_docs&.serializable_hash,
      }.compact
    end

    def self.load(hash)
      return unless hash

      new(
        openapi: hash["openapi"].to_s,
        info: Info.load(hash["info"]),
        paths: Paths.load(hash["paths"]),
        components: Components.load(hash["components"]),
        security: hash["security"]&.map { |requirement_hash| SecurityRequirement.load(requirement_hash) },
        tags: hash["tags"]&.map { |tag_hash| Tag.load(tag_hash) },
        external_docs: ExternalDocumentation.load(hash["externalDocs"]),
      )
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
open_api-0.6.2 lib/open_api/specification.rb
open_api-0.6.1 lib/open_api/specification.rb
open_api-0.6.0 lib/open_api/specification.rb
open_api-0.5.0 lib/open_api/specification.rb
open_api-0.4.0 lib/open_api/specification.rb
open_api-0.3.4 lib/open_api/specification.rb
open_api-0.3.3 lib/open_api/specification.rb
open_api-0.3.2 lib/open_api/specification.rb
open_api-0.3.1 lib/open_api/specification.rb
open_api-0.3.0 lib/open_api/specification.rb
open_api-0.2.0 lib/open_api/specification.rb
open_api-0.1.0 lib/open_api/specification.rb