class Praxis::Route
Attributes
name[RW]
options[RW]
path[RW]
prefixed_path[RW]
verb[RW]
version[RW]
Public Class Methods
new(verb, path, version='n/a', name:nil, prefixed_path:nil, **options)
click to toggle source
# File lib/praxis/route.rb, line 6 def initialize(verb, path, version='n/a', name:nil, prefixed_path:nil, **options) @verb = verb @path = path @version = version @name = name @options = options @prefixed_path = prefixed_path end
Public Instance Methods
describe()
click to toggle source
# File lib/praxis/route.rb, line 31 def describe result = { verb: verb, path: path.to_s, version: version } result[:name] = name unless name.nil? result[:options] = options if options.any? result end
example(example_hash:{}, params:)
click to toggle source
# File lib/praxis/route.rb, line 15 def example(example_hash:{}, params:) path_param_keys = self.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 } example = { verb: self.verb, url: self.path.expand(path_params), query_params: query_params } end