generated from VLADIMIR/template
37 lines
637 B
Go
37 lines
637 B
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
|
|
"google.golang.org/genproto/googleapis/api/httpbody"
|
|
)
|
|
|
|
type rawBodyMarshaler struct {
|
|
runtime.Marshaler
|
|
}
|
|
|
|
func (m *rawBodyMarshaler) NewDecoder(r io.Reader) runtime.Decoder {
|
|
return rawBodyDecoder{
|
|
Decoder: m.Marshaler.NewDecoder(r),
|
|
r: r,
|
|
}
|
|
}
|
|
|
|
type rawBodyDecoder struct {
|
|
runtime.Decoder
|
|
r io.Reader
|
|
}
|
|
|
|
func (d rawBodyDecoder) Decode(v interface{}) error {
|
|
if body, ok := v.(*httpbody.HttpBody); ok {
|
|
data, err := io.ReadAll(d.r)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
body.Data = data
|
|
return nil
|
|
}
|
|
return d.Decoder.Decode(v)
|
|
}
|