class Swarker::PathParameters

Constants

IGNORED_PATH_PARAMS
IN_BODY
IN_FORM_DATA
IN_PATH
IN_QUERY
REF

Attributes

parameters[R]

Public Class Methods

new(path_schema) click to toggle source
# File lib/swarker/path_parameters.rb, line 12
def initialize(path_schema)
  @path_schema = HashWithIndifferentAccess.new(path_schema)

  @parameters = parse_parameters
end

Private Instance Methods

accounted_path_params() click to toggle source
# File lib/swarker/path_parameters.rb, line 70
def accounted_path_params
  @path_schema[:extensions][:path_params].select { |k| !IGNORED_PATH_PARAMS.include?(k.to_sym) }
end
accounted_request_params() click to toggle source
# File lib/swarker/path_parameters.rb, line 49
def accounted_request_params
  @path_schema[:requestParameters][:properties]
end
determine_in(parameter, options) click to toggle source
# File lib/swarker/path_parameters.rb, line 74
def determine_in(parameter, options)
  if verb == 'get' || query_params.include?(parameter)
    IN_QUERY
  elsif options[REF]
    IN_BODY
  else
    IN_FORM_DATA
  end
end
in_path() click to toggle source
# File lib/swarker/path_parameters.rb, line 57
def in_path
  accounted_path_params.collect do |parameter, default|
    {
      name:        parameter,
      description: '', # nothing to propose for description
      type:        'string', # assume all path parameters are strings
      default:     default,
      in:          IN_PATH,
      required:    true
    }
  end
end
in_request() click to toggle source
# File lib/swarker/path_parameters.rb, line 24
def in_request
  parameters_from_properties(accounted_request_params).flatten
end
parameters_from_properties(properties, name_prefix = nil) click to toggle source
# File lib/swarker/path_parameters.rb, line 28
def parameters_from_properties(properties, name_prefix = nil)
  properties.collect do |parameter, options|
    if options[:properties]
      parameters_from_properties(options[:properties], parameter)
    else
      param_desc = {
        name:        name_prefix ? "#{name_prefix}[#{parameter}]" : parameter,
        description: options[:description] || '', # blank unless given
        type:        options[:type],
        default:     options[:example],
        in:          determine_in(parameter, options)
      }.compact

      param_desc[:required] = true if require_request_params.include?(parameter)
      param_desc[:schema]   = { REF => options[REF].sub(%r{.json#/}, '').sub(%r{(\.\./)+}, '#/') } if options[REF]

      param_desc
    end
  end
end
parse_parameters() click to toggle source
# File lib/swarker/path_parameters.rb, line 20
def parse_parameters
  in_request + in_path
end
query_params() click to toggle source
# File lib/swarker/path_parameters.rb, line 88
def query_params
  @path_schema[:extensions][:query_params] || []
end
require_request_params() click to toggle source
# File lib/swarker/path_parameters.rb, line 53
def require_request_params
  @path_schema[:requestParameters][:required] || []
end
verb() click to toggle source
# File lib/swarker/path_parameters.rb, line 84
def verb
  @path_schema[:extensions][:method].downcase
end