blob: 661b9250fb4a46c209af78130e501f1834cc2cec [file] [log] [blame]
Abhay Kumara2ae5992025-11-10 14:02:24 +00001package grpcreflect
2
3import (
4 refv1 "google.golang.org/grpc/reflection/grpc_reflection_v1"
5 refv1alpha "google.golang.org/grpc/reflection/grpc_reflection_v1alpha"
6)
7
8func toV1Request(v1alpha *refv1alpha.ServerReflectionRequest) *refv1.ServerReflectionRequest {
9 var v1 refv1.ServerReflectionRequest
10 v1.Host = v1alpha.Host
11 switch mr := v1alpha.MessageRequest.(type) {
12 case *refv1alpha.ServerReflectionRequest_FileByFilename:
13 v1.MessageRequest = &refv1.ServerReflectionRequest_FileByFilename{
14 FileByFilename: mr.FileByFilename,
15 }
16 case *refv1alpha.ServerReflectionRequest_FileContainingSymbol:
17 v1.MessageRequest = &refv1.ServerReflectionRequest_FileContainingSymbol{
18 FileContainingSymbol: mr.FileContainingSymbol,
19 }
20 case *refv1alpha.ServerReflectionRequest_FileContainingExtension:
21 if mr.FileContainingExtension != nil {
22 v1.MessageRequest = &refv1.ServerReflectionRequest_FileContainingExtension{
23 FileContainingExtension: &refv1.ExtensionRequest{
24 ContainingType: mr.FileContainingExtension.GetContainingType(),
25 ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(),
26 },
27 }
28 }
29 case *refv1alpha.ServerReflectionRequest_AllExtensionNumbersOfType:
30 v1.MessageRequest = &refv1.ServerReflectionRequest_AllExtensionNumbersOfType{
31 AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType,
32 }
33 case *refv1alpha.ServerReflectionRequest_ListServices:
34 v1.MessageRequest = &refv1.ServerReflectionRequest_ListServices{
35 ListServices: mr.ListServices,
36 }
37 default:
38 // no value set
39 }
40 return &v1
41}
42
43func toV1AlphaRequest(v1 *refv1.ServerReflectionRequest) *refv1alpha.ServerReflectionRequest {
44 var v1alpha refv1alpha.ServerReflectionRequest
45 v1alpha.Host = v1.Host
46 switch mr := v1.MessageRequest.(type) {
47 case *refv1.ServerReflectionRequest_FileByFilename:
48 if mr != nil {
49 v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_FileByFilename{
50 FileByFilename: mr.FileByFilename,
51 }
52 }
53 case *refv1.ServerReflectionRequest_FileContainingSymbol:
54 if mr != nil {
55 v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_FileContainingSymbol{
56 FileContainingSymbol: mr.FileContainingSymbol,
57 }
58 }
59 case *refv1.ServerReflectionRequest_FileContainingExtension:
60 if mr != nil {
61 v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_FileContainingExtension{
62 FileContainingExtension: &refv1alpha.ExtensionRequest{
63 ContainingType: mr.FileContainingExtension.GetContainingType(),
64 ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(),
65 },
66 }
67 }
68 case *refv1.ServerReflectionRequest_AllExtensionNumbersOfType:
69 if mr != nil {
70 v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_AllExtensionNumbersOfType{
71 AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType,
72 }
73 }
74 case *refv1.ServerReflectionRequest_ListServices:
75 if mr != nil {
76 v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_ListServices{
77 ListServices: mr.ListServices,
78 }
79 }
80 default:
81 // no value set
82 }
83 return &v1alpha
84}
85
86func toV1Response(v1alpha *refv1alpha.ServerReflectionResponse) *refv1.ServerReflectionResponse {
87 var v1 refv1.ServerReflectionResponse
88 v1.ValidHost = v1alpha.ValidHost
89 if v1alpha.OriginalRequest != nil {
90 v1.OriginalRequest = toV1Request(v1alpha.OriginalRequest)
91 }
92 switch mr := v1alpha.MessageResponse.(type) {
93 case *refv1alpha.ServerReflectionResponse_FileDescriptorResponse:
94 if mr != nil {
95 v1.MessageResponse = &refv1.ServerReflectionResponse_FileDescriptorResponse{
96 FileDescriptorResponse: &refv1.FileDescriptorResponse{
97 FileDescriptorProto: mr.FileDescriptorResponse.GetFileDescriptorProto(),
98 },
99 }
100 }
101 case *refv1alpha.ServerReflectionResponse_AllExtensionNumbersResponse:
102 if mr != nil {
103 v1.MessageResponse = &refv1.ServerReflectionResponse_AllExtensionNumbersResponse{
104 AllExtensionNumbersResponse: &refv1.ExtensionNumberResponse{
105 BaseTypeName: mr.AllExtensionNumbersResponse.GetBaseTypeName(),
106 ExtensionNumber: mr.AllExtensionNumbersResponse.GetExtensionNumber(),
107 },
108 }
109 }
110 case *refv1alpha.ServerReflectionResponse_ListServicesResponse:
111 if mr != nil {
112 svcs := make([]*refv1.ServiceResponse, len(mr.ListServicesResponse.GetService()))
113 for i, svc := range mr.ListServicesResponse.GetService() {
114 svcs[i] = &refv1.ServiceResponse{
115 Name: svc.GetName(),
116 }
117 }
118 v1.MessageResponse = &refv1.ServerReflectionResponse_ListServicesResponse{
119 ListServicesResponse: &refv1.ListServiceResponse{
120 Service: svcs,
121 },
122 }
123 }
124 case *refv1alpha.ServerReflectionResponse_ErrorResponse:
125 if mr != nil {
126 v1.MessageResponse = &refv1.ServerReflectionResponse_ErrorResponse{
127 ErrorResponse: &refv1.ErrorResponse{
128 ErrorCode: mr.ErrorResponse.GetErrorCode(),
129 ErrorMessage: mr.ErrorResponse.GetErrorMessage(),
130 },
131 }
132 }
133 default:
134 // no value set
135 }
136 return &v1
137}