diff --git a/codec_test.go b/codec_test.go index 879fb66..97a6130 100644 --- a/codec_test.go +++ b/codec_test.go @@ -28,7 +28,7 @@ func TestFrameFlatten(t *testing.T) { Name: &codec.Frame{Data: []byte("test")}, } - buf, err := NewCodec().Marshal(s) + buf, err := NewCodec(codec.Flatten(true)).Marshal(s) if err != nil { t.Fatal(err) } @@ -36,15 +36,3 @@ func TestFrameFlatten(t *testing.T) { t.Fatalf("bytes not equal %s != %s", buf, `test`) } } - -func TestReadBody(t *testing.T) { - s := &struct { - Name string - }{} - c := NewCodec() - b := bytes.NewReader(nil) - err := c.ReadBody(b, s) - if err != nil { - t.Fatal(err) - } -} diff --git a/go.mod b/go.mod index ce6da40..4aef525 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module go.unistack.org/micro-codec-urlencode/v3 go 1.20 require ( - go.unistack.org/micro-proto/v3 v3.3.1 - go.unistack.org/micro/v3 v3.10.14 - google.golang.org/protobuf v1.32.0 + go.unistack.org/micro-proto/v3 v3.4.1 + go.unistack.org/micro/v3 v3.10.88 + google.golang.org/protobuf v1.34.2 ) diff --git a/go.sum b/go.sum index 3a09de1..80616d0 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,12 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.unistack.org/micro-proto/v3 v3.3.1 h1:nQ0MtWvP2G3QrpOgawVOPhpZZYkq6umTGDqs8FxJYIo= go.unistack.org/micro-proto/v3 v3.3.1/go.mod h1:cwRyv8uInM2I7EbU7O8Fx2Ls3N90Uw9UCCcq4olOdfE= +go.unistack.org/micro-proto/v3 v3.4.1 h1:UTjLSRz2YZuaHk9iSlVqqsA50JQNAEK2ZFboGqtEa9Q= +go.unistack.org/micro-proto/v3 v3.4.1/go.mod h1:okx/cnOhzuCX0ggl/vToatbCupi0O44diiiLLsZ93Zo= go.unistack.org/micro/v3 v3.10.14 h1:7fgLpwGlCN67twhwtngJDEQvrMkUBDSA5vzZqxIDqNE= go.unistack.org/micro/v3 v3.10.14/go.mod h1:uMAc0U/x7dmtICCrblGf0ZLgYegu3VwQAquu+OFCw1Q= +go.unistack.org/micro/v3 v3.10.88 h1:MxlzP+77Y6Kphb3lzHxROL4XfE/WdCQMQpnPv4D9Z8U= +go.unistack.org/micro/v3 v3.10.88/go.mod h1:erMgt3Bl7vQQ0e9UpQyR5NlLiZ9pKeEJ9+1tfYFaqUg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -139,6 +143,8 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/urlencode.go b/urlencode.go index 2ccaa0e..640474f 100644 --- a/urlencode.go +++ b/urlencode.go @@ -3,7 +3,6 @@ package urlencode import ( "encoding/json" - "io" pb "go.unistack.org/micro-proto/v3/codec" "go.unistack.org/micro/v3/codec" @@ -17,10 +16,6 @@ type urlencodeCodec struct { var _ codec.Codec = &urlencodeCodec{} -const ( - flattenTag = "flatten" -) - func (c *urlencodeCodec) Marshal(v interface{}, opts ...codec.Option) ([]byte, error) { if v == nil { return nil, nil @@ -30,8 +25,11 @@ func (c *urlencodeCodec) Marshal(v interface{}, opts ...codec.Option) ([]byte, e for _, o := range opts { o(&options) } - if nv, nerr := rutil.StructFieldByTag(v, options.TagName, flattenTag); nerr == nil { - v = nv + + if options.Flatten { + if nv, nerr := rutil.StructFieldByTag(v, options.TagName, "flatten"); nerr == nil { + v = nv + } } switch m := v.(type) { @@ -59,8 +57,10 @@ func (c *urlencodeCodec) Unmarshal(b []byte, v interface{}, opts ...codec.Option o(&options) } - if nv, nerr := rutil.StructFieldByTag(v, options.TagName, flattenTag); nerr == nil { - v = nv + if options.Flatten { + if nv, nerr := rutil.StructFieldByTag(v, options.TagName, "flatten"); nerr == nil { + v = nv + } } switch m := v.(type) { @@ -90,39 +90,6 @@ func (c *urlencodeCodec) Unmarshal(b []byte, v interface{}, opts ...codec.Option return rutil.Merge(v, rutil.FlattenMap(mp), rutil.Tags([]string{"protobuf", "json", "xml", "yaml"}), rutil.SliceAppend(true)) } -func (c *urlencodeCodec) ReadHeader(conn io.Reader, m *codec.Message, t codec.MessageType) error { - return nil -} - -func (c *urlencodeCodec) ReadBody(conn io.Reader, v interface{}) error { - if v == nil { - return nil - } - - buf, err := io.ReadAll(conn) - if err != nil { - return err - } else if len(buf) == 0 { - return nil - } - - return c.Unmarshal(buf, v) -} - -func (c *urlencodeCodec) Write(conn io.Writer, m *codec.Message, v interface{}) error { - if v == nil { - return nil - } - - buf, err := c.Marshal(v) - if err != nil { - return err - } - - _, err = conn.Write(buf) - return err -} - func (c *urlencodeCodec) String() string { return "urlencode" }