travis-web/lib/travis/web/app.rb

50 lines
1.3 KiB
Ruby

require 'rack'
require 'rack/protection/path_traversal'
require 'rack/cache'
class Travis::Web::App
ASSET_DIRS = %r(/(styles|scripts)/)
DEFAULT_ENDPOINT = 'https://api.travis-ci.org'
DEFAULT_PUSHER_KEY = '23ed642e81512118260e'
autoload :Api, 'travis/web/app/api'
autoload :Assets, 'travis/web/app/assets'
autoload :Config, 'travis/web/app/config'
autoload :Files, 'travis/web/app/files'
autoload :Helpers, 'travis/web/app/helpers'
autoload :Filter, 'travis/web/app/filter'
autoload :Terminal, 'travis/web/app/terminal'
Rack.autoload :SSL, 'rack/ssl'
Rack.autoload :Deflater, 'rack/deflater'
include Terminal
attr_accessor :app
def initialize
config = Config.new
announce(config)
@app = Rack::Builder.app do
use Rack::SSL if config.production?
use Rack::Protection::PathTraversal
use Travis::Web::App::Api, config if config.run_api?
# TODO breaks with wrong content length
# use Rack::Cache, verbose: true, metastore: 'heap:/', entitystore: 'heap:/' if config.production?
use Rack::Deflater if config.deflate?
use Travis::Web::App::Assets, config
use Travis::Web::App::Filter, config
run Travis::Web::App::Files.new
end
end
def call(env)
app.call(env)
end
end