Compare commits

...

4 Commits

Author SHA1 Message Date
Luna 3c2dcc73e5 Merge remote-tracking branch 'upstream/master' 2020-05-19 16:16:23 -03:00
Todd Sundsted 70684a2cf0
Pick up transitional type aliases. (#566) 2020-05-16 18:22:13 +03:00
Brian J. Cardiff c3c43145b8
Comply exhaustive case check (#560) 2020-04-04 21:26:05 +03:00
Anton Maminov b7506f6fab
allow to set optional response body on redirects (#561) 2020-04-04 21:25:35 +03:00
4 changed files with 18 additions and 1 deletions

View File

@ -118,6 +118,18 @@ describe "Kemal::RouteHandler" do
request = HTTP::Request.new("GET", "/")
client_response = call_request_on_app(request)
client_response.status_code.should eq(302)
client_response.body.should eq("")
client_response.headers.has_key?("Location").should eq(true)
end
it "redirects with body" do
get "/" do |env|
env.redirect "/login", body: "Redirecting to /login"
end
request = HTTP::Request.new("GET", "/")
client_response = call_request_on_app(request)
client_response.status_code.should eq(302)
client_response.body.should eq("Redirecting to /login")
client_response.headers.has_key?("Location").should eq(true)
end
end

View File

@ -17,9 +17,10 @@ class HTTP::Server
@params ||= Kemal::ParamParser.new(@request, route_lookup.params)
end
def redirect(url : String, status_code : Int32 = 302)
def redirect(url : String, status_code : Int32 = 302, *, body : String? = nil)
@response.headers.add "Location", url
@response.status_code = status_code
@response.print(body) if body
end
def route

View File

@ -1,3 +1,5 @@
require "flate"
require "gzip"
require "mime"
# Adds given `Kemal::Handler` to handlers chain.

View File

@ -97,6 +97,8 @@ module Kemal
end
when Array
@json["_json"] = json
else
# Ignore non Array or Hash json values
end
end