Commit graph

83 commits

Author SHA1 Message Date
Sdogruyol
664673f125 Set content-type to text/html on errors.Fixes #130 2016-03-18 20:03:04 +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
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
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
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
f7975d917d decoupled errors from route-handler 2016-02-14 12:52:32 +01: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
Sdogruyol
850af8819e Start decoupling logger 2016-02-11 23:26:47 +02: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
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
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
Sdogruyol
2af3648682 Make logger configurable 2016-01-17 13:08:12 +02:00
sdogruyol
efcf591581 Remove some unnecessary specs 2016-01-13 10:09:12 +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
sdogruyol
eb4c82043a Add add_handler macro 2016-01-05 14:20:40 +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
Serdar Dogruyol
aaa2ee1e31 Add public_folder macro 2015-12-30 20:16:04 +02:00
Sdogruyol
743fd3682d Add HTTPBasicAuth middleware 2015-12-27 11:53:54 +02:00
Sdogruyol
8b6700695d Update delegate macro in context 2015-12-27 11:17:22 +02:00
Sdogruyol
fbc21b197a Rename to Kemal::WebSocketHandler 2015-12-22 20:51:27 +02:00
Fatih Kadir Akın
2d4edc83dc Add test to make custom renderer macros for projects.
Add documentation
2015-12-18 10:44:47 +02:00
Serdar Dogruyol
88c19f0051 Remove unnecessary handler 2015-12-16 17:06:06 +02:00
Sdogruyol
06ced7790b Adding websocket support :) 2015-12-15 23:11:21 +02:00
Serdar Dogruyol
12c6af7d79 Merge pull request #32 from ilatif/master
Removed env from redirect and changed redirect from method to macro.
2015-12-09 22:27:04 +02:00
Imran Latif
4d1e31cb41 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
2015-12-10 01:24:49 +05:00
Fatih Kadir Akın
9ade49ae20 Add layout support for render macro. It should be improved in the future. 2015-12-09 17:54:49 +02:00
Serdar Dogruyol
2ffb4dccdf Merge pull request #27 from f/master
Add render macro to kemal core.
2015-12-06 20:45:53 +02:00
Sdogruyol
aa0d97aa42 Update .travis.yml 2015-12-06 17:56:04 +02:00
Fatih Kadir Akın
945fa59a6c Add render macro to kemal core to have dynamic rendering mechanism. It actually binds built-in ecr parser to the Kemal as a macro. 2015-12-06 16:55:35 +02:00
Imran Latif
cd69a866d5 Adding method for doing browser redirection from inside any route.
Made some small changes
2015-12-05 02:23:18 +05:00
Imran Latif
d25a611fbd Implemented HTTP HEAD method.
First I tried implementing this solution in such a way that it
explicitly clears body and set `Content-Length` header to body's size.
But for some reason, if I call the URL from cURL then `Content-Length`
header was blank which defeats the very purpose of `HEAD` requests.

I then later anticipated that since `HEAD` would be by-default
implemented by `HTTP::Server` module, there is no need to explicit
clears body and setting `Content-Length` but the way we have written
our previous specs were returning body as well. We could have used some
TestServer kind of thing but if we go to that route we explicitly need
to test non-existent route which I thought would create some
inconsistency among specs.

Crystal has clearly written specs for HEAD requests to make sure body
is not read for them. See
https://github.com/manastech/crystal/commit/acd0b6afb5af438a30529c36b11b
e7954336f23f. I decided to write simple specs which are easy to
maintain in long-run.

We are adding identical HEAD route for every GET route which will make
HEAD requests available for all defined GET requests.

https://github.com/sdogruyol/kemal/issues/19

Added comment for code line which is adding HEAD routes for defined GET routes.
2015-12-04 19:35:14 +05:00
Imran Latif
c42f1f88e9 Added support for magic param _method just like Rails, Sinatra.
Following are the changes made in this commit:

- Added support for magic param `_method` just like Rails, Sinatra
etc.. Browsers which don't support `PUT`, `PATCH` and `DELETE` methods
can simulate them by sending `method` param in request body.

- The default Content-Type to parse request body submitted via forms
etc. is `application/x-www-form-urlencoded`. But if we send Ajax
request in Chrome ($.post) then by-default Content-Type is set to
`application/x-www-form-urlencoded; charset utf-8` which was not
getting matched. I changed the code from `==` to match against a
regular expression using `=~`.

- Print name and color of overridden HTTP method via Logger instead of
printing name and color or request's incoming HTTP method.

Making necessary changes as pointed by @sdogruyol

- Changed method name from`is_override_method_valid?` to
`override_method_valid?`.

- Refactored `if` condition in `override_method_valid?`.
2015-12-03 01:34:16 +05:00
Sdogruyol
171459eee9 Add 500 exception spec 2015-12-01 21:52:44 +02:00
Sdogruyol
e1530f8fd5 Add built-in exception route 2015-11-28 12:39:58 +02:00
Sdogruyol
58013ba005 Add 404 2015-11-27 22:45:13 +02:00
Sdogruyol
9a5934811d Set to development before_each spec 2015-11-25 23:35:04 +02:00