class Apipie::Generator::Swagger::ParamDescription::Builder

Public Class Methods

new(param_description, in_schema:, controller_method:) click to toggle source

@param [Apipie::ParamDescription] param_description @param [TrueClass, FalseClass] in_schema @param [Apipie::MethodDescription] controller_method

# File lib/apipie/generator/swagger/param_description/builder.rb, line 5
def initialize(param_description, in_schema:, controller_method:)
  @param_description = param_description
  @in_schema = in_schema
  @controller_method = controller_method
end

Public Instance Methods

to_swagger() click to toggle source

@return [Hash]

# File lib/apipie/generator/swagger/param_description/builder.rb, line 47
def to_swagger
  definition = {}

  definition.merge!(@name.to_hash) if @name.present?
  definition.merge!(@type.to_hash) if @type.present?
  definition.merge!(@in.to_hash) if @in.present?

  definition.merge!(for_default)
  definition.merge!(for_required)
  definition.merge!(@description.to_hash) if @description.present?

  warn_optional_without_default_value(definition)

  definition
end
with_description(language:) click to toggle source

@param [String] language

# File lib/apipie/generator/swagger/param_description/builder.rb, line 20
def with_description(language:)
  @description = Apipie::Generator::Swagger::ParamDescription::Description.
    new(@param_description, language: language)

  self
end
with_in(http_method:, default_in_value: nil) click to toggle source
# File lib/apipie/generator/swagger/param_description/builder.rb, line 35
def with_in(http_method:, default_in_value: nil)
  @in = Apipie::Generator::Swagger::ParamDescription::In.new(
    @param_description,
    in_schema: @in_schema,
    default_in_value: default_in_value,
    http_method: http_method
  )

  self
end
with_name(prefix: nil) click to toggle source

@param [String, nil] prefix

# File lib/apipie/generator/swagger/param_description/builder.rb, line 12
def with_name(prefix: nil)
  @name = Apipie::Generator::Swagger::ParamDescription::Name.
    new(@param_description, prefixed_by: prefix)

  self
end
with_type(with_null:) click to toggle source

@param [TrueClass, FalseClass] with_null

# File lib/apipie/generator/swagger/param_description/builder.rb, line 28
def with_type(with_null:)
  @type = Apipie::Generator::Swagger::ParamDescription::Type.
    new(@param_description, with_null: with_null, controller_method: @controller_method)

  self
end

Private Instance Methods

for_default() click to toggle source
# File lib/apipie/generator/swagger/param_description/builder.rb, line 73
def for_default
  return {} if @param_description.options[:default_value].blank?

  {
    default: @param_description.options[:default_value],
  }
end
for_required() click to toggle source
# File lib/apipie/generator/swagger/param_description/builder.rb, line 65
def for_required
  return {} if !required?

  {
    required: true
  }
end
required?() click to toggle source
# File lib/apipie/generator/swagger/param_description/builder.rb, line 81
def required?
  required_from_path? || @param_description.required
end
required_from_path?() click to toggle source
# File lib/apipie/generator/swagger/param_description/builder.rb, line 85
def required_from_path?
  @param_description.options[:added_from_path] == true
end
warn_optional_without_default_value(definition) click to toggle source
# File lib/apipie/generator/swagger/param_description/builder.rb, line 89
def warn_optional_without_default_value(definition)
  if !required? && !definition.key?(:default)
    method_id =
      if @param_description.is_a?(Apipie::ResponseDescriptionAdapter::PropDesc)
        @controller_method
      else
        Apipie::Generator::Swagger::MethodDescription::Decorator.new(@controller_method).ruby_name
      end

    Apipie::Generator::Swagger::Warning.for_code(
      Apipie::Generator::Swagger::Warning::OPTIONAL_WITHOUT_DEFAULT_VALUE_CODE,
      method_id,
      { parameter: @param_description.name }
    ).warn_through_writer
  end
end