class Apipie::Generator::Swagger::ParamDescription::PathParamsComposite

Public Class Methods

new(param_descriptions, context) click to toggle source

@param [Array<Apipie::ParamDescription>] param_descriptions @param [Apipie::Generator::Swagger::Context] context

# File lib/apipie/generator/swagger/param_description/path_params_composite.rb, line 4
def initialize(param_descriptions, context)
  @param_descriptions = param_descriptions
  @context = context
  @result = []
end

Public Instance Methods

to_swagger() click to toggle source

@return [Array]

# File lib/apipie/generator/swagger/param_description/path_params_composite.rb, line 11
def to_swagger
  @param_descriptions.each do |desc|
    context = @context.dup

    type = Apipie::Generator::Swagger::TypeExtractor.new(desc.validator).extract

    if type == 'object' && desc.validator.params_ordered.blank?
      warn_param_ignored_in_form_data(desc.name)
      next
    end

    has_nested_params = type == 'object' &&
                        desc.validator.params_ordered.present?

    if has_nested_params
      context.add_to_prefix!(desc.name)

      out = Apipie::Generator::Swagger::ParamDescription::PathParamsComposite
        .new(desc.validator.params_ordered, context)
        .to_swagger

      @result.concat(out)
    else
      param_entry =
        Apipie::Generator::Swagger::ParamDescription::Builder
          .new(desc, in_schema: false, controller_method: context.controller_method)
          .with_description(language: context.language)
          .with_name(prefix: context.prefix)
          .with_type(with_null: context.allow_null?)
          .with_in(
            http_method: context.http_method,
            default_in_value: context.default_in_value
          ).to_swagger

      @result << param_entry
    end
  end

  @result.sort_by { |p| p[:required] ? 0 : 1 }
end

Private Instance Methods

warn_param_ignored_in_form_data(name) click to toggle source
# File lib/apipie/generator/swagger/param_description/path_params_composite.rb, line 54
def warn_param_ignored_in_form_data(name)
  Apipie::Generator::Swagger::Warning.for_code(
    Apipie::Generator::Swagger::Warning::PARAM_IGNORED_IN_FORM_DATA_CODE,
    @context.controller_method.ruby_name,
    { parameter: name }
  ).warn_through_writer
end