mirror of
https://github.com/stefanprodan/podinfo.git
synced 2026-04-06 19:16:50 +00:00
35 lines
819 B
Go
35 lines
819 B
Go
package grpc
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
pb "github.com/stefanprodan/podinfo/pkg/api/grpc/headers"
|
|
"go.uber.org/zap"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/metadata"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
|
|
type HeaderServer struct {
|
|
pb.UnimplementedHeaderServiceServer
|
|
config *Config
|
|
logger *zap.Logger
|
|
}
|
|
|
|
func (s *HeaderServer) Header(ctx context.Context, in *pb.HeaderRequest) (*pb.HeaderResponse, error) {
|
|
md, ok := metadata.FromIncomingContext(ctx)
|
|
if !ok {
|
|
return nil, status.Errorf(codes.DataLoss, "UnaryEcho: failed to get metadata")
|
|
}
|
|
|
|
// Creating slices beacause echoing the header metadata can't be predetermined by the proto contract
|
|
res := []string{}
|
|
for i, e := range md {
|
|
res = append(res, i+"="+strings.Join(e, ","))
|
|
}
|
|
|
|
return &pb.HeaderResponse{Headers: res}, nil
|
|
|
|
}
|