Commit Graph

1192 Commits

Author SHA1 Message Date
田欧 f45c928a15 chore: use http.Status* instead of hard code (#1482) 2018-08-14 09:51:56 +08:00
Alex 8aef947f6e docs: remove double negative in README.md (#1480)
"not match neither" means that it will match.
2018-08-12 22:54:22 +02:00
田欧 6159213462 unify test data (#1417)
mkdir a test data dir.
2018-08-12 23:38:31 +08:00
田欧 1ae32f3a2c improve render code coverage (#1474)
all code coverage > 99%
2018-08-12 22:02:37 +08:00
田欧 202db4fb11 improve utils code coverage (#1473) 2018-08-12 21:38:07 +08:00
田欧 e5bb4f62a2 chore: add return or remove else for reduce indent (#1470) 2018-08-12 21:17:57 +08:00
田欧 7e64d32269 Attempt to fix #1462 (#1463)
#1462
2018-08-12 10:12:33 +08:00
田欧 8fc8ce0472 small enhance for cleanPath (#1469)
from httprouter patch: https://github.com/julienschmidt/httprouter/pull/243
2018-08-10 20:50:23 +08:00
田欧 1f1bc429ed chore: add test case for source/function of recovery.go (#1467) 2018-08-09 17:20:06 +08:00
田欧 9666ba6738 chore: update top bar header (#1461) 2018-08-07 13:49:31 +08:00
zhanweidu 0552c3bc3a flush operation will overwrite the origin status code (#1460)
The status of responseWriter will be overwrite if flush was called. This is caused by the Flush of http.response.Flush().
2018-08-07 12:41:28 +08:00
Dmitry Dorogin 9b7e7bdce6 Add tests for context.Stream (#1433) 2018-08-07 06:44:32 +08:00
grapeVine e2b4cf6e2d interface implement type check (#1459)
interface implement type check
2018-08-06 23:08:01 +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
vz d17a12591f update assert param(expect, actual) position (#1421)
- update assert param(expect, actual) position
2018-07-03 15:39:18 +08:00
田欧 1c4cbfae59 chore: remove duplicate code (#1418) 2018-07-02 11:06:56 +08:00
田欧 cdd02fa9d6 update error(err) to err (#1416)
the pull request update `return error(err)` to `return err`, and remove `kindOfData`.
2018-07-01 21:10:48 +08:00
田欧 eb9f313144 add comment for context (#1413)
ref #1075 
annotation from go context source.
2018-06-28 17:08:09 +08:00
田欧 c00f21ff23 add go version prerequisite and debug warning (#1394)
* add go version prerequisite and debug warning

* merge duplicate content

* remove duplicate content
2018-06-26 18:56:43 +08:00
田欧 6c6d97ba2e remove hardcode instead of http status value (#1411) 2018-06-26 17:21:32 +08:00
田欧 1f59bad84b add an edge case from httprouter (#1407) 2018-06-23 11:06:27 +08:00
田欧 760d0574db vendor: remove vendor package from example folder (#1402)
updated `vendor.json` is ok.
but set `ignore test` in `vendor.json`, `x/net/context` package only use in `context_test.go`, I don't know why vendor still need it.
please @appleboy review the pull request, thanks a lot.
2018-06-23 00:45:43 +08:00
田欧 8035359102 use strings.Split instead of strings.IndexByte (#1406) 2018-06-23 00:08:58 +08:00
田欧 605aa1c30f example: fix typo for grpc (#1405)
sorry...fixed #1403
2018-06-22 23:44:45 +08:00
田欧 737d2fb7ab add grpc example (#1401)
use grpc helloworld example.
2018-06-22 09:51:06 +08:00
htobenothing bf85b32c1d Add Pusher() function for support http2 server push (#1273)
gin already support http2, while previously not support server push.
Add Pusher() function to extend the ResponseWriter interface.

```golang
// get http.Pusher
 if pusher := c.Writer.Pusher(); pusher != nil {
     // use pusher.Push() to do server push
}
```
<img width="881" alt="screen shot 2018-03-07 at 11 20 49 pm" src="https://user-images.githubusercontent.com/16014993/37100619-680c00c6-225e-11e8-9352-76ec3bd62894.png">
2018-06-21 09:53:52 +08:00
田欧 87d536c001 utils: use strings.Split instead of strings.IndexByte (#1400)
And I test them benchmark:

code:

```go
# stringsbench.go
package stringsbench

import "strings"

func index(part string) string {
	if index := strings.IndexByte(part, ';'); index >= 0 {
		if part := strings.TrimSpace(strings.Split(part, ";")[0]); part != "" {
			return part[0:index]
		}
	}
	return ""
}

func split(part string) string {
	return strings.Split(part, ";")[0]
}
```

```go
# stringsbench_test.go
package stringsbench

import (
	"testing"
)

func BenchmarkIndex(b *testing.B) {
	b.RunParallel(func(pb *testing.PB) {
		for pb.Next() {
			index("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
		}
	})
}

func BenchmarkSplit(b *testing.B) {
	b.RunParallel(func(pb *testing.PB) {
		for pb.Next() {
			split("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
		}
	})
}
```

And the result:

```shell
➜  strings go test --bench=.
goos: darwin
goarch: amd64
BenchmarkIndex-8   	30000000	        46.1 ns/op
BenchmarkSplit-8   	50000000	        35.9 ns/op
PASS
ok  	_/Users/tianou/strings	3.271s
➜  strings go test --bench=.
goos: darwin
goarch: amd64
BenchmarkIndex-8   	30000000	        44.2 ns/op
BenchmarkSplit-8   	50000000	        34.7 ns/op
PASS
ok  	_/Users/tianou/strings	3.156s
➜  strings go test --bench=.
goos: darwin
goarch: amd64
BenchmarkIndex-8   	30000000	        45.6 ns/op
BenchmarkSplit-8   	50000000	        35.3 ns/op
PASS
ok  	_/Users/tianou/strings	3.230s
```
2018-06-21 09:31:43 +08:00
田欧 caf3e350a5 doc: update readme for adding binding about skip validate (#1359)
* update readme for adding binding about skip validate

* update readme for adding binding about skip validate
2018-05-31 14:13:40 +08:00
MW Lim c2f083fc95 minor typo in routergroup.go (#1360) 2018-05-31 11:41:45 +08:00
chainhelen 07cbe116a0 Add and fix the explanation of `HandleContext` (#1371)
Reference this issue #1323 

1. There isn't any eg about `HandleContext`  
2. The `c.Request.Path`  of `HandleContext` Comment  is not right   

Based on the above two points, I pull this request.  
If you think it's unnecessary, I will close this.  
Thx.
2018-05-30 09:19:04 +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
chainhelen 5636afe02d fix bug, return err when failed binding bool (#1350)
* fix bug, return err when failed binding bool

* add test, return err when failed binding bool
2018-05-11 22:40:33 +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 2c82901cea.

* 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
Aurelien Regat-Barrel 6e09ef03b0 Fix typo in panic() message (extra single quote) (#1352)
Also fix the same typo in a comment
2018-05-11 09:57:21 +08:00
田欧 bd4f73af67 support struct pointer (#1342)
* support struct pointer

* add readme
2018-05-01 14:24:18 +08:00
Alexander Lokhman 2282be059b Add support of pointers in form binding (#1336)
* Add support of pointers in form binding

* Add tests for pointer form binding
2018-04-26 22:09:34 +08:00
senhtry 8c24018290 Add Jsonp Support to Context (#1333) 2018-04-26 11:52:19 +08:00
田欧 41f951e0cd support default value for form (#1138)
* support default value for form

* fix bug for nil interface

* use SplitN and optimization code

* add test case

* add test cases for form(own default value)

* fix invalid code

* fix code indent

* assert order
2018-04-25 16:24:03 +08:00
JINNOUCHI Yasushi 814ac9490a Add example to build single binary with templates (#1328) 2018-04-22 15:04:38 +08:00
田欧 dfe37ea6f1 unify assert.Equal usage (#1327)
* unify assert.Equal usage

* fix typo
2018-04-20 10:27:44 +08:00
田欧 248c522e4a Add Contents for README because it too long (#1325) 2018-04-20 09:54:00 +08:00
esplo 3455d7f388 change README for app-engine example because of goapp deprecation (#1324)
the App Engine SDK is superseded by the Cloud SDK
2018-04-19 12:00:22 +08:00
Yoshiyuki Kinjo 6ad7b9c9d3 Fix documentation typo (#1321) 2018-04-17 10:54:40 +08:00
Suhas Karanth 6d913fc343 fix(binding): Expose validator engine used by the default Validator (#1277)
* fix(binding): Expose validator engine used by the default Validator

- Add func ValidatorEngine for returning the underlying validator engine used
  in the default StructValidator implementation.
- Remove the function RegisterValidation from the StructValidator interface
  which made it immpossible to use a StructValidator implementation without the
  validator.v8 library.
- Update and rename test for registering validation
  Test{RegisterValidation => ValidatorEngine}.
- Update readme and example for registering custom validation.
- Add example for registering struct level validation.
- Add documentation for the following binding funcs/types:
  - Binding interface
  - StructValidator interface
  - Validator instance
  - Binding implementations
  - Default func

* fix(binding): Move validator engine getter inside interface

* docs: rm date cmd from custom validation demo
2018-03-29 14:33:07 +08:00
hellojukay 65a65c2edd add gin panic time log (#1270)
* add gin pinic time log

* Update recovery.go
2018-03-20 14:42:51 +08:00
Romain Beuque 3e3f9bca81 doc(graceful-shutdown): failure to ListenAndServe should be a reason to exit (#1287)
Signed-off-by: Romain Beuque <romain.beuque@gmail.com>
2018-03-20 14:05:24 +08:00
Mario Kostelac 5d3f30cfc8 Make "" mode being the same as debug mode (#1250)
Not setting mode explicitly sets gin into debug mode, but it does not
make it possible to retrieve gin mode as Debug since it's set to "".
2018-02-23 09:09:33 +08:00