mirror of
				https://gitea.invidious.io/iv-org/shard-kemal.git
				synced 2024-08-15 00:53:36 +00:00 
			
		
		
		
	Removed env from redirect and changed redirect from method to macro.
Removed `env.redirect` in-favor of `redirect` in-order to make Kemal's API look more like Sinatra. Thanks @sdogruyol and @f for introducing me to macros :-). Binding HTTP::Server to 0.0.0.0
This commit is contained in:
		
							parent
							
								
									d825b2316a
								
							
						
					
					
						commit
						4d1e31cb41
					
				
					 8 changed files with 20 additions and 11 deletions
				
			
		|  | @ -128,9 +128,10 @@ Just like other things in `kemal`, browser redirection is super simple as well. | ||||||
|   # Redirect browser |   # Redirect browser | ||||||
|   get "/logout" do |env| |   get "/logout" do |env| | ||||||
| 	# important stuff like clearing session etc. | 	# important stuff like clearing session etc. | ||||||
| 	env.redirect "/login" # redirect to /login page | 	redirect "/login" # redirect to /login page | ||||||
|   end |   end | ||||||
| ``` | ``` | ||||||
|  | _Make sure to receive `env` as param in defined route's block or you might end-up having compile-time errors._ | ||||||
| 
 | 
 | ||||||
| ## Middlewares | ## Middlewares | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -187,7 +187,7 @@ describe "Kemal::Handler" do | ||||||
|   it "redirects user to provided url" do |   it "redirects user to provided url" do | ||||||
|     kemal = Kemal::Handler.new |     kemal = Kemal::Handler.new | ||||||
|     kemal.add_route "GET", "/" do |env| |     kemal.add_route "GET", "/" do |env| | ||||||
|       env.redirect("/login") |       redirect "/login" | ||||||
|     end |     end | ||||||
|     request = HTTP::Request.new("GET", "/") |     request = HTTP::Request.new("GET", "/") | ||||||
|     response = kemal.call(request) |     response = kemal.call(request) | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								src/kemal.cr
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/kemal.cr
									
										
									
									
									
								
							|  | @ -9,6 +9,9 @@ at_exit do | ||||||
|     opts.on("-e ", "--environment ", "environment") do |env| |     opts.on("-e ", "--environment ", "environment") do |env| | ||||||
|       Kemal.config.env = env |       Kemal.config.env = env | ||||||
|     end |     end | ||||||
|  |     opts.on("-w VALUE", "--workers", "workers") do |workers| | ||||||
|  |       Kemal.config.workers = workers.to_i | ||||||
|  |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   config = Kemal.config |   config = Kemal.config | ||||||
|  | @ -23,7 +26,6 @@ at_exit do | ||||||
| 
 | 
 | ||||||
|   Signal::INT.trap { |   Signal::INT.trap { | ||||||
|     logger.write "Kemal is going to take a rest!\n" |     logger.write "Kemal is going to take a rest!\n" | ||||||
|     logger.write "#{Time.now} - Bye Bye!\n\n" |  | ||||||
|     logger.handler.close |     logger.handler.close | ||||||
|     server.close |     server.close | ||||||
|     exit |     exit | ||||||
|  | @ -37,5 +39,11 @@ at_exit do | ||||||
|     File.read(file_path) |     File.read(file_path) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   workers = Kemal.config.workers | ||||||
|  |   if workers > 1 | ||||||
|  |     logger.write "Kemal is starting with #{workers} workers!" | ||||||
|  |     server.listen_fork workers: workers | ||||||
|  |   else | ||||||
|     server.listen |     server.listen | ||||||
|   end |   end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | @ -5,10 +5,12 @@ module Kemal | ||||||
|     property ssl |     property ssl | ||||||
|     property port |     property port | ||||||
|     property env |     property env | ||||||
|  |     property workers | ||||||
| 
 | 
 | ||||||
|     def initialize |     def initialize | ||||||
|       @port = 3000 |       @port = 3000 | ||||||
|       @env = "development" unless @env |       @env = "development" unless @env | ||||||
|  |       @workers = 1 | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def scheme |     def scheme | ||||||
|  |  | ||||||
|  | @ -22,11 +22,6 @@ class Kemal::Context | ||||||
|     @response.content_type |     @response.content_type | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def redirect(url) |  | ||||||
|     @response.headers.add "Location", url |  | ||||||
|     @response.status_code = 301 |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   delegate headers, @request |   delegate headers, @request | ||||||
|   delegate status_code, @response |   delegate status_code, @response | ||||||
|   delegate :"status_code=", @response |   delegate :"status_code=", @response | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								src/kemal/macros.cr
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/kemal/macros.cr
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | macro redirect(url) | ||||||
|  |   env.response.headers.add "Location", {{url}} | ||||||
|  |   env.response.status_code = 301 | ||||||
|  | end | ||||||
|  | @ -11,7 +11,6 @@ class Kemal::Route | ||||||
| 
 | 
 | ||||||
|   def match?(request) |   def match?(request) | ||||||
|     check_for_method_override!(request) |     check_for_method_override!(request) | ||||||
| 
 |  | ||||||
|     return nil unless request.override_method == @method |     return nil unless request.override_method == @method | ||||||
|     components = request.path.not_nil!.split "/" |     components = request.path.not_nil!.split "/" | ||||||
|     return nil unless components.size == @components.size |     return nil unless components.size == @components.size | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue