Commit graph

339 commits

Author SHA1 Message Date
Sijawusz Pur Rahnama
4397a3c7fd Use Response#content_type= 2016-08-08 04:17:58 +02:00
Rayner De Los Santos F
0b92a7fd6c Use http-only cookie for session 2016-08-02 23:41:45 -04:00
sdogruyol
e5a9035a61 Add doc to CommonLogHandler 2016-08-02 13:39:01 +03:00
Sdogruyol
1705852f25 Inject STDOUT by default in CommonLogHandler 2016-08-01 23:21:19 +03:00
Sdogruyol
98efbfe341 Improve logging and specs 2016-07-28 21:12:55 +03:00
Sdogruyol
676ed2aa67 Use send_file in built-in image handler 2016-07-19 21:05:49 +03:00
Sdogruyol
5e297d86f8 Add send_file to helpers 2016-07-19 20:58:04 +03:00
Sdogruyol
b00bc7a202 Add next handler to init_handler_spec 2016-07-17 20:42:00 +03:00
Sdogruyol
d1c788f065 Don't override content_type in Kemal::InitHandler if it's already set 2016-07-17 20:23:45 +03:00
Sdogruyol
646edb24ca Set Content-Type after call_next in Kemal::InitHandler 2016-07-17 19:04:03 +03:00
Sdogruyol
3e3200e23e Oops, forgot call_next(context) on Kemal::InitHandler 2016-07-17 18:15:12 +03:00
Sdogruyol
09d9e708f1 Introduce Kemal::InitHandler to initialize HTTP::Server::Context with defaults 2016-07-17 18:11:26 +03:00
Sdogruyol
725e051723 Document helpers 2016-07-17 17:06:49 +03:00
Sdogruyol
f7484d14d3 Use nested module declaration 2016-07-17 14:43:13 +03:00
Sdogruyol
4edebcf8eb Format 2016-07-17 14:31:45 +03:00
Sdogruyol
6ffa4af0e1 Remove redundat http require and move it to kemal.cr 2016-07-17 14:28:21 +03:00
Sdogruyol
d11b702ee4 More docs 2016-07-17 14:26:22 +03:00
Sdogruyol
8aab44f7cd Fix typo 2016-07-17 14:13:05 +03:00
Sdogruyol
b5ff93c677 Add docs 2016-07-17 14:10:56 +03:00
Sdogruyol
09d82ed74b Add context store 2016-07-14 21:56:01 +03:00
sdogruyol
dee1d1c58b Make macro variables local 2016-07-13 16:24:25 +03:00
sdogruyol
fb5ac9e0b6 Don't remove #write from common_log_handler 2016-07-13 14:42:41 +03:00
Sdogruyol
e6e70fe222 Don't load unless caller and content matches for content_for 2016-07-10 15:01:00 +03:00
Sdogruyol
ce2ffed705 Don't yield content if there's not any content_for it 2016-07-10 13:24:38 +03:00
Sdogruyol
f3175bdb72 Split helpers.cr into helpers/macros.cr and helpers/helpers.cr 2016-07-10 13:03:09 +03:00
Sdogruyol
daac09a859 Add doc for content_for 2016-07-10 13:00:13 +03:00
Sdogruyol
21b194a901 Add content_for and yield_content helpers <3. Thanks @RX14 2016-07-09 19:54:35 +03:00
Sdogruyol
73d6123f3d WIP 2016-07-09 18:57:35 +03:00
Sdogruyol
3ea6a01afc Remove file handler from CommonLogHandler. Log only to STDOUT. Fixes #159 2016-07-05 22:14:00 +03:00
Sdogruyol
9d84d51975 No need to rewind STDOUT and File handler in CommonLogHandler 2016-07-05 20:15:36 +03:00
Sdogruyol
ae25d0a774 Optimize CommonLogHandler to directly use the handler instead of string interpolation 2016-07-05 20:11:03 +03:00
Sdogruyol
20a174b66e Add extra_options from CLI 2016-07-04 20:23:16 +03:00
Sdogruyol
2c0dc7fa63 Read env from KEMAL_ENV instead of -e. Fixes #168 2016-07-03 23:49:16 +03:00
Sdogruyol
19581d6e3e Improve common_exception_handler to handler custom 500 errors. Fixes #175. 2016-07-03 11:13:29 +02:00
Mike Perham
22d6c1773e Remove HTTP prefix, this is a Rack impl convention, not a standard. 2016-06-29 14:52:47 -07:00
Mike Perham
8f5736a057 Need to initialize the session token or forms won't render 2016-06-28 16:46:45 -07:00
Mike Perham
e407d0195c Implement CSRF protection
This adds a middleware which, when activated, will deny any form submission which does not include a valid `authenticity_token` parameter or `http-x-csrf-token` header with the request.

The header and parameter names are identical to the ones supported by Ruby's rack-protection gem for interoperability purposes.
2016-06-28 15:50:43 -07:00
Mike Perham
46b4dc6524 Add Session#delete, more docs 2016-06-27 16:24:03 -07:00
Mike Perham
94db0c8cb8 Implement basic in-memory session store
Sessions are stored in a non-persistent Hash.  Only String values are allowed.  A reaper fiber regularly removes any sessions which expire due to inactivity.
2016-06-27 14:37:40 -07:00
Sdogruyol
0c46bd65da Add X-Powered-By header 2016-06-19 03:22:55 +03:00
Matthew Gerrior
fbbb43dcab Add "headers" helper to make it easier to add headers to response. 2016-06-16 10:33:38 -04:00
sdogruyol
f92d812c32 Format 2016-06-15 08:58:14 +03:00
Omar Roth
ac4a5afc05 Fix ssl and specs for 0.18 2016-06-14 16:18:00 -05:00
Matthew Gerrior
d1f9c4394b Opt for built-in HTTP::Params class instead. 2016-06-14 07:32:13 -04:00
Matthew Gerrior
a5e4bc21f3 Allow multiple values for a single parameter key. 2016-06-11 16:52:07 -04:00
sdogruyol
c9b206d1d6 Remove unnecessary type annotations 2016-05-22 23:34:37 +03:00
sdogruyol
b3ebf40201 Cache request url_params 2016-05-21 15:03:34 +03:00
Sdogruyol
67abb5fff3 Allow 404 error handler to be customizable 2016-05-15 14:58:09 +03:00
Sdogruyol
92d7273759 Inherit response.content type from filter if it's given. Fixes #146. 2016-05-14 11:07:19 +03:00
Ben Jolitz
b73802df0e resolve merge conflict by trusting sdogruyol/master RE property listings 2016-05-07 17:22:08 -07:00
Ben Jolitz
108e732274 rename on_options -> extra_options 2016-05-07 17:18:42 -07:00
Sdogruyol
53df88b9fb Update filters to dont care about block return type 2016-05-06 21:03:24 +03:00
sdogruyol
3b402586f8 Make error handlers also work for filters 2016-05-06 14:08:34 +03:00
sdogruyol
09439dd437 Remove unnecessary views 2016-05-05 23:54:25 +03:00
sdogruyol
12ec74e923 Add instance types for Crystal 0.16.0 2016-05-05 23:35:53 +03:00
sdogruyol
76b5add665 Don't write to context in case of an exception 2016-05-05 23:22:58 +03:00
sdogruyol
6611b976a9 Improve exception handler 2016-05-05 23:12:17 +03:00
sdogruyol
e6d9311895 Start implementing error block 2016-05-05 22:35:36 +03:00
sdogruyol
35239dfaa0 Improve config semantics 2016-05-03 21:11:35 +03:00
Sdogruyol
e077d17943 Remove colorize from common exception handler 2016-04-18 22:17:55 +03:00
Sdogruyol
456724f8e4 Remove colorize from common log handler 2016-04-18 22:16:41 +03:00
Sdogruyol
18efc4601f Add more documentation 2016-04-18 21:40:48 +03:00
Sdogruyol
a8ecbde222 Merge branch 'instance-vars' 2016-04-17 00:04:53 +03:00
sdogruyol
2b9152ff79 Update instance types 2016-04-13 11:00:02 +03:00
sdogruyol
40ab34c63d All specs passing 2016-04-12 20:00:37 +03:00
sdogruyol
b4bc818490 Update handler 2016-04-12 17:35:29 +03:00
sdogruyol
c47c9488fe Return string from context 2016-04-12 17:15:43 +03:00
sdogruyol
05e44e68c6 Updating to instance types 2016-04-12 14:41:09 +03:00
Jerome Gravel-Niquet
e407f52897 Only set @logger when not previously set
This came in contradiction with the docs.
2016-04-11 10:54:59 -04:00
Sdogruyol
65d0af5b5f Update config to use uninitialized server 2016-04-09 17:33:17 +03:00
Sdogruyol
b32099e13b Move server from local scope to config 2016-04-09 17:20:39 +03:00
Sdogruyol
0eb7638b1b Remove redundant at_exit hook 2016-04-09 17:17:11 +03:00
Ben Jolitz
1f809c68c8 Support additional options as part of the Config
This commit adds the ability to add a closure suitable for adding
additional options. It is expected to allow someone to set global,
module or class level variables so they can pass changes/options
suitable for making decisions.
2016-03-30 13:33:51 -07:00
Fatih Kadir Akın
8110788a41 Added return_with macro to break response in the middle of the block. 2016-03-30 00:48:58 +03:00
Serdar Dogruyol
7b1bc43a41 Update dsl.cr 2016-03-23 14:45:18 +02:00
sdogruyol
be418feaf3 Fix WebSocketHandler 2016-03-23 13:21:19 +02:00
Filip Defar
a8ff776b49 Don't convert host_binding to slice when instantiating server 2016-03-22 21:20:21 +01:00
Sdogruyol
fd904cd98d 0.11.0 2016-03-19 15:15:44 +02:00
Sdogruyol
664673f125 Set content-type to text/html on errors.Fixes #130 2016-03-18 20:03:04 +02:00
Fatih Kadir Akın
8402f06bc3 Show backtrace in 500 statuses using inspect_with_backtrace 2016-03-08 13:43:46 +02:00
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
Sdogruyol
788c7241d4 Handle cases when logger can be nil 2016-01-18 17:25:52 +02:00
Sdogruyol
0498801b0d Initialize logger in config 2016-01-17 14:22:47 +02:00
Sdogruyol
51092fbb91 Move logger to config 2016-01-17 14:18:18 +02:00
Sdogruyol
2af3648682 Make logger configurable 2016-01-17 13:08:12 +02:00
Sdogruyol
5fb5a4c6ae Small refactor 2016-01-16 12:56:01 +02:00
sdogruyol
7ffa6700de Update CLI to handle missing ssl_key and ssl_cert 2016-01-15 14:50:11 +02:00
Fatih Kadir Akın
37d40f4fbe Implement SSL handling, move option parser to another file to maintain
easier
2016-01-13 23:31:19 +02:00
sdogruyol
b37dd29d4b Update router to handle method matching 2016-01-13 15:22:50 +02:00
sdogruyol
4c423e967f Refactor parse_url_params 2016-01-13 10:07:37 +02:00
Fatih Kadir Akın
3e8b2ae51c Implement parse_url_params 2016-01-13 00:06:19 +02:00
Sdogruyol
0b4a36953f Started reimplementing router 2016-01-12 21:37:12 +02:00
Sdogruyol
aabfe4ff99 Add log macro 2016-01-08 18:44:37 +02:00
Serdar Dogruyol
2503bc4e3d Merge pull request #45 from aladagemre/master
Add 403 view
2016-01-05 19:24:42 +02:00
Ahmet Emre Aladağ
47f505ff76 Update view.cr 2016-01-05 17:35:07 +02:00
sdogruyol
eb4c82043a Add add_handler macro 2016-01-05 14:20:40 +02:00
Sdogruyol
6a4ed2d9eb Add exception logging. Closes #41 2016-01-04 21:54:58 +02:00
Ahmet Emre Aladağ
87bbb2069f Realm added for Basic Authentication 2016-01-04 20:14:05 +02:00
sdogruyol
7ad319c70d v0.6.0 2016-01-03 22:13:10 +02:00
sdogruyol
c21567fe17 Add macro specs 2016-01-03 13:22:43 +02:00
sdogruyol
211685ee74 Fix basic_auth 2015-12-31 14:03:11 +02:00