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 | ||||
|   get "/logout" do |env| | ||||
| 	# important stuff like clearing session etc. | ||||
| 	env.redirect "/login" # redirect to /login page | ||||
| 	redirect "/login" # redirect to /login page | ||||
|   end | ||||
| ``` | ||||
| _Make sure to receive `env` as param in defined route's block or you might end-up having compile-time errors._ | ||||
| 
 | ||||
| ## Middlewares | ||||
| 
 | ||||
|  |  | |||
|  | @ -187,7 +187,7 @@ describe "Kemal::Handler" do | |||
|   it "redirects user to provided url" do | ||||
|     kemal = Kemal::Handler.new | ||||
|     kemal.add_route "GET", "/" do |env| | ||||
|       env.redirect("/login") | ||||
|       redirect "/login" | ||||
|     end | ||||
|     request = HTTP::Request.new("GET", "/") | ||||
|     response = kemal.call(request) | ||||
|  |  | |||
							
								
								
									
										12
									
								
								src/kemal.cr
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								src/kemal.cr
									
										
									
									
									
								
							|  | @ -9,6 +9,9 @@ at_exit do | |||
|     opts.on("-e ", "--environment ", "environment") do |env| | ||||
|       Kemal.config.env = env | ||||
|     end | ||||
|     opts.on("-w VALUE", "--workers", "workers") do |workers| | ||||
|       Kemal.config.workers = workers.to_i | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   config = Kemal.config | ||||
|  | @ -23,7 +26,6 @@ at_exit do | |||
| 
 | ||||
|   Signal::INT.trap { | ||||
|     logger.write "Kemal is going to take a rest!\n" | ||||
|     logger.write "#{Time.now} - Bye Bye!\n\n" | ||||
|     logger.handler.close | ||||
|     server.close | ||||
|     exit | ||||
|  | @ -37,5 +39,11 @@ at_exit do | |||
|     File.read(file_path) | ||||
|   end | ||||
| 
 | ||||
|   server.listen | ||||
|   workers = Kemal.config.workers | ||||
|   if workers > 1 | ||||
|     logger.write "Kemal is starting with #{workers} workers!" | ||||
|     server.listen_fork workers: workers | ||||
|   else | ||||
|     server.listen | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -5,10 +5,12 @@ module Kemal | |||
|     property ssl | ||||
|     property port | ||||
|     property env | ||||
|     property workers | ||||
| 
 | ||||
|     def initialize | ||||
|       @port = 3000 | ||||
|       @env = "development" unless @env | ||||
|       @workers = 1 | ||||
|     end | ||||
| 
 | ||||
|     def scheme | ||||
|  |  | |||
|  | @ -22,11 +22,6 @@ 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 | ||||
|  |  | |||
							
								
								
									
										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) | ||||
|     check_for_method_override!(request) | ||||
| 
 | ||||
|     return nil unless request.override_method == @method | ||||
|     components = request.path.not_nil!.split "/" | ||||
|     return nil unless components.size == @components.size | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| # Kemal render uses built-in ECR to render methods. | ||||
| 
 | ||||
| ## Usage | ||||
| # # Usage | ||||
| # get '/' do | ||||
| #   render 'hello.ecr' | ||||
| # end | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue