Sha256: 59e9b09a2d15aa19a49deaa024c69f0b5d64e2fabe1d535bceb6b61b70d012db
Contents?: true
Size: 1.59 KB
Versions: 2
Compression:
Stored size: 1.59 KB
Contents
module OasRails module Builders class ContentBuilder def initialize(specification, context) @context = context || :incoming @specification = specification @media_type = Spec::MediaType.new(specification) end def with_schema(schema) @media_type.schema = @specification.components.add_schema(schema) self end def with_examples(examples) @media_type.examples = @specification.components.add_example(examples) self end def with_examples_from_tags(tags) @media_type.examples = @media_type.examples.merge(tags.each_with_object({}).with_index(1) do |(example, result), _index| key = example.text.downcase.gsub(' ', '_') value = { "summary" => example.text, "value" => example.content } result[key] = @specification.components.add_example(value) end) self end def from_model_class(klass) return self unless klass.ancestors.include? ActiveRecord::Base model_schema = EsquemaBuilder.send("build_#{@context}_schema", klass:) model_schema["required"] = [] schema = { type: "object", properties: { klass.to_s.downcase => model_schema } } examples = Spec::MediaType.search_for_examples_in_tests(klass, context: @context) @media_type.schema = @specification.components.add_schema(schema) @media_type.examples = @media_type.examples.merge(examples) self end def build { "application/json": @media_type } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
oas_rails-0.4.1 | lib/oas_rails/builders/content_builder.rb |
oas_rails-0.4.0 | lib/oas_rails/builders/content_builder.rb |