...
1 package server
2
3 import (
4 "context"
5 "fmt"
6
7 examples "github.com/grpc-ecosystem/grpc-gateway/examples/internal/proto/examplepb"
8 )
9
10
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 &examples.RepeatedResponseBodyOut_Response{
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 }
62
View as plain text