| 1234567891011121314151617181920212223242526272829303132333435363738394041 | // Copyright 2014 Manu Martinez-Almeida. All rights reserved.// Use of this source code is governed by a MIT style// license that can be found in the LICENSE file.package bindingimport (	"errors"	"io"	"net/http"	"google.golang.org/protobuf/proto")type protobufBinding struct{}func (protobufBinding) Name() string {	return "protobuf"}func (b protobufBinding) Bind(req *http.Request, obj any) error {	buf, err := io.ReadAll(req.Body)	if err != nil {		return err	}	return b.BindBody(buf, obj)}func (protobufBinding) BindBody(body []byte, obj any) error {	msg, ok := obj.(proto.Message)	if !ok {		return errors.New("obj is not ProtoMessage")	}	if err := proto.Unmarshal(body, msg); err != nil {		return err	}	// Here it's same to return validate(obj), but util now we can't add	// `binding:""` to the struct which automatically generate by gen-proto	return nil	// return validate(obj)}
 |