瀏覽代碼

not use protobuf on context but use it on render (#1496)

田欧 7 年之前
父節點
當前提交
6073a79ee0
共有 5 個文件被更改,包括 9 次插入9 次删除
  1. 5 6
      context.go
  2. 0 0
      render/json.go
  3. 2 2
      render/protobuf.go
  4. 0 0
      render/render.go
  5. 2 1
      render/render_test.go

+ 5 - 6
context.go

@@ -20,7 +20,6 @@ import (
 	"github.com/gin-contrib/sse"
 	"github.com/gin-gonic/gin/binding"
 	"github.com/gin-gonic/gin/render"
-	"github.com/golang/protobuf/proto"
 )
 
 // Content-Type MIME of the most common data formats.
@@ -784,6 +783,11 @@ func (c *Context) YAML(code int, obj interface{}) {
 	c.Render(code, render.YAML{Data: obj})
 }
 
+// ProtoBuf serializes the given struct as ProtoBuf into the response body.
+func (c *Context) ProtoBuf(code int, obj interface{}) {
+	c.Render(code, render.ProtoBuf{Data: obj})
+}
+
 // String writes the given string into the response body.
 func (c *Context) String(code int, format string, values ...interface{}) {
 	c.Render(code, render.String{Format: format, Data: values})
@@ -846,11 +850,6 @@ func (c *Context) Stream(step func(w io.Writer) bool) {
 	}
 }
 
-// ProtoBuf serializes the given struct as ProtoBuf into the response body.
-func (c *Context) ProtoBuf(code int, obj proto.Message) {
-	c.Render(code, render.ProtoBuf{Data: obj})
-}
-
 /************************************/
 /******** CONTENT NEGOTIATION *******/
 /************************************/

+ 0 - 0
render/json.go


+ 2 - 2
render/protobuf.go

@@ -11,7 +11,7 @@ import (
 )
 
 type ProtoBuf struct {
-	Data proto.Message
+	Data interface{}
 }
 
 var protobufContentType = []string{"application/x-protobuf"}
@@ -19,7 +19,7 @@ var protobufContentType = []string{"application/x-protobuf"}
 func (r ProtoBuf) Render(w http.ResponseWriter) error {
 	r.WriteContentType(w)
 
-	bytes, err := proto.Marshal(r.Data)
+	bytes, err := proto.Marshal(r.Data.(proto.Message))
 	if err != nil {
 		return err
 	}

+ 0 - 0
render/render.go


+ 2 - 1
render/render_test.go

@@ -15,10 +15,11 @@ import (
 	"strings"
 	"testing"
 
-	testdata "github.com/gin-gonic/gin/testdata/protoexample"
 	"github.com/golang/protobuf/proto"
 	"github.com/stretchr/testify/assert"
 	"github.com/ugorji/go/codec"
+
+	testdata "github.com/gin-gonic/gin/testdata/protoexample"
 )
 
 // TODO unit tests