class Dox::Entities::Action
Attributes
desc[R]
examples[RW]
name[R]
params[R]
path[R]
request[R]
resource[R]
verb[R]
Public Class Methods
new(details, request)
click to toggle source
# File lib/dox/entities/action.rb, line 7 def initialize(details, request) @request = request @name = details[:action_name] @resource = details[:resource_name] @desc = details[:action_desc] @verb = details[:action_verb] || request.method @path = details[:action_path] || template_path @params = template_params(details[:action_params], details[:action_query_params] || []) @examples = [] validate! end
Private Instance Methods
acquire_defined_params(defined_params)
click to toggle source
# File lib/dox/entities/action.rb, line 53 def acquire_defined_params(defined_params) return [] if defined_params.nil? defined_params.map do |key, value| { name: key, in: 'query', required: value[:required], example: value[:value], description: value[:description].presence || '', schema: { type: value[:type] } } end end
acquire_path_params()
click to toggle source
# File lib/dox/entities/action.rb, line 42 def acquire_path_params return [] if path_params.nil? path_params.map do |param, value| { name: param, in: :path, schema: { type: guess_param_type(value) }, example: value } end end
guess_param_type(param)
click to toggle source
# File lib/dox/entities/action.rb, line 66 def guess_param_type(param) if param =~ /^\d+$/ :number else :string end end
path_params()
click to toggle source
# File lib/dox/entities/action.rb, line 38 def path_params request.path_parameters.symbolize_keys.except(:action, :controller, :format, :subdomain) end
template_params(defined_params, query_params)
click to toggle source
# File lib/dox/entities/action.rb, line 34 def template_params(defined_params, query_params) acquire_path_params + acquire_defined_params(defined_params) + query_params end
template_path()
click to toggle source
/pokemons/1 => pokemons/{id}
# File lib/dox/entities/action.rb, line 25 def template_path path = request.path.dup.presence || request.fullpath.split('?').first path_params.each do |key, value| path.sub!(%r{\/#{value}(\/|$)}, "/{#{key}}\\1") end path end
validate!()
click to toggle source
# File lib/dox/entities/action.rb, line 74 def validate! raise(Error, "Unrecognized HTTP verb #{verb}") unless Util::Http.verb?(verb) end