Commit Graph

479 Commits

Author SHA1 Message Date
Sdogruyol 06ced7790b Adding websocket support :) 2015-12-15 23:11:21 +02:00
Sdogruyol 66c8b6d857 Move macros from view to macros 2015-12-14 20:05:46 +02:00
Sdogruyol 5c97942707 Add more documentation 2015-12-13 10:25:04 +02:00
Sdogruyol 8522fd2f56 Fix binding 2015-12-12 21:35:17 +02:00
Sdogruyol 58f9d8c590 Add read config from yml 2015-12-12 20:27:46 +02:00
Sdogruyol 85a383b328 Fix static file handler 2015-12-10 21:20:32 +02:00
Sdogruyol e4da65f1f2 Refactor static file handler 2015-12-10 21:15:28 +02:00
Sdogruyol 21a3c6ad3c Add static file handler 2015-12-10 20:40:39 +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
Serdar Dogruyol ef3c16b2c0 Merge pull request #31 from f/master
Add layout support for render macro.
2015-12-09 21:57:01 +02: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 c05db1f643 Remove unnecessary log on exit 2015-12-09 17:36:13 +02:00
Sdogruyol a67a8508cf Add worker support (experimental) 2015-12-08 22:15:13 +02:00
Serdar Dogruyol a2a082b58f Merge pull request #29 from askn/master
fix default log color
2015-12-07 10:27:16 +02:00
Sdogruyol bee7ce2452 Bind host to 0.0.0.0 2015-12-07 09:17:00 +02:00
Aşkın Gedik fd80fd2f1b fix default log color 2015-12-07 00:21:50 +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 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
Aşkın Gedik e284ba8196 add colorize for logger 2015-11-22 20:06:26 +02:00
Sdogruyol 9cb3cafa62 Add flush on newline Fixes #15 2015-11-21 22:53:06 +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 28d4d5167b Updated logger to be more robust 2015-11-18 22:45:49 +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 fb1d3c3a85 Added handlers to config 2015-11-12 22:48:22 +02:00
Aşkın Gedik 51708ce8e7 parse request body for array 2015-11-10 13:30:16 +02:00
Micah Geisel dea9b2f663 application/json GETs can have no request body. 2015-11-09 16:35:28 -08:00
Sdogruyol dc1e6ed4c2 Changed server initialize message 2015-11-08 17:43:53 +02:00
Sdogruyol 3687897005 Added JSON body parsing 2015-11-06 20:24:38 +02:00
Oleksii Fedorov f658fbe8af Parse request body params only if content type is application/x-www-form-urlencoded 2015-11-05 11:38:06 +01:00
Sdogruyol c49191e650 Fixed match bug 2015-10-31 09:28:25 +02:00
Sdogruyol a7cc498dca Refactored context 2015-10-30 22:34:44 +02:00
Sdogruyol 4ce1bc908f Added response and headers 2015-10-30 22:01:18 +02:00
Serdar Dogruyol ffdaecace4 Added headers to context 2015-10-30 17:06:25 +02:00
Sdogruyol 5892d900ff Added documentation for context, param_parser and route 2015-10-29 17:16:29 +02:00
Sdogruyol 2cbe54b624 Fixed samples url 2015-10-29 11:22:44 +02:00
Sdogruyol 924905f146 Convert parse_request to macro 2015-10-28 22:04:05 +02:00
Sdogruyol 1c53321026 Changed default content-type to text/html 2015-10-28 21:55:17 +02:00
Sdogruyol a505577d5a Removed response 2015-10-28 20:53:26 +02:00
Sdogruyol 5376eb8bb2 Added context specs 2015-10-28 20:52:34 +02:00
Sdogruyol ad6baba12b Added param_parser specs 2015-10-28 20:38:24 +02:00
Sdogruyol 3cc50e0a7e Added param parser 2015-10-28 20:30:27 +02:00
Sdogruyol a8ad95aa67 Removing redundant code 2015-10-28 18:09:45 +02:00
Sdogruyol be58e009af Created logger 2015-10-27 21:01:36 +02:00
Sdogruyol 4a6fb6cf66 Now supports multiple query strings 2015-10-26 20:49:28 +02:00
Sdogruyol efe75196f7 Added request body parsing 2015-10-26 20:25:10 +02:00
Sdogruyol fa00265345 Use macro to generate DSL and support delete,patch verbs 2015-10-24 22:20:39 +03:00
Sdogruyol cd6f54b714 Removed redundant variable 2015-10-24 19:09:56 +03:00
Sdogruyol 5749a7db60 Formatted 2015-10-23 22:54:18 +03:00
Sdogruyol 5057bd039c Fix typo in require 2015-10-23 22:48:30 +03:00
Sdogruyol 5ca84fea4c Renamed all occurrences to Kemal 2015-10-23 21:33:26 +03:00
Sdogruyol d23eff9acc Updated to Crystal 0.9.0 2015-10-23 20:55:41 +03:00
Juan Wajnerman 77356f7f43 Route parameters have more precedence than query string arguments 2015-05-29 18:24:31 -03:00
Juan Wajnerman 8b1447b68d Accepts requests with query string 2015-05-29 18:21:15 -03:00
Zamith 8cf04b58ca
Move static file handler to be called after the instance handler
This way only routes that are not caught by the instance handler will go
through to the static file handler.
2015-01-31 14:39:50 +00:00
Ary Borenszweig 5c4eaa99e2 Updated to Crystal 0.5.5 2014-12-14 09:08:16 -03:00
Ary Borenszweig 35a0eac2e9 Updated to Crystal 0.5.2 2014-11-06 14:48:02 -03:00
Ary Borenszweig 889debfd59 Receive Frank::Context and allow setting content-type 2014-07-30 20:50:14 -03:00
Ary Borenszweig fc4f648c1a Handle POST request, and some refactors 2014-07-30 19:58:48 -03:00
Juan Wajnerman e601730a0c Frank::Handler instance is not a global variable anymore 2014-07-30 19:27:25 -03:00
Juan Wajnerman 69ed2d4612 Added Frank::Config 2014-07-30 19:17:53 -03:00
Ary Borenszweig a1c8a1b6f1 Pass array of handlers to HTTP::Server 2014-06-12 13:25:36 -03:00
Juan Wajnerman d62aa372b3 Added StaticFileHandler to serve files from "public" directory 2014-06-12 11:23:56 -03:00
Juan Wajnerman c74e7f898b Frank::Handler calls next handlers when the request could not be served 2014-06-12 11:23:35 -03:00
Juan Wajnerman 2eaf44195e Initial commit 2014-06-11 20:41:02 -03:00