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