Commit graph

159 commits

Author SHA1 Message Date
Serdar Dogruyol
a194bebe31 Merge pull request #123 from f/master
Upgrade ParamParser to make it more convinient.
2016-03-07 13:41:24 +02:00
Fatih Kadir Akın
043d1c8aa2 Add memoization to lazy param parsing 2016-03-07 11:21:37 +02:00
Fatih Kadir Akın
4ee4b66135 Make the param getters lazy to improve performance 2016-03-06 22:29:23 +02:00
Fatih Kadir Akın
42deb95688 Remove merged params to improve performance 2016-03-06 21:46:35 +02:00
Fatih Kadir Akın
53d12534b7 Remove ParamContainer abstraction to make it faster. 2016-03-06 21:43:13 +02:00
Sdogruyol
e3c3154006 Make sure to instantiate null log handler 2016-03-06 20:16:51 +02:00
Fatih Kadir Akın
e53ba1d9da Decouple ParamContainer which makes the code cleaner, and fix kemal.cr
url -- by @sdogruyol
2016-03-06 14:08:59 +02:00
Fatih Kadir Akın
8267ffe2c5 Upgrade ParamParser to make it more convinient.
It now decouples `env.params` to `env.params.query`, `env.params.body`,
`env.params.json` and `env.params.url` and you still can access merged
values using `env.params.all`
2016-03-06 13:22:24 +02:00
Joris Moriau
04ccb973a9 set positions for errors and logger middleware, added 2 views 2016-03-03 21:23:04 +01:00
Armin Pašalić
6759fb2373 Add options to the DSL
As in https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.2 and because it's a nice way to document API
2016-02-25 17:38:57 +01:00
Joris Moriau
8f6b00ba55 decoupled-urlparams-from-routehandler 2016-02-19 12:45:25 +01:00
Joris Moriau
e6d1da6dd2 added small feature 2016-02-17 20:56:19 +01:00
sdogruyol
5a58ee3cbb Format code 2016-02-17 11:52:13 +02:00
Joris Moriau
c5201f01ad added verb for filters and minor improvements 2016-02-17 10:34:01 +01:00
Jerome Gravel-Niquet
69b836a98a use new Kilt 0.3 syntax, add mention in readme for clarity 2016-02-15 12:09:33 -05:00
Joris Moriau
ed769ad700 added configure serve_static 2016-02-15 12:59:26 +01:00
Jerome Gravel-Niquet
9404fa5c80 Abstract template engines with Kilt 2016-02-14 13:37:55 -05:00
Sdogruyol
8c87a3fa67 Replace global macros with methods. Thanks @asterite 2016-02-14 18:52:49 +02:00
Sdogruyol
092f5a2e49 Improve kemal.cr 2016-02-14 15:15:52 +02:00
Joris Moriau
f5b5260ab9 fixed small redundancy. 2016-02-14 13:57:51 +01:00
Joris Moriau
f7975d917d decoupled errors from route-handler 2016-02-14 12:52:32 +01:00
Sdogruyol
88aa9cd497 Remove call_next from RouteHandler 2016-02-14 11:02:16 +02:00
sdogruyol
8f5bc755ae Add logger macro to easily setup custom log_handler 2016-02-12 16:09:15 +02:00
sdogruyol
3c75d727ba Complete decoupling logger 2016-02-12 14:11:34 +02:00
Joris Moriau
3aa22e11c0 - add_filters no longer needs to be called explicitly it will be lazily called if needed.
- the Filter middleware no longer needs to be the first in the handlers array.
- before and after methods will raise an exception if a filter for the requested path is already defined.
2016-02-12 12:03:38 +01:00
sdogruyol
454894820d Fix config 2016-02-12 10:22:52 +02:00
Sdogruyol
850af8819e Start decoupling logger 2016-02-11 23:26:47 +02:00
Sdogruyol
ffc3d6d224 Don't require yaml 2016-02-10 22:02:10 +02:00
Sdogruyol
9de66e2a60 Update CLI wording 2016-02-10 21:58:32 +02:00
TSUYUSATO Kitsune
0f86e59db6 Cache Context#params result 2016-02-10 02:11:18 +09:00
TSUYUSATO Kitsune
55361b3c9a Use 302 to redirect instead of 301
`301` means "Moved Permanently", so browser caches this redirect, it is used when changing server URL.
`302` means "Found", it is used generally (e.g. redirect top page after
login).

Each of `301`, `302`, `303` and `307` means redict, but they are
different. We could choice those status in case.
2016-02-10 00:28:07 +09:00
Sdogruyol
3f3f0d442e Fix Filter namespace 2016-02-07 16:48:49 +02:00
Werner
ab711c22fd Basic filter implementation, similar to Sinatra. 2016-02-07 09:49:38 -04:30
Sdogruyol
467a1b4581 Rename handlers 2016-02-03 22:08:54 +02:00
Aşkın Gedik
8390b96df3 remove unused methods 2016-02-02 17:20:44 +02:00
Serdar Dogruyol
0a1abe9a42 Merge pull request #69 from f/master
Radix-tree already has url param parsing with state-machine implementation which is faster than regex parsing. We don't need regex parsing anymore.
2016-01-26 10:23:39 +02:00
Fatih Kadir Akın
ce1f595c5d Remove param parsing with regex since Radix has state-machine implementation which is a way faster 2016-01-25 22:52:41 +02:00
Serdar Dogruyol
23b09ff645 Merge pull request #68 from f/master
Fix for #67, Radix tree needs path style string
2016-01-25 22:28:25 +02:00
Fatih Kadir Akın
afdb6fb793 Fix for #67, Radix tree needs path style string 2016-01-25 22:22:56 +02:00
Sdogruyol
3b4cdd5323 Rename HTTP::WebSocketHandler::WebSocket to HTTP::WebSocket 2016-01-25 20:56:27 +02:00
Sdogruyol
e223940e5e Replace beryl with f/radix 2016-01-24 20:51:04 +02:00
Fatih Kadir Akın
c14fb3de96 Fix view rendering for Crystal 0.11.0 2016-01-24 19:13:10 +02:00
Sdogruyol
94a73e9ade Update built-in exception route handler 2016-01-24 18:25:21 +02:00
Sdogruyol
02af920a0f Make default content-type text/html 2016-01-24 17:52:24 +02:00
Sdogruyol
fdf38b23c8 Update kemal.cr 2016-01-24 13:31:07 +02:00
Sdogruyol
17f944ef9d Move redirect macro to context def 2016-01-24 12:52:41 +02:00
Sdogruyol
4dd027eb96 Macros spec passing 2016-01-24 12:27:26 +02:00
Sdogruyol
d1f95c0f39 All specs passing except macros 2016-01-24 12:22:25 +02:00
Fatih Kadir Akın
7d0d5add84 Implement radix algorithm for routing (thanks to beryl) 2016-01-22 23:06:13 +02:00
Luis Lavena
df359d66c9 Build Route Regex once to reduce allocations
Right now every `match?` performed against the routes defined result
in a new Regex compiled for the exact same `@path`.

Since `@path` of the Route does not change on every request, we
pre-build it to avoid repeated allocations.

When testing this in release mode (against 0.10.2 [d1e3f0b]):

Before: 32408.48 req/s
After:  34862.07 req/s
2016-01-18 13:48:41 -03:00