Commit graph

170 commits

Author SHA1 Message Date
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
Serdar Dogruyol
564cdcac0b Merge pull request #22 from f/master
Add documentation.
2015-12-04 14:26:55 +02:00
Fatih Kadir Akın
60c3a15ee4 Update README.md 2015-12-04 14:06:18 +02:00
Fatih Kadir Akın
6c1dd90611 Create json.md 2015-12-04 13:54:12 +02:00
Fatih Kadir Akın
eb546315d1 Create http-requests.md 2015-12-04 13:52:39 +02:00
Fatih Kadir Akın
e1f05d316c Update README.md 2015-12-04 13:46:14 +02:00
Fatih Kadir Akın
b5e98f2f9d Create statics.md 2015-12-04 13:45:35 +02:00
Fatih Kadir Akın
4465ed9965 Create rest.md 2015-12-04 13:38:56 +02:00
Fatih Kadir Akın
da4e38ab0f Update tutorial.md 2015-12-04 13:36:06 +02:00
Fatih Kadir Akın
e4c6b12411 Update README.md 2015-12-04 13:35:35 +02:00
Fatih Kadir Akın
51e8c19975 Update README.md 2015-12-04 13:33:43 +02:00
Fatih Kadir Akın
d33e367ece Update README.md 2015-12-04 13:26:50 +02:00
Fatih Kadir Akın
880d2c1430 Create tutorial.md 2015-12-04 13:26:15 +02:00
Fatih Kadir Akın
17ff97307d Create README.md 2015-12-04 13:14:15 +02:00
Serdar Dogruyol
7e04f51e3c Merge pull request #18 from ilatif/master
Added support for magic param `_method` just like Rails, Sinatra.
2015-12-02 22:43:39 +02: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
dfea8df0f7 Clearer installation instructions 2015-12-02 21:02:39 +02:00
Sdogruyol
171459eee9 Add 500 exception spec 2015-12-01 21:52:44 +02:00
Sdogruyol
7f198cab3b Remove unnecessary check 2015-12-01 21:47:49 +02:00
Sdogruyol
17fe691710 Add 500 template 2015-11-29 17:32:31 +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
Sdogruyol
6e22496b92 Add development/production mode to README 2015-11-23 20:52:28 +02:00
Serdar Dogruyol
07b35a00b4 Merge pull request #16 from askn/logger
add colorize for logger
2015-11-22 20:09:36 +02:00
Aşkın Gedik
e284ba8196 add colorize for logger 2015-11-22 20:06:26 +02:00
Serdar Dogruyol
56e3d36d7e Fix Travis link 2015-11-22 11:41:21 +02:00
Sdogruyol
9cb3cafa62 Add flush on newline Fixes #15 2015-11-21 22:53:06 +02:00
Serdar Dogruyol
173bbf7639 Update README.md 2015-11-21 12:29:35 +02:00
Serdar Dogruyol
41b1dbce6e Update shard.yml 2015-11-21 12:29:10 +02:00
Sdogruyol
556247c4ad Revert back to File.write 2015-11-21 00:43:28 +02:00
Sdogruyol
485fed11af Added config env to startup message 2015-11-20 23:12:12 +02:00
Sdogruyol
f66e9cd834 More logger specs 2015-11-20 23:07:10 +02:00
Sdogruyol
0e23e8d9a3 Be sure to close handlers 2015-11-19 20:54:58 +02:00
Sdogruyol
86dfd1a24d Updated benchmark 2015-11-19 20:20:51 +02:00
Sdogruyol
28d4d5167b Updated logger to be more robust 2015-11-18 22:45:49 +02:00
Sdogruyol
639d4a7a48 Updated benchmarks 2015-11-17 21:53:33 +02:00
Sdogruyol
bde69e1cdb Changed default mode to development 2015-11-17 21:43:05 +02:00
Sdogruyol
79ef2f30f7 Added environment 2015-11-16 23:55:02 +02:00
Sdogruyol
0e617dcfb6 Removed redundant code for more performant processing 2015-11-15 17:00:51 +02:00
Sdogruyol
dcba72c891 Added config spec 2015-11-14 23:45:20 +02:00
Sdogruyol
db48f40fe6 Added middleware section to README.md 2015-11-13 21:23:05 +02:00
Sdogruyol
fb1d3c3a85 Added handlers to config 2015-11-12 22:48:22 +02:00
Serdar Dogruyol
cd0e77aacc Merge pull request #11 from askn/json_parse
parse request body for json array
2015-11-10 13:42:30 +02:00
Aşkın Gedik
51708ce8e7 parse request body for array 2015-11-10 13:30:16 +02:00
Serdar Dogruyol
d280dd7f87 Merge pull request #9 from botandrose/patch-1
Fix JSON API sample
2015-11-10 10:58:49 +02:00
Serdar Dogruyol
da0d532447 Merge pull request #10 from botandrose/get_json_with_no_request_body
application/json GETs can have no request body
2015-11-10 10:58:27 +02:00
Micah Geisel
dea9b2f663 application/json GETs can have no request body. 2015-11-09 16:35:28 -08:00
Micah Geisel
c5e2c7e618 Fix JSON API sample. 2015-11-09 16:20:04 -08:00
Sdogruyol
d8ab11f73f Add benchmark section to README.md 2015-11-09 20:57:54 +02:00