Sha256: 14ecc07980b2e65b2cf54899d6d829e589f69c1a713b97102e3ade3a3ba31890

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

require "openapi3_parser/nodes/parameter"
require "openapi3_parser/node_factories/parameter/parameter_like"
require "openapi3_parser/node_factory/object"

module Openapi3Parser
  module NodeFactories
    class Parameter
      include NodeFactory::Object
      include Parameter::ParameterLike

      allow_extensions

      field "name", input_type: String, required: true
      field "in", input_type: String, required: true
      field "description", input_type: String
      field "required", input_type: :boolean, default: false
      field "deprecated", input_type: :boolean, default: false
      field "allowEmptyValue", input_type: :boolean, default: false

      field "style", input_type: String, default: :default_style
      field "explode", input_type: :boolean, default: :default_explode
      field "allowReserved", input_type: :boolean, default: false
      field "schema", factory: :schema_factory
      field "example"
      field "examples", factory: :examples_factory

      field "content", factory: :content_factory

      private

      def build_object(data, context)
        Nodes::Parameter.new(data, context)
      end

      def default_style
        return "simple" if %w[path header].include?(context.input["in"])
        "form"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
openapi3_parser-0.3.0 lib/openapi3_parser/node_factories/parameter.rb
openapi3_parser-0.2.0 lib/openapi3_parser/node_factories/parameter.rb
openapi3_parser-0.1.0 lib/openapi3_parser/node_factories/parameter.rb