github.com/jhump/protoreflect@v1.16.0/grpcreflect/adapt.go (about) 1 package grpcreflect 2 3 import ( 4 refv1 "google.golang.org/grpc/reflection/grpc_reflection_v1" 5 refv1alpha "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" 6 ) 7 8 func 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 43 func 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 86 func toV1AlphaResponse(v1 *refv1.ServerReflectionResponse) *refv1alpha.ServerReflectionResponse { 87 var v1alpha refv1alpha.ServerReflectionResponse 88 v1alpha.ValidHost = v1.ValidHost 89 if v1.OriginalRequest != nil { 90 v1alpha.OriginalRequest = toV1AlphaRequest(v1.OriginalRequest) 91 } 92 switch mr := v1.MessageResponse.(type) { 93 case *refv1.ServerReflectionResponse_FileDescriptorResponse: 94 if mr != nil { 95 v1alpha.MessageResponse = &refv1alpha.ServerReflectionResponse_FileDescriptorResponse{ 96 FileDescriptorResponse: &refv1alpha.FileDescriptorResponse{ 97 FileDescriptorProto: mr.FileDescriptorResponse.GetFileDescriptorProto(), 98 }, 99 } 100 } 101 case *refv1.ServerReflectionResponse_AllExtensionNumbersResponse: 102 if mr != nil { 103 v1alpha.MessageResponse = &refv1alpha.ServerReflectionResponse_AllExtensionNumbersResponse{ 104 AllExtensionNumbersResponse: &refv1alpha.ExtensionNumberResponse{ 105 BaseTypeName: mr.AllExtensionNumbersResponse.GetBaseTypeName(), 106 ExtensionNumber: mr.AllExtensionNumbersResponse.GetExtensionNumber(), 107 }, 108 } 109 } 110 case *refv1.ServerReflectionResponse_ListServicesResponse: 111 if mr != nil { 112 svcs := make([]*refv1alpha.ServiceResponse, len(mr.ListServicesResponse.GetService())) 113 for i, svc := range mr.ListServicesResponse.GetService() { 114 svcs[i] = &refv1alpha.ServiceResponse{ 115 Name: svc.GetName(), 116 } 117 } 118 v1alpha.MessageResponse = &refv1alpha.ServerReflectionResponse_ListServicesResponse{ 119 ListServicesResponse: &refv1alpha.ListServiceResponse{ 120 Service: svcs, 121 }, 122 } 123 } 124 case *refv1.ServerReflectionResponse_ErrorResponse: 125 if mr != nil { 126 v1alpha.MessageResponse = &refv1alpha.ServerReflectionResponse_ErrorResponse{ 127 ErrorResponse: &refv1alpha.ErrorResponse{ 128 ErrorCode: mr.ErrorResponse.GetErrorCode(), 129 ErrorMessage: mr.ErrorResponse.GetErrorMessage(), 130 }, 131 } 132 } 133 default: 134 // no value set 135 } 136 return &v1alpha 137 }