lib/cuba.rb in cuba-3.0.0.rc2 vs lib/cuba.rb in cuba-3.0.0.rc3

- old
+ new

@@ -1,10 +1,57 @@ require "rack" +require "time" class Cuba class RedefinitionError < StandardError; end + class Response + attr_accessor :status + + attr :headers + + def initialize(status = 200, headers = { "Content-Type" => "text/html" }) + @status = status + @headers = headers + @body = [] + @length = 0 + end + + def [](key) + @headers[key] + end + + def []=(key, value) + @headers[key] = value + end + + def write(str) + s = str.to_s + + @length += s.bytesize + @headers["Content-Length"] = @length.to_s + @body << s + end + + def redirect(path, status = 302) + @headers = { "Location" => path } + @status = status + end + + def finish + [@status, @headers, @body] + end + + def set_cookie(key, value) + Rack::Utils.set_cookie_header!(@headers, key, value) + end + + def delete_cookie(key, value = {}) + Rack::Utils.delete_cookie_header!(@headers, key, value) + end + end + @@methods = [] class << self undef method_added end @@ -72,10 +119,10 @@ end def call!(env) @env = env @req = Rack::Request.new(env) - @res = Rack::Response.new + @res = Cuba::Response.new # This `catch` statement will either receive a # rack response tuple via a `halt`, or will # fall back to issuing a 404. #