Commit Graph

272 Commits

Author SHA1 Message Date
Ismail Gjevori
dbc330b804 Pass MaxMultipartMemory when FormFile is called (#1600)
When `gin.Context.FormFile("...")` is called the `engine.MaxMultipartMemory` is never used. This PR makes sure that the `MaxMultipartMemory` is passed and removes 2 calls to `http.Request.ParseForm` since they are called from `http.Request.ParseMultipartForm`
2018-10-22 23:01:14 +08:00
田欧
6db092f778 chore: add some annotations (#1550)
ref #1075 should all annotations and can close #1075 .
2018-09-15 15:21:54 +08:00
田欧
85f3e78abc chore: remove else instead of return/continue (#1502)
As[ Effective Go](https://golang.org/doc/effective_go.html?#if) about `if` said, remove else statement instead of return/continue statement.
2018-08-20 21:49:24 +08:00
田欧
6073a79ee0
not use protobuf on context but use it on render (#1496) 2018-08-19 17:39:58 +08:00
aljun
efdd3c8b81 Add support for Protobuf format response and unit test (#1479)
`Gin` now have the `protobufBinding` function to check the request format, but didn't have a protobuf response function like `c.YAML()`.
In our company [ByteDance](http://bytedance.com/), the largest internet company using golang in China, we use `gin` to transfer __Protobuf__  instead of __Json__, we have to write some internal library to make some wrappers to achieve that, and the code is not elegant. So we really want such a feature.
2018-08-19 10:45:56 +08:00
syssam
40ab9de4b5 Add BindXML AND ShouldBindXML #1484 (#1485)
Add BindXML AND ShouldBindXML #1484
2018-08-17 09:12:15 +08:00
田欧
647535cd9b Support map as query string or post form parameters (#1383)
* support query map

* add GetQueryMap and unittest

* support post-form map

* add readme for query map

* attempt to fix bug for post-form map when go version is 1.6

* remove duplicate code

* remove comment
2018-08-06 12:07:11 +08:00
Dmitry Dorogin
631cfbd1ef Simplify context error (#1431)
Hello!

Looking through context package and found a little bit complicated switch block. And tried to make it easier.

Thanks!
2018-08-05 13:29:26 +08:00
solos
220e8d3453 return json if jsonp has not callback (#1438)
return json if jsonp has not callback
2018-07-21 00:52:55 +08:00
Rex Lee(李俊)
85221af84c add json ASCII string render (#1358)
add a json render that rendering json as ASCII string
2018-07-03 17:17:08 +08:00
田欧
eb9f313144 add comment for context (#1413)
ref #1075 
annotation from go context source.
2018-06-28 17:08:09 +08:00
田欧
6c6d97ba2e remove hardcode instead of http status value (#1411) 2018-06-26 17:21:32 +08:00
田欧
8035359102 use strings.Split instead of strings.IndexByte (#1406) 2018-06-23 00:08:58 +08:00
Jean-Christophe Lebreton
bf7803815b Serve easily dynamic files with DataFromReader context method (#1304)
* Add DataFromReader context method

* Replace fmt by strconv.FormatInt

* Add pull request link to README
2018-05-12 11:00:42 +08:00
JINNOUCHI Yasushi
995fa8e9ce Fix #216: Enable to call binding multiple times in some formats (#1341)
* Add interface to read body bytes in binding

* Add BindingBody implementation for some binding

* Fix to use `BindBodyBytesKey` for key

* Revert "Fix to use `BindBodyBytesKey` for key"

This reverts commit 2c82901ceab6ae53730a3cfcd9839bee11a08f13.

* Use private-like key for body bytes

* Add tests for BindingBody & ShouldBindBodyWith

* Add note for README

* Remove redundant space between sentences
2018-05-11 10:33:33 +08:00
senhtry
8c24018290 Add Jsonp Support to Context (#1333) 2018-04-26 11:52:19 +08:00
Himanshu Mishra
46662e700b Doc: Fix typo in documentation of Bind (#1204) 2017-12-20 09:32:39 +08:00
田欧
9a4ecc87d6 format some codes style (#1165) 2017-11-11 23:24:51 -06:00
Suhas Karanth
dfb68ce085 feat(context): ShouldBind counterparts for Bind methods (#1047)
* feat(context): ShouldBind counterparts for Bind methods + tests

* docs(readme): Switch examples to use ShouldBind methods

Add section for bind methods types, explain difference in behavior.
Switch all `c.Bind` examples to use `c.ShouldBind`.
2017-10-23 11:14:09 +02:00
Daniel M. Lambea
c9b344118f Moved const 'defaultMemory' to attrib. Engine.MaxMultipartMemory instead. (#1100) 2017-09-07 11:45:16 +08:00
Eason Lin
8902826696 doc(context): add cookie doc (#1088) 2017-08-28 21:38:53 +02:00
Bo-Yi Wu
211c48f040 refactor: using requestHeader internal func (#1083)
* refactor: using requestHeader internal func.

* update

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2017-08-26 12:02:47 +02:00
Dan Markham
b9686e91fa Use standard library for retrieving header (#1081) 2017-08-25 23:53:27 -05:00
田欧
a8fa424ae5 update comment (#1057) 2017-08-16 11:55:50 +08:00
Eason Lin
df37e74fa1 doc(context): more clearer bind doc when input is not valid (#1049) 2017-08-01 12:49:28 +08:00
Eason Lin
7fafb3f4a1 doc(context): add status func comment. (#1042) 2017-07-28 08:50:58 +08:00
Eason Lin
c19aa0598b feat(context): add BindQuery func (#1029)
* feat(context): add BindQuery func, only parse/bind the query string params.

* docs(readme): add BindQuery section.

* docs(readme): fix import.

* docs(readme): separate import
2017-07-19 09:50:05 +02:00
田欧
7180f2ba62 not use tmp var (#1032) 2017-07-17 22:39:39 -05:00
Eason Lin
93b3a0d7ec feat(context): add SaveUploadedFile func. (#1022)
* feat(context): add SaveUploadedFile func.

* feat(context): update multiple upload examples.

* style(example): fix gofmt

* fix(example): add missing return
2017-07-15 22:42:08 -05:00
田欧
aa6d2d29f8 refactor(doc): use space not tab (#1006) 2017-07-11 10:28:08 -05:00
Eason Lin
75ed286c60 feat: add SecureJSON func to prevent json hijacking 2017-07-08 01:21:30 +08:00
田欧
e0fd6238d3 use comma ok and use single line (#984) 2017-07-06 09:49:54 -05:00
田欧
b985857899 update func comment (#981) 2017-07-05 20:28:16 -05:00
Javier Provecho Fernandez
42a34cdc35 docs(context): document keys, errors, and accepted, close #488 2017-07-05 16:55:59 +02:00
Javier Provecho Fernandez
d875f07409 Merge branch 'master' into develop 2017-07-02 14:23:55 +02:00
Javier Provecho Fernandez
68aa2c38da fix(context): switch deprecated bindwith for mustbindwith 2017-06-28 00:46:35 +02:00
Javier Provecho Fernandez
1a9cba2cc7 Merge pull request #855 from gin-gonic/feat/662
feat(context): add idiomatic binding functions for clear err managment
2017-06-28 00:16:34 +02:00
Javier Provecho Fernandez
9a79e3f144 fix(import): switch sse import from gopkg to github 2017-06-27 23:17:02 +02:00
Bo-Yi Wu
1e1e4fc867 Add Makefile to check the following thing (#947)
* Add Makefile to check the following thing.

* vet check
* fmt check
* embedmd check
* misspell check

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* remove unused variable.

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2017-06-12 21:50:42 -05:00
collinmsn
3f95933c3d Add method to return main handler (#930)
Fix #928 Method to get main handler is desired
2017-06-02 03:00:55 -05:00
Javier Provecho Fernandez
5eea51b6c9 feat(context): add cast helpers to c.Keys (#856)
* feat(context): add cast helpers to c.Keys

* Add tests for cast helpers to c.Keys
2017-06-01 20:00:04 -05:00
Ammar Bandukwala
781cbd19f0
panic if err is nil on c.Error
A panic here provides a more informative stack trace than the panic which would otherwise occur while errors are being collected.
2017-05-09 22:30:56 -05:00
Rahul Datta Roy
d4a53101c3 Fix minor type in context.go (#900)
* Fix minor type in context.go

* More spelling fixes in context.go
2017-05-04 09:22:48 +08:00
Bo-Yi Wu
41316b9ca9 feat: add GetRawData func. (#857)
* feat: add GetRawData func.

* update return style

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2017-03-31 08:45:56 +08:00
Javier Provecho
73e5fcd855 feat(context): add idiomatic binding functions for clear err managment 2017-03-29 14:32:12 +00:00
Bo-Yi Wu
ad2dacedd6 feat: Support get value from request header. (#839) 2017-03-24 20:43:23 +08:00
pjgg
6ce1e86a27 chore(errorHandler):new abortWithStatus method with Json body (#800) 2017-02-14 09:11:01 +08:00
mbesancon
2d8477fc42 Fixed typos in Context (#797)
Simple english typos in the Copy() method
2017-02-01 22:47:50 +08:00
Javier Provecho Fernandez
963acc4b0c Fix #198 (#781)
* Add new function to Render interface for writing content type only

* Add support for the new function in Render interface for writing content-type only

* Fix unhandled merge conflict in context_test.go

* Update vendor.json
2017-01-09 16:24:48 +01:00
tsirolnik
c115074d77 Use X-Forwarded-For before X-Real-Ip
Nginx uses X-Real-Ip with its IP instead of the client's IP. Therefore, we should use X-Forwarded-For *before* X-Real-Ip
2017-01-03 23:43:05 +08:00
David Irvine
ebe3580daf Add convenience method to check if websockets required (#779)
* Add convenience method to check if websockets required

* Add tests

* Fix up tests for develop branch
2017-01-02 16:05:30 +08:00
Bo-Yi Wu
5cc3d5955f Support upload single or multiple files.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-12-24 12:25:01 +08:00
Javier Provecho Fernandez
2cab17ba50 Merge pull request #701 from maxatome/patch-1
Context.Get() does not need to test whether Keys is nil or not
2016-12-06 20:39:01 +01:00
Bo-Yi Wu
764e138e32 Merge pull request #755 from gin-gonic/755-app-engine-client-ip
Fix #723
2016-12-06 08:14:11 -06:00
Javier Provecho Fernandez
7e58c80a7c Fix #723 2016-12-06 14:28:01 +01:00
Javier Provecho Fernandez
273e43a27a Merge pull request #724 from chiffa-org/redundant_context_import
Move golang.org/x/net/context.Context interface implementation check to tests
2016-12-05 10:55:06 +01:00
Bo-Yi Wu
6f474cb42d Merge pull request #570 from andreynering/array
Implement QueryArray and PostFormArray methods
2016-12-03 08:12:19 +08:00
Vyacheslav Dubinin
ceb250ba20 Move golang.org/x/net/context.Context interface implementation check to tests 2016-10-19 17:13:38 +03:00
Maxime Soulé
bf8da4a08a Context.Get() does not need to test whether Keys is nil or not 2016-09-09 11:37:22 +02:00
Javier Provecho Fernandez
9e930b9bdd lint code 2016-04-15 01:16:46 +02:00
Javier Provecho Fernandez
4df51ad4f8 Merge pull request #587 from roylou/develop
Write header immediately in AbortWithStatus(), close #585
2016-04-15 00:36:29 +02:00
Javier Provecho
007bd5124a closes #514, code from bobbo@b4f0b50 2016-04-14 23:47:49 +02:00
Roy Lou
4c4444b160 Write header immediately in AbortWithStatus()
Otherwise, caller needs to invoke WriteHeaderNow himself after
AbortWithStatus(), which is error-prone.

Also modified ErrorLoggerT() such that it always writes log to response
body. Otherwise calling AbortWithStatus() will fail to write body because
c.Writer.Written() is set true by WriteHeaderNow().
2016-04-15 00:02:29 +08:00
Kamron Batman
70c104e16c [Cleanup] Typo in context.go
Fixes typo from 'If Parses' to 'It parses'
2016-04-01 16:29:28 -07:00
Andrey Nering
f3ff8f827c Refactor GetQuery and GetPostForm 2016-03-29 21:54:21 -03:00
Andrey Nering
9366e33ffc Implement QueryArray and PostArray methods 2016-03-29 21:48:50 -03:00
Michael Puncel
7171b967a3 s/currect/current 2016-03-07 21:56:46 -08:00
Michael Puncel
13565e1bf5 fix typo in godoc for func (*Context) HandlerName 2016-03-07 20:54:10 -08:00
Manu Mtz.-Almeida
44978ff780 Improves Context documentation
Query(), GetQuery(), PostForm(), GetPostForm()...
2016-01-29 02:42:19 +01:00
Manu Mtz.-Almeida
afc499f306 Adds GetQuery() and GetPostForm() APIs 2016-01-29 02:07:44 +01:00
Manu Mtz.-Almeida
d64a1fb91c Cosmetic changes 2016-01-28 00:35:09 +01:00
Manu Mtz.-Almeida
61fae4997d Improves documentation 2016-01-26 22:40:29 +01:00
Manu Mtz.-Almeida
e9531e5c76 Merge branch 'master' into develop 2016-01-26 20:08:28 +01:00
Manu Mtz.-Almeida
e6d563577d Merge branch 'master' of github.com:gin-gonic/gin 2016-01-26 20:08:14 +01:00
Manu Mtz.-Almeida
4c639a5049 Cosmetic changes:
- Deprecating GetCookie()
2016-01-26 18:36:37 +01:00
Manu Mtz.-Almeida
2fc2a3e782 Rendering error throws a panic() 2016-01-26 18:35:04 +01:00
Manu Mtz.-Almeida
9abb909731 Merge branch 'master' into develop 2016-01-26 15:55:44 +01:00
Manu Mtz.-Almeida
7b4e9a81a5 Cosmetic changes 2016-01-26 15:55:30 +01:00
Manu Mtz.-Almeida
d0cd8b9fd9 Adds Status() method to Context 2016-01-26 14:55:45 +01:00
Brian Wigginton
353fa14750 additional clarification 2015-10-27 12:26:05 -05:00
Brian Wigginton
1541a141ee update docs for context.Abort
The docs were a little unclear as to how to use Abort, and how it will affect the current handler.
2015-10-27 12:22:18 -05:00
Javier Provecho Fernandez
4892650ef8 Merge branch 'se77en-master' into develop 2015-10-02 12:38:32 +02:00
Javier Provecho Fernandez
8e37eb8498 Fix tests for GetCookie() and SetCookie() 2015-10-02 12:37:51 +02:00
Javier Provecho Fernandez
45b72951af Merge branch 'master' of https://github.com/se77en/gin into se77en-master 2015-10-02 11:25:25 +02:00
Javier Provecho Fernandez
558d6b582f Merge branch 'fix' of https://github.com/donnpebe/gin into donnpebe-fix 2015-10-02 09:54:06 +02:00
Damon Zhao
e1d27558b3 add parameters for set cookie 2015-09-08 15:37:20 +08:00
Damon Zhao
f5b1fb44bb Add SetCookie and GetCookie method for Context 2015-08-27 16:04:50 +08:00
Manu Mtz-Almeida
e8bc8f48e9 Merge branch 'master' into develop
Conflicts:
	README.md
	gin.go
	routergroup.go
2015-08-16 18:38:13 +02:00
Manu Mtz-Almeida
5f2f8d9cb4 Better documentation 2015-07-05 03:26:30 +02:00
Javier Provecho Fernandez
7c0c427b2d Fix #252 typo (middlewares -> middleware) 2015-07-03 20:12:01 +02:00
Manu Mtz-Almeida
8f3047814e Comments + IRoutes + IRouter + unexported AbortIndex 2015-07-02 20:24:54 +02:00
Manu Mtz-Almeida
16b08c41c9 Merge branch 'fix_is_aborted_method' of https://github.com/adwinsky/gin 2015-07-02 18:42:41 +02:00
Manu Mtz-Almeida
a20984c2bc Adds comments 2015-07-02 18:42:33 +02:00
Adam Dratwinski
74f5051cb5 Fix IsAborted() method 2015-07-02 13:37:11 +02:00
Donn Pebe
c1719f7e20 Use only the ip part of request RemoteAddr 2015-07-02 01:48:21 +07:00
Manu Mtz-Almeida
95c08d5f84 Adds HandlerName() 2015-06-25 19:44:52 +02:00
Manu Mtz-Almeida
58b5e15870 Adds ForwardedByClientIP option 2015-06-07 13:51:13 +02:00
Manu Mtz-Almeida
70325deb98 c.ClientIP() performance improvement
benchmark                 old ns/op     new ns/op     delta
BenchmarkManyHandlers     4956          4463          -9.95%

benchmark                 old allocs     new allocs     delta
BenchmarkManyHandlers     16             13             -18.75%

benchmark                 old bytes     new bytes     delta
BenchmarkManyHandlers     256           216           -15.62%
2015-06-04 13:15:22 +02:00
Manu Mtz-Almeida
822b995687 c.JSON performance improvement
benchmark                 old ns/op     new ns/op     delta
BenchmarkOneRouteJSON     1143          1053          -7.87%

benchmark                 old allocs     new allocs     delta
BenchmarkOneRouteJSON     4              3              -25.00%

benchmark                 old bytes     new bytes     delta
BenchmarkOneRouteJSON     72            56            -22.22%
2015-06-04 13:08:29 +02:00
Manu Mtz-Almeida
56683d33b1 c.String() performance improvements
```
benchmark                   old ns/op     new ns/op     delta
BenchmarkOneRouteString     448           310           -30.80%

benchmark                   old allocs     new allocs     delta
BenchmarkOneRouteString     1              0              -100.00%

benchmark                   old bytes     new bytes     delta
BenchmarkOneRouteString     48            0             -100.00%
```
2015-06-04 12:53:42 +02:00
Manu Mtz-Almeida
1f56e50083 Using Render() instead of Write() 2015-06-04 05:25:21 +02:00
Manu Mtz-Almeida
1228b03914 Fixing some unit tests 2015-05-31 18:35:28 +02:00
Manu Mtz-Almeida
e60087f223 Fixed documentation error 2015-05-31 17:31:26 +02:00
Manu Mtz-Almeida
835f66fdc9 404 not found performance improvements
benchmark            old ns/op     new ns/op     delta
Benchmark404         737           249           -66.21%
Benchmark404Many     2330          454           -80.52%

benchmark            old allocs     new allocs     delta
Benchmark404         3              0              -100.00%
Benchmark404Many     10             0              -100.00%

benchmark            old bytes     new bytes     delta
Benchmark404         115           68            -40.87%
Benchmark404Many     235           57            -75.74%
2015-05-30 14:45:13 +02:00
Manu Mtz-Almeida
48633f7001 Better documentation 2015-05-29 21:03:41 +02:00
Manu Mtz-Almeida
e899d8a99e Code cleanup + documentation 2015-05-28 03:22:34 +02:00
Manu Mtz-Almeida
af8e099dfd Fixes multipart integration 2015-05-26 16:31:05 +02:00
Manu Mtz-Almeida
500d745123 PostForm() handles multipart post 2015-05-26 16:16:57 +02:00
Manu Mtz-Almeida
195ea88a28 Cosmetic changes 2015-05-26 12:35:05 +02:00
Manu Mtz-Almeida
d209329891 Updates documentation 2015-05-26 12:13:51 +02:00
Manu Mtz-Almeida
865ea804c9 Renames new API for query/postform and params. 2015-05-26 12:08:33 +02:00
Manu Mtz-Almeida
0a9030f9d7 ClientIP() must trim the white spaces 2015-05-24 15:35:08 +02:00
Manu Mtz-Almeida
9163ee543d Merge branch 'develop' 2015-05-22 17:00:07 +02:00
Manu Mtz-Almeida
37b6f6c179 Fixing new errors API 2015-05-22 16:39:15 +02:00
Manu Mtz-Almeida
b7205a6ec2 Fixes new errors API. 2015-05-22 03:43:39 +02:00
Manu Mtz-Almeida
e94247f9ad New errors API!! 2015-05-22 03:25:21 +02:00
Manu Mtz-Almeida
5f76ba2022 Context.Engine renamed to Context.engine 2015-05-22 02:24:13 +02:00
Manu Mtz-Almeida
66251d1741 Simplifies c.File() 2015-05-21 15:49:10 +02:00
Manu Mtz-Almeida
f9952b0545 Experimenting with golang.org/x/net/context 2015-05-18 21:26:29 +02:00
Manu Mtz-Almeida
c467186d20 Renames Negotiate.HTMLPath to Negotiate.HTMLName 2015-05-18 20:52:26 +02:00
Manu Mtz-Almeida
6313545df7 Drops c.Return() API 2015-05-18 20:51:52 +02:00
Manu Mtz-Almeida
21b5154fd7 New rendering pipeline 2015-05-18 16:09:15 +02:00
Manu Mtz-Almeida
947b53d4a2 New Render API 2015-05-18 15:45:24 +02:00
Manu Mtz-Almeida
470b7e1010 Adds support for Server-Sent Events 2015-05-12 18:33:41 +02:00
Manu Mtz-Almeida
99694bb716 Fixes errors 2015-05-12 15:22:13 +02:00
Manu Mtz-Almeida
421793bfba Experiments: HTTP streaming render 2015-05-12 15:17:46 +02:00
Manu Mtz-Almeida
3df5dfdb7f Faster IndentedJSON + unit tests 2015-05-11 01:04:08 +02:00
Manu Mtz-Almeida
d6771dc4a5 Cosmetic changes 2015-05-09 03:35:31 +02:00
Manu Mtz-Almeida
2d8f0a4801 Performance improvements when rendering
- Fast path for JSON, XML and plain text rendering
2015-05-07 12:44:52 +02:00
Manu Mtz-Almeida
eb3e9293ed Renames []HandleFunc to HandlersChain 2015-05-07 11:30:01 +02:00
Manu Mtz-Almeida
79131ac84d Tail call optimization 2015-05-07 11:28:25 +02:00
Manu Mtz-Almeida
495e6e116e Adds IndentedJSON 2015-05-06 22:31:01 +02:00
Manu Mtz-Almeida
f414648384 - More unit tests
- Improves HTML debug render
- InputHolder removed
- More debug logs
2015-05-05 15:06:38 +02:00
Sridhar Ratnakumar
ffd35c365e Fix typo/grammar in function comment 2015-04-25 21:27:04 -07:00
Manu Mtz-Almeida
0a192fb0fa Tons of unit tests 2015-04-09 12:15:02 +02:00
Manu Mtz-Almeida
4d315f474b More unit tests 2015-04-08 14:24:49 +02:00
Manu Mtz-Almeida
8b26264574 Merge branch 'develop' into performance
Conflicts:
	context.go
	context_test.go
	gin_test.go
	recovery_test.go
	utils.go
2015-04-08 13:37:25 +02:00
Manu Mtz-Almeida
ac0ad2fed8 Improves unit tests 2015-04-08 02:58:35 +02:00
Manu Mtz-Almeida
1532be7c10 Context Accepted is an exported variable 2015-04-07 23:28:36 +02:00
Manu Mtz-Almeida
a4eadceb45 Merge branch 'develop' into performance
Conflicts:
	binding/form_mapping.go
	context_test.go
2015-04-07 19:59:43 +02:00
Manu Mtz-Almeida
3abeba82fc Context redirect uses the built-in redirect facility 2015-04-07 12:27:02 +02:00
Manu Mtz-Almeida
1f6304ca25 Cleaning up performance branch 2015-04-07 12:22:38 +02:00
Manu Mtz-Almeida
2915fa0ffe Zero allocation router, first commit 2015-03-31 21:39:06 +02:00
Manu Mtz-Almeida
d4413b6e91 Refactors binding module 2015-03-31 17:51:10 +02:00
Manu Mtz-Almeida
18880f9215 ForwardedFor() is deprecated 2015-03-31 17:44:45 +02:00
Manu Mtz-Almeida
4a37b0808b Refactors Context initialization 2015-03-31 17:39:30 +02:00
Manu Mtz-Almeida
59d949d350 Moves errorMsg to errors.go 2015-03-26 14:10:46 +01:00
Manu Mtz-Almeida
9d59fc51bc math package is missing 2015-03-26 14:07:01 +01:00
Manu Mtz-Almeida
31323f694b AbortIndex is missing 2015-03-26 04:27:34 +01:00
Manu Mtz-Almeida
1e417c7a50 Refactors Context allocation 2015-03-25 19:33:17 +01:00