mirror of
				https://gitea.invidious.io/iv-org/shard-kemal.git
				synced 2024-08-15 00:53:36 +00:00 
			
		
		
		
	Add more types to method signatures
This commit is contained in:
		
							parent
							
								
									efd97b75f9
								
							
						
					
					
						commit
						00217d9545
					
				
					 14 changed files with 34 additions and 34 deletions
				
			
		|  | @ -8,7 +8,7 @@ require "./kemal/helpers/*" | |||
| 
 | ||||
| module Kemal | ||||
|   # Overload of self.run with the default startup logging | ||||
|   def self.run(port = nil) | ||||
|   def self.run(port : Int32? = nil) | ||||
|     self.run port do | ||||
|       log "[#{config.env}] Kemal is ready to lead at #{config.scheme}://#{config.host_binding}:#{config.port}" | ||||
|     end | ||||
|  | @ -22,7 +22,7 @@ module Kemal | |||
|   # The command to run a `Kemal` application. | ||||
|   # The port can be given to `#run` but is optional. | ||||
|   # If not given Kemal will use `Kemal::Config#port` | ||||
|   def self.run(port = nil, &block) | ||||
|   def self.run(port : Int32? = nil, &block) | ||||
|     Kemal::CLI.new | ||||
|     config = Kemal.config | ||||
|     config.setup | ||||
|  |  | |||
|  | @ -4,6 +4,6 @@ module Kemal | |||
|     include HTTP::Handler | ||||
| 
 | ||||
|     abstract def call(context) | ||||
|     abstract def write(message) | ||||
|     abstract def write(message : String) | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ module Kemal | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     private def call_exception_with_status_code(context, exception, status_code) | ||||
|     private def call_exception_with_status_code(context : HTTP::Server::Context, exception : Exception, status_code : Int32) | ||||
|       if Kemal.config.error_handlers.has_key?(status_code) | ||||
|         context.response.content_type = "text/html" unless context.response.headers.has_key?("Content-Type") | ||||
|         context.response.print Kemal.config.error_handlers[status_code].call(context, exception) | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ module Kemal | |||
|       context | ||||
|     end | ||||
| 
 | ||||
|     def write(message) | ||||
|     def write(message : String) | ||||
|       @handler << message | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
|  | @ -93,7 +93,7 @@ module Kemal | |||
|       ERROR_HANDLERS | ||||
|     end | ||||
| 
 | ||||
|     def add_error_handler(status_code, &handler : HTTP::Server::Context, Exception -> _) | ||||
|     def add_error_handler(status_code : Int32, &handler : HTTP::Server::Context, Exception -> _) | ||||
|       ERROR_HANDLERS[status_code] = ->(context : HTTP::Server::Context, error : Exception) { handler.call(context, error).to_s } | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,18 +8,18 @@ HTTP_METHODS   = %w(get post put patch delete options) | |||
| FILTER_METHODS = %w(get post put patch delete options all) | ||||
| 
 | ||||
| {% for method in HTTP_METHODS %} | ||||
|   def {{method.id}}(path, &block : HTTP::Server::Context -> _) | ||||
|   def {{method.id}}(path : String, &block : HTTP::Server::Context -> _) | ||||
|     raise Kemal::Exceptions::InvalidPathStartException.new({{method}}, path) unless Kemal::Utils.path_starts_with_slash?(path) | ||||
|     Kemal::RouteHandler::INSTANCE.add_http_route({{method}}.upcase, path, &block) | ||||
|   end | ||||
| {% end %} | ||||
| 
 | ||||
| def ws(path, &block : HTTP::WebSocket, HTTP::Server::Context -> Void) | ||||
| def ws(path : String, &block : HTTP::WebSocket, HTTP::Server::Context -> Void) | ||||
|   raise Kemal::Exceptions::InvalidPathStartException.new("ws", path) unless Kemal::Utils.path_starts_with_slash?(path) | ||||
|   Kemal::WebSocketHandler.new path, &block | ||||
| end | ||||
| 
 | ||||
| def error(status_code, &block : HTTP::Server::Context, Exception -> _) | ||||
| def error(status_code : Int32, &block : HTTP::Server::Context, Exception -> _) | ||||
|   Kemal.config.add_error_handler status_code, &block | ||||
| end | ||||
| 
 | ||||
|  | @ -28,7 +28,7 @@ end | |||
| #  - after_all, after_get, after_post, after_put, after_patch, after_delete, after_options | ||||
| {% for type in ["before", "after"] %} | ||||
|   {% for method in FILTER_METHODS %} | ||||
|     def {{type.id}}_{{method.id}}(path = "*", &block : HTTP::Server::Context -> _) | ||||
|     def {{type.id}}_{{method.id}}(path : String = "*", &block : HTTP::Server::Context -> _) | ||||
|      Kemal::FilterHandler::INSTANCE.{{type.id}}({{method}}.upcase, path, &block) | ||||
|     end | ||||
|   {% end %} | ||||
|  |  | |||
|  | @ -15,10 +15,10 @@ class HTTP::Server | |||
|     def params | ||||
|       connection_type = @request.headers.fetch("Connection", nil) | ||||
|       @request.url_params ||= unless connection_type == "Upgrade" | ||||
|                                 route_lookup.params | ||||
|                               else | ||||
|                                 ws_route_lookup.params | ||||
|                               end | ||||
|         route_lookup.params | ||||
|       else | ||||
|         ws_route_lookup.params | ||||
|       end | ||||
| 
 | ||||
|       @params ||= if @request.param_parser | ||||
|                     @request.param_parser.not_nil! | ||||
|  | @ -27,7 +27,7 @@ class HTTP::Server | |||
|                   end | ||||
|     end | ||||
| 
 | ||||
|     def redirect(url, status_code = 302) | ||||
|     def redirect(url : String, status_code : Int32 = 302) | ||||
|       @response.headers.add "Location", url | ||||
|       @response.status_code = status_code | ||||
|     end | ||||
|  | @ -48,11 +48,11 @@ class HTTP::Server | |||
|       ws_route_lookup.found? | ||||
|     end | ||||
| 
 | ||||
|     def get(name) | ||||
|     def get(name : String) | ||||
|       @store[name] | ||||
|     end | ||||
| 
 | ||||
|     def set(name, value) | ||||
|     def set(name : String, value : StoreTypes) | ||||
|       @store[name] = value | ||||
|     end | ||||
|   end | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ class HTTP::Request | |||
|   end | ||||
| 
 | ||||
|   # Checks if method contained in _method param is valid one | ||||
|   def self.override_method_valid?(override_method) | ||||
|   def self.override_method_valid?(override_method : String) | ||||
|     return false unless override_method.is_a?(String) | ||||
|     override_method = override_method.upcase | ||||
|     override_method == "PUT" || override_method == "PATCH" || override_method == "DELETE" | ||||
|  |  | |||
|  | @ -63,7 +63,7 @@ module Kemal | |||
|       @@exclude_routes_tree.find(radix_path(env.request.method, env.request.path)).found? | ||||
|     end | ||||
| 
 | ||||
|     private def radix_path(method : String, path) | ||||
|     private def radix_path(method : String, path : String) | ||||
|       "#{self.class}/#{method.downcase}#{path}" | ||||
|     end | ||||
|   end | ||||
|  |  | |||
|  | @ -8,23 +8,23 @@ | |||
| # - Kemal::StaticFileHandler | ||||
| # - Here goes custom handlers | ||||
| # - Kemal::RouteHandler | ||||
| def add_handler(handler) | ||||
| def add_handler(handler : HTTP::Handler) | ||||
|   Kemal.config.add_handler handler | ||||
| end | ||||
| 
 | ||||
| def add_handler(handler, position : Int32) | ||||
| def add_handler(handler : HTTP::Handler, position : Int32) | ||||
|   Kemal.config.add_handler handler, position | ||||
| end | ||||
| 
 | ||||
| # Sets public folder from which the static assets will be served. | ||||
| # By default this is `/public` not `src/public`. | ||||
| def public_folder(path) | ||||
| def public_folder(path : String) | ||||
|   Kemal.config.public_folder = path | ||||
| end | ||||
| 
 | ||||
| # Logs the output via `logger`. | ||||
| # This is the built-in `Kemal::CommonLogHandler` by default which uses STDOUT. | ||||
| def log(message) | ||||
| def log(message : String) | ||||
|   Kemal.config.logger.write "#{message}\n" | ||||
| end | ||||
| 
 | ||||
|  | @ -32,7 +32,7 @@ end | |||
| # This is enabled by default. | ||||
| # | ||||
| #   logging false | ||||
| def logging(status) | ||||
| def logging(status : Bool) | ||||
|   Kemal.config.logging = status | ||||
| end | ||||
| 
 | ||||
|  | @ -57,7 +57,7 @@ end | |||
| # Now that we have a custom logger here's how we use it | ||||
| # | ||||
| #   logger MyCustomLogger.new | ||||
| def logger(logger) | ||||
| def logger(logger : Kemal::BaseLogHandler) | ||||
|   Kemal.config.logger = logger | ||||
|   Kemal.config.add_handler logger | ||||
| end | ||||
|  | @ -81,7 +81,7 @@ end | |||
| #   def call(env) | ||||
| #     headers(env, {"custom-header" => "This is a custom value"}) | ||||
| #   end | ||||
| def headers(env, additional_headers) | ||||
| def headers(env : HTTP::Server::Context, additional_headers : Hash(String, String)) | ||||
|   env.response.headers.merge!(additional_headers) | ||||
| end | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,14 +1,14 @@ | |||
| module Kemal | ||||
|   module Utils | ||||
|     def self.path_starts_with_slash?(path) | ||||
|     def self.path_starts_with_slash?(path : String) | ||||
|       path.starts_with?("/") | ||||
|     end | ||||
| 
 | ||||
|     def self.zip_types(path) # https://github.com/h5bp/server-configs-nginx/blob/master/nginx.conf | ||||
|     def self.zip_types(path : String) # https://github.com/h5bp/server-configs-nginx/blob/master/nginx.conf | ||||
|       [".htm", ".html", ".txt", ".css", ".js", ".svg", ".json", ".xml", ".otf", ".ttf", ".woff", ".woff2"].includes? File.extname(path) | ||||
|     end | ||||
| 
 | ||||
|     def self.mime_type(path) | ||||
|     def self.mime_type(path : String) | ||||
|       case File.extname(path) | ||||
|       when ".txt"          then "text/plain" | ||||
|       when ".htm", ".html" then "text/html" | ||||
|  |  | |||
|  | @ -1,11 +1,11 @@ | |||
| module Kemal | ||||
|   # This is here to represent the logger corresponding to Null Object Pattern. | ||||
|   class NullLogHandler < Kemal::BaseLogHandler | ||||
|     def call(context) | ||||
|     def call(context : HTTP::Server::Context) | ||||
|       call_next(context) | ||||
|     end | ||||
| 
 | ||||
|     def write(message) | ||||
|     def write(message : String) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ module Kemal | |||
|     @handler : HTTP::Server::Context -> String | ||||
|     @method : String | ||||
| 
 | ||||
|     def initialize(@method, @path : String, &handler : HTTP::Server::Context -> _) | ||||
|     def initialize(@method : String, @path : String, &handler : HTTP::Server::Context -> _) | ||||
|       @handler = ->(context : HTTP::Server::Context) do | ||||
|         handler.call(context).to_s | ||||
|       end | ||||
|  |  | |||
|  | @ -6,11 +6,11 @@ module Kemal | |||
|       @context = OpenSSL::SSL::Context::Server.new | ||||
|     end | ||||
| 
 | ||||
|     def key_file=(key_file) | ||||
|     def key_file=(key_file : String) | ||||
|       @context.private_key = key_file | ||||
|     end | ||||
| 
 | ||||
|     def cert_file=(cert_file) | ||||
|     def cert_file=(cert_file : String) | ||||
|       @context.certificate_chain = cert_file | ||||
|     end | ||||
|   end | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue