class Praxis::Route
Attributes
options[RW]
path[RW]
prefixed_path[RW]
verb[RW]
version[RW]
Public Class Methods
new(verb, path, version = 'n/a', prefixed_path: nil, **options)
click to toggle source
# File lib/praxis/route.rb, line 7 def initialize(verb, path, version = 'n/a', prefixed_path: nil, **options) @verb = verb @path = path @version = version @options = options @prefixed_path = prefixed_path end
Public Instance Methods
describe()
click to toggle source
# File lib/praxis/route.rb, line 30 def describe result = { verb: verb, path: path.to_s, version: version } result[:options] = options if options.any? result end
example(params:, example_hash: {})
click to toggle source
# File lib/praxis/route.rb, line 15 def example(params:, example_hash: {}) path_param_keys = path.named_captures.keys.collect(&:to_sym) param_attributes = params ? params.attributes : {} query_param_keys = param_attributes.keys - path_param_keys required_query_param_keys = query_param_keys.each_with_object([]) do |p, array| array << p if params.attributes[p].options[:required] end path_params = example_hash.select { |k, _v| path_param_keys.include? k } # Let's generate the example only using required params, to avoid mixing incompatible parameters query_params = example_hash.select { |k, _v| required_query_param_keys.include? k } { verb: verb, url: path.expand(path_params.transform_values(&:to_s)), query_params: query_params } end