Cris Ward
a8cc4f4177
gzip static files options dir listing and etags
...
format
2016-09-18 01:46:16 +01:00
sdogruyol
4cd30839a5
Add gzip helper to enable/disable HTTP::DeflateHandler
2016-09-15 19:35:34 +03:00
Sdogruyol
aea70fd1e5
No need to dup headers
2016-08-13 17:54:11 +03:00
Sijawusz Pur Rahnama
28859fbdb8
Fix parsing JSON params when "charset" is present in "Content-Type" header ( #193 )
...
Resolves case when `Content-Type` headers is passed in form of `application/json; charset=utf-8`
2016-08-11 22:29:29 +03:00
Sdogruyol
d4e96c7b44
Add spec for send_file binary
2016-08-08 21:49:47 +03:00
Sdogruyol
98efbfe341
Improve logging and specs
2016-07-28 21:12:55 +03:00
Sdogruyol
dc3cc74798
Add more specs to common_exception_handler
2016-07-19 23:29:00 +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
09d9e708f1
Introduce Kemal::InitHandler to initialize HTTP::Server::Context with defaults
2016-07-17 18:11:26 +03:00
Sdogruyol
4edebcf8eb
Format
2016-07-17 14:31:45 +03:00
Sdogruyol
09d82ed74b
Add context store
2016-07-14 21:56:01 +03:00
Sdogruyol
24e0824a9b
Better view_specs for layout variables
2016-07-12 00:09:01 +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
20a174b66e
Add extra_options from CLI
2016-07-04 20:23: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
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
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
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
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
40ab34c63d
All specs passing
2016-04-12 20:00:37 +03:00
sdogruyol
05e44e68c6
Updating to instance types
2016-04-12 14:41:09 +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
Sdogruyol
87df71a89a
Refactor specs
2016-03-21 18:29:48 +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
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
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
f66e9cd834
More logger specs
2015-11-20 23:07:10 +02:00
Sdogruyol
28d4d5167b
Updated logger to be more robust
2015-11-18 22:45:49 +02:00
Sdogruyol
79ef2f30f7
Added environment
2015-11-16 23:55:02 +02:00
Sdogruyol
dcba72c891
Added config spec
2015-11-14 23:45:20 +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
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
da23d397c6
Formatted
2015-10-31 08:53:49 +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
a0c909621c
Renamed all occurrences of ctx to env
2015-10-29 11:49:58 +02:00
Sdogruyol
1c53321026
Changed default content-type to text/html
2015-10-28 21:55:17 +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
459f602645
Renamed spec
2015-10-24 19:17:24 +03:00
Sdogruyol
5ca84fea4c
Renamed all occurrences to Kemal
2015-10-23 21:33:26 +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
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
2eaf44195e
Initial commit
2014-06-11 20:41:02 -03:00