travis-api/lib/travis/api/app/base.rb
2014-04-09 16:53:24 -05:00

60 lines
1.6 KiB
Ruby

require 'travis/api/app'
require 'sinatra/base'
class Travis::Api::App
# Superclass for any endpoint and middleware.
# Pulls in relevant helpers and extensions.
class Base < Sinatra::Base
register Extensions::SmartConstants
if ENV['SKYLIGHT_APPLICATION']
require 'skylight'
require 'travis/api/app/skylight/dalli_probe'
require 'travis/api/app/skylight/redis_probe'
require 'travis/api/app/skylight/service_probe'
register ::Skylight::Sinatra
end
error NotImplementedError do
content_type :txt
status 501
"This feature has not yet been implemented. Sorry :(\n\nPull Requests welcome!"
end
error JSON::ParserError do
status 400
"Invalid JSON in request body"
end
# hotfix??
def route_missing
@app ? forward : halt(404)
end
def call(env)
super
rescue Sinatra::NotFound
[404, {'Content-Type' => 'text/plain'}, ['Tell Konstantin to fix this!']]
end
configure do
# We pull in certain protection middleware in App.
# Being token based makes us invulnerable to common
# CSRF attack.
#
# Logging is set up by custom middleware
disable :protection, :logging, :setup
enable :raise_errors
# disable :dump_errors
register :subclass_tracker, :expose_pattern
helpers :respond_with, :mime_types
end
configure :development do
# We want error pages in development, but only
# when we don't have an error handler specified
set :show_exceptions, :after_handler
end
end
end