Sha256: 602a4f8441ed35081a2e38088cdfd5bcb70ed75741ec4dd44a6b3e0bfe06c2cd
Contents?: true
Size: 1.13 KB
Versions: 4
Compression:
Stored size: 1.13 KB
Contents
module Allegro class Server attr_reader :config, :site def initialize config = {}, &blk @config = config.is_a?(Config) ? config : Config.new(config) @config.instance_eval(&blk) if block_given? @site = Allegro::Site.new(@config) end def call env @request = Rack::Request.new env @response = Rack::Response.new return [400, {}, []] unless @request.get? path, mime = @request.path_info.split('.') route = (path || '/').split('/').reject {|i| i.empty? } response = @site.go(route, *(mime ? mime : []), env) @response.body = [response[:body]] @response['Content-Length'] = response[:body].length.to_s unless response[:body].empty? @response['Content-Type'] = Rack::Mime.mime_type(".#{response[:type]}") # Set http cache headers @response['Cache-Control'] = if Allegro.env == 'production' "public, max-age=#{@config[:cache]}" else "no-cache, must-revalidate" end @response['ETag'] = %("#{Digest::SHA1.hexdigest(response[:body])}") @response.status = response[:status] @response.finish end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
allegro-0.0.0pre3 | lib/allegro/server.rb |
allegro-0.0.0pre2 | lib/allegro/server.rb |
allegro-0.0.0pre1 | lib/allegro/server.rb |
allegro-0.0.0pre | lib/allegro/server.rb |