github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1/examples/internal/server/responsebody.go (about) 1 package server 2 3 import ( 4 "context" 5 "fmt" 6 7 examples "github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/proto/examplepb" 8 ) 9 10 // Implements of ResponseBodyServiceServer 11 12 type responseBodyServer struct{} 13 14 func newResponseBodyServer() examples.ResponseBodyServiceServer { 15 return new(responseBodyServer) 16 } 17 18 func (s *responseBodyServer) GetResponseBody(ctx context.Context, req *examples.ResponseBodyIn) (*examples.ResponseBodyOut, error) { 19 return &examples.ResponseBodyOut{ 20 Response: &examples.ResponseBodyOut_Response{ 21 Data: req.Data, 22 }, 23 }, nil 24 } 25 26 func (s *responseBodyServer) ListResponseBodies(ctx context.Context, req *examples.ResponseBodyIn) (*examples.RepeatedResponseBodyOut, error) { 27 return &examples.RepeatedResponseBodyOut{ 28 Response: []*examples.RepeatedResponseBodyOut_Response{ 29 { 30 Data: req.Data, 31 }, 32 }, 33 }, nil 34 } 35 36 func (s *responseBodyServer) ListResponseStrings(ctx context.Context, req *examples.ResponseBodyIn) (*examples.RepeatedResponseStrings, error) { 37 if req.Data == "empty" { 38 return &examples.RepeatedResponseStrings{ 39 Values: []string{}, 40 }, nil 41 } 42 return &examples.RepeatedResponseStrings{ 43 Values: []string{"hello", req.Data}, 44 }, nil 45 } 46 47 func (s *responseBodyServer) GetResponseBodyStream(req *examples.ResponseBodyIn, stream examples.ResponseBodyService_GetResponseBodyStreamServer) error { 48 if err := stream.Send(&examples.ResponseBodyOut{ 49 Response: &examples.ResponseBodyOut_Response{ 50 Data: fmt.Sprintf("first %s", req.Data), 51 }, 52 }); err != nil { 53 return err 54 } 55 56 return stream.Send(&examples.ResponseBodyOut{ 57 Response: &examples.ResponseBodyOut_Response{ 58 Data: fmt.Sprintf("second %s", req.Data), 59 }, 60 }) 61 }