Sha256: 2b1186a2271bd251bb3c587f2af838ce88268624c11b2bab498a47b9a4bee139

Contents?: true

Size: 1016 Bytes

Versions: 12

Compression:

Stored size: 1016 Bytes

Contents

module OpenApi
  class MediaType
    prepend EquatableAsContent

    attr_accessor :schema, :example, :examples, :encoding

    def initialize(schema: nil, example: nil, examples: nil, encoding: nil)
      self.schema = schema
      self.example = example
      self.examples = examples
      self.encoding = encoding
    end

    def serializable_hash
      {
        "schema" => schema&.serializable_hash,
        "example" => example,
        "examples" => examples&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_hash,
        "encoding" => encoding&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_hash,
      }.compact
    end

    def self.load(hash)
      return unless hash

      new(
        schema: Reference.load(hash["schema"]) || Schema.load(hash["schema"]),
        example: hash["example"],
        examples: hash["examples"]&.map { |k, v| [k, Reference.load(v) || Example.load(v)] }&.to_h,
        encoding: hash["encoding"]&.map { |k, v| [k, Encoding.load(v)] }&.to_h
      )
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

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