From 05e44e68c622000dc022abeec1e6c3371617c9a4 Mon Sep 17 00:00:00 2001 From: sdogruyol Date: Tue, 12 Apr 2016 14:41:09 +0300 Subject: [PATCH] Updating to instance types --- spec/route_handler_spec.cr | 3 +-- spec/spec_helper.cr | 2 +- src/kemal/base_log_handler.cr | 2 +- src/kemal/cli.cr | 7 +++++-- src/kemal/common_log_handler.cr | 1 + src/kemal/config.cr | 5 ++++- src/kemal/context.cr | 2 +- src/kemal/helpers.cr | 1 - src/kemal/middleware/filters.cr | 4 ++-- src/kemal/middleware/http_basic_auth.cr | 2 +- src/kemal/param_parser.cr | 6 +++++- src/kemal/request.cr | 2 +- src/kemal/route.cr | 4 ++-- src/kemal/route_handler.cr | 2 +- src/kemal/websocket_handler.cr | 2 +- 15 files changed, 27 insertions(+), 18 deletions(-) diff --git a/spec/route_handler_spec.cr b/spec/route_handler_spec.cr index 2b89bb3..a3a108f 100644 --- a/spec/route_handler_spec.cr +++ b/spec/route_handler_spec.cr @@ -20,7 +20,7 @@ describe "Kemal::RouteHandler" do end it "routes request with multiple query strings" do - get "/" do |env| + get "/" do |env| "hello #{env.params.query["message"]} time #{env.params.query["time"]}" end request = HTTP::Request.new("GET", "/?message=world&time=now") @@ -155,5 +155,4 @@ describe "Kemal::RouteHandler" do client_response.status_code.should eq(302) client_response.headers.has_key?("Location").should eq(true) end - end diff --git a/spec/spec_helper.cr b/spec/spec_helper.cr index 4f829b1..3b04ff8 100644 --- a/spec/spec_helper.cr +++ b/spec/spec_helper.cr @@ -53,5 +53,5 @@ end Spec.after_each do Kemal.config.handlers.clear - Kemal::RouteHandler::INSTANCE.tree = Radix::Tree.new + Kemal::RouteHandler::INSTANCE.tree = Radix::Tree(Route).new end diff --git a/src/kemal/base_log_handler.cr b/src/kemal/base_log_handler.cr index 3495e40..040bab2 100644 --- a/src/kemal/base_log_handler.cr +++ b/src/kemal/base_log_handler.cr @@ -1,7 +1,7 @@ require "http" class Kemal::BaseLogHandler < HTTP::Handler - def initialize(@env) + def initialize(@env : String) end def call(context) diff --git a/src/kemal/cli.cr b/src/kemal/cli.cr index d074f09..c74a9b2 100644 --- a/src/kemal/cli.cr +++ b/src/kemal/cli.cr @@ -2,10 +2,13 @@ require "option_parser" module Kemal class CLI + @config : Kemal::Config + @key_file : String + def initialize @ssl_enabled = false - @key_file = nil - @cert_file = nil + @key_file = "" + @cert_file = "" @config = Kemal.config parse configure_ssl diff --git a/src/kemal/common_log_handler.cr b/src/kemal/common_log_handler.cr index ab03eb3..87eae12 100644 --- a/src/kemal/common_log_handler.cr +++ b/src/kemal/common_log_handler.cr @@ -2,6 +2,7 @@ require "colorize" require "http" class Kemal::CommonLogHandler < Kemal::BaseLogHandler + @handler : IO::FileDescriptor+ getter handler def initialize(@env) diff --git a/src/kemal/config.cr b/src/kemal/config.cr index f9b6b6b..b51322c 100644 --- a/src/kemal/config.cr +++ b/src/kemal/config.cr @@ -2,6 +2,8 @@ module Kemal class Config INSTANCE = Config.new HANDLERS = [] of HTTP::Handler + @ssl : OpenSSL::SSL::Context + property host_binding, ssl, port, env, public_folder, logging, always_rescue, error_handler, serve_static, run @@ -14,8 +16,9 @@ module Kemal @logging = true @logger = nil @always_rescue = true - @error_handler = nil + @error_handler = uninitialized Kemal::CommonExceptionHandler @run = false + @ssl = uninitialized OpenSSL::SSL::Context end def logger diff --git a/src/kemal/context.cr b/src/kemal/context.cr index 333e752..a198ea4 100644 --- a/src/kemal/context.cr +++ b/src/kemal/context.cr @@ -13,7 +13,7 @@ class HTTP::Server end def route_lookup - @route_lookup ||= Kemal::RouteHandler::INSTANCE.lookup_route(@request.override_method as String, @request.path) + Kemal::RouteHandler::INSTANCE.lookup_route(@request.override_method as String, @request.path) end def route_defined? diff --git a/src/kemal/helpers.cr b/src/kemal/helpers.cr index e0309dd..9c1a411 100644 --- a/src/kemal/helpers.cr +++ b/src/kemal/helpers.cr @@ -52,7 +52,6 @@ def logger(logger) Kemal.config.add_handler logger end - def serve_static(status) Kemal.config.serve_static = status end diff --git a/src/kemal/middleware/filters.cr b/src/kemal/middleware/filters.cr index 0402087..2a2c177 100644 --- a/src/kemal/middleware/filters.cr +++ b/src/kemal/middleware/filters.cr @@ -6,7 +6,7 @@ module Kemal::Middleware # This middleware is lazily instantiated and added to the handlers as soon as a call to `after_X` or `before_X` is made. def initialize - @tree = Radix::Tree.new + @tree = Radix::Tree(Array(Kemal::Middleware::Block)).new Kemal.config.add_handler(self) end @@ -68,7 +68,7 @@ module Kemal::Middleware end class Block - property block + property block : (HTTP::Server::Context -> ) def initialize(&@block : HTTP::Server::Context -> _) end diff --git a/src/kemal/middleware/http_basic_auth.cr b/src/kemal/middleware/http_basic_auth.cr index 2b490d5..92ec849 100644 --- a/src/kemal/middleware/http_basic_auth.cr +++ b/src/kemal/middleware/http_basic_auth.cr @@ -13,7 +13,7 @@ module Kemal::Middleware AUTH_MESSAGE = "Could not verify your access level for that URL.\nYou have to login with proper credentials" HEADER_LOGIN_REQUIRED = "Basic realm=\"Login Required\"" - def initialize(@username, @password) + def initialize(@username : String?, @password : String?) end def call(context) diff --git a/src/kemal/param_parser.cr b/src/kemal/param_parser.cr index e7ef0f5..ec0f5f5 100644 --- a/src/kemal/param_parser.cr +++ b/src/kemal/param_parser.cr @@ -9,11 +9,15 @@ class Kemal::ParamParser URL_ENCODED_FORM = "application/x-www-form-urlencoded" APPLICATION_JSON = "application/json" - def initialize(@request) + def initialize(@request : HTTP::Request, @url_params : String? = nil , @override_method : String? = nil) @url = {} of String => String @query = {} of String => String @body = {} of String => String @json = {} of String => AllParamTypes + @url_parsed = false + @query_parsed = false + @body_parsed = false + @json_parsed = false end {% for method in %w(url query body json) %} diff --git a/src/kemal/request.cr b/src/kemal/request.cr index 60dc1cd..946dfed 100644 --- a/src/kemal/request.cr +++ b/src/kemal/request.cr @@ -1,7 +1,7 @@ # Opening HTTP::Request to add override_method property class HTTP::Request property override_method - property url_params + property url_params : Hash(String, String)? def override_method @override_method ||= check_for_method_override! diff --git a/src/kemal/route.cr b/src/kemal/route.cr index de65c3b..f73e0b9 100644 --- a/src/kemal/route.cr +++ b/src/kemal/route.cr @@ -2,9 +2,9 @@ # It takes 3 parameters: Method, path and a block to specify # what action to be done if the route is matched. class Kemal::Route - getter handler + getter handler : (HTTP::Server::Context -> ) getter method - def initialize(@method, @path, &@handler : HTTP::Server::Context -> _) + def initialize(@method : String, @path : String, &@handler : HTTP::Server::Context -> ) end end diff --git a/src/kemal/route_handler.cr b/src/kemal/route_handler.cr index 44f5ff0..6481f90 100644 --- a/src/kemal/route_handler.cr +++ b/src/kemal/route_handler.cr @@ -9,7 +9,7 @@ class Kemal::RouteHandler < HTTP::Handler property tree def initialize - @tree = Radix::Tree.new + @tree = Radix::Tree(Route).new end def call(context) diff --git a/src/kemal/websocket_handler.cr b/src/kemal/websocket_handler.cr index cf13f91..28e39ae 100644 --- a/src/kemal/websocket_handler.cr +++ b/src/kemal/websocket_handler.cr @@ -1,7 +1,7 @@ # Kemal::WebSocketHandler is used for each define WebSocket route. # For each WebSocket route a new handler is created and registered to global handlers. class Kemal::WebSocketHandler < HTTP::WebSocketHandler - def initialize(@path, &@proc : HTTP::WebSocket, HTTP::Server::Context -> Void) + def initialize(@path : String, &@proc : HTTP::WebSocket, HTTP::Server::Context -> Void) Kemal.config.add_ws_handler self end