mirror of
				https://gitea.invidious.io/iv-org/shard-kemal.git
				synced 2024-08-15 00:53:36 +00:00 
			
		
		
		
	Merge pull request #23 from ilatif/master
Adding method for doing browser redirection from inside any route.
This commit is contained in:
		
						commit
						af9c9ba3af
					
				
					 3 changed files with 27 additions and 0 deletions
				
			
		
							
								
								
									
										11
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
										
									
									
									
								
							|  | @ -119,6 +119,17 @@ Accessing the environment (query params, body, content_type, headers, status_cod | |||
|   end | ||||
| ``` | ||||
| 
 | ||||
| ### Browser Redirect | ||||
| Just like other things in `kemal`, browser redirection is super simple as well. Use `environment` variable in defined route's corresponding block and call `redirect` on it. | ||||
| 
 | ||||
| ```ruby | ||||
|   # Redirect browser | ||||
|   get "/logout" do |env| | ||||
| 	# important stuff like clearing session etc. | ||||
| 	env.redirect "/login" # redirect to /login page | ||||
|   end | ||||
| ``` | ||||
| 
 | ||||
| ## Middlewares | ||||
| 
 | ||||
| You can create your own middlewares by inheriting from ```HTTP::Handler``` | ||||
|  |  | |||
|  | @ -184,4 +184,15 @@ describe "Kemal::Handler" do | |||
|     response.status_code.should eq(404) | ||||
|   end | ||||
| 
 | ||||
|   it "redirects user to provided url" do | ||||
|     kemal = Kemal::Handler.new | ||||
|     kemal.add_route "GET", "/" do |env| | ||||
|       env.redirect("/login") | ||||
|     end | ||||
|     request = HTTP::Request.new("GET", "/") | ||||
|     response = kemal.call(request) | ||||
|     response.status_code.should eq(301) | ||||
|     response.headers.has_key?("Location").should eq(true) | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -22,6 +22,11 @@ class Kemal::Context | |||
|     @response.content_type | ||||
|   end | ||||
| 
 | ||||
|   def redirect(url) | ||||
|     @response.headers.add "Location", url | ||||
|     @response.status_code = 301 | ||||
|   end | ||||
| 
 | ||||
|   delegate headers, @request | ||||
|   delegate status_code, @response | ||||
|   delegate :"status_code=", @response | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue