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  }