module Sinatra::Schema

Constants

VERSION

Public Class Methods

registered(app) click to toggle source
# File lib/sinatra/schema.rb, line 21
def self.registered(app)
  app.helpers ParamParsing
  app.helpers ParamValidation

  app.error(Sinatra::Schema::BadRequest) do |e|
    halt(400, MultiJson.encode(error: e.message))
  end

  app.error(Sinatra::Schema::BadParams) do |e|
    halt(422, MultiJson.encode(error: e.message))
  end

  app.get "/schema" do
    content_type("application/schema+json")
    response.headers["Cache-Control"] = "public, max-age=3600"
    MultiJson.encode(JsonSchema.dump(app.schema_root), pretty: true)
  end
end

Public Instance Methods

resource(path_or_id) { |spec| ... } click to toggle source
# File lib/sinatra/schema.rb, line 44
def resource(path_or_id)
  spec = DSL::Resources.new(self, path_or_id)
  yield(spec)
  schema_root.add_resource(spec.resource)
end
schema_root() click to toggle source
# File lib/sinatra/schema.rb, line 40
def schema_root
  Root.instance
end