module Sinatra::Chiro
Constants
- VERSION
Public Class Methods
registered(app)
click to toggle source
# File lib/sinatra/chiro.rb, line 90 def self.registered(app) CHIRO_APPS << app app.set :erb_file, :help app.set :views_location, File.join(File.dirname(__FILE__), '..', 'views') app.get '/routes' do routes = CHIRO_APPS.select { |a| a.respond_to?(:documentation) }.map { |a| a.documentation.routes } erb_file = settings.erb_file views = settings.views_location erb(erb_file, {:views => views}, :endpoint => routes) end end
Private Class Methods
remove_unknown_param_keys(opts)
click to toggle source
# File lib/sinatra/chiro.rb, line 105 def self.remove_unknown_param_keys(opts) known_options = [:name, :description, :default, :type, :optional, :validator, :comment, :type_description] opts.delete_if { |k| !k.is_a?(Symbol) || !known_options.include?(k)} end
set_param_defaults(opts)
click to toggle source
# File lib/sinatra/chiro.rb, line 110 def self.set_param_defaults(opts) opts[:type] ||= String opts[:optional] ||= true if opts[:optional].nil? end
Public Instance Methods
app_description(description)
click to toggle source
# File lib/sinatra/chiro.rb, line 22 def app_description(description) @app_description = description end
documentation()
click to toggle source
# File lib/sinatra/chiro.rb, line 18 def documentation @documentation ||= Documentation.new(endpoints) end
endpoint(title=nil, description=nil, opts={}) { || ... }
click to toggle source
# File lib/sinatra/chiro.rb, line 26 def endpoint(title=nil, description=nil, opts={}) opts[:title] ||= title opts[:description] ||= description opts[:perform_validation] ||= true @named_params = [] @query_params = [] @forms = [] @possible_errors = [] @response = nil @appname = @app_description || self.name yield opts[:verb] = @verb || :GET opts[:named_params] = @named_params opts[:query_params] = @query_params opts[:forms] = @forms opts[:possible_errors] = @possible_errors opts[:response] = @response opts[:path] = @path opts[:appname] = @appname endpoints << Endpoint.new(opts) end
endpoints()
click to toggle source
# File lib/sinatra/chiro.rb, line 10 def endpoints @endpoints ||= [] end
form(name, description, opts={})
click to toggle source
# File lib/sinatra/chiro.rb, line 57 def form(name, description, opts={}) opts.merge!(:name => name, :description => description) Chiro.remove_unknown_param_keys(opts) Chiro.set_param_defaults(opts) @forms << Parameters::ParameterFactory.validator_from_type(opts) end
get(path, opts = {}, &block)
click to toggle source
Calls superclass method
# File lib/sinatra/chiro.rb, line 74 def get(path, opts = {}, &block) @path = path @verb = :GET super end
named_param(name, description, opts={})
click to toggle source
# File lib/sinatra/chiro.rb, line 50 def named_param(name, description, opts={}) opts.merge!(:name => name, :description => description, :optional => false) Chiro.remove_unknown_param_keys(opts) Chiro.set_param_defaults(opts) @named_params << Parameters::ParameterFactory.validator_from_type(opts) end
possible_error(name, code, description)
click to toggle source
# File lib/sinatra/chiro.rb, line 70 def possible_error(name, code, description) @possible_errors << {:name => name, :code => code, :description => description} end
post(path, opts = {}, &block)
click to toggle source
Calls superclass method
# File lib/sinatra/chiro.rb, line 80 def post(path, opts = {}, &block) @path = path @verb = :POST super end
query_param(name, description, opts={})
click to toggle source
# File lib/sinatra/chiro.rb, line 64 def query_param(name, description, opts={}) opts.merge!(:name => name, :description => description) Chiro.set_param_defaults(opts) @query_params << Parameters::ParameterFactory.validator_from_type(opts) end
response(result)
click to toggle source
# File lib/sinatra/chiro.rb, line 86 def response(result) @response = result end
validator()
click to toggle source
# File lib/sinatra/chiro.rb, line 14 def validator @validator ||= Validation.new(endpoints) end