blob: 661b9250fb4a46c209af78130e501f1834cc2cec [file] [log] [blame]
package grpcreflect
import (
refv1 "google.golang.org/grpc/reflection/grpc_reflection_v1"
refv1alpha "google.golang.org/grpc/reflection/grpc_reflection_v1alpha"
)
func toV1Request(v1alpha *refv1alpha.ServerReflectionRequest) *refv1.ServerReflectionRequest {
var v1 refv1.ServerReflectionRequest
v1.Host = v1alpha.Host
switch mr := v1alpha.MessageRequest.(type) {
case *refv1alpha.ServerReflectionRequest_FileByFilename:
v1.MessageRequest = &refv1.ServerReflectionRequest_FileByFilename{
FileByFilename: mr.FileByFilename,
}
case *refv1alpha.ServerReflectionRequest_FileContainingSymbol:
v1.MessageRequest = &refv1.ServerReflectionRequest_FileContainingSymbol{
FileContainingSymbol: mr.FileContainingSymbol,
}
case *refv1alpha.ServerReflectionRequest_FileContainingExtension:
if mr.FileContainingExtension != nil {
v1.MessageRequest = &refv1.ServerReflectionRequest_FileContainingExtension{
FileContainingExtension: &refv1.ExtensionRequest{
ContainingType: mr.FileContainingExtension.GetContainingType(),
ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(),
},
}
}
case *refv1alpha.ServerReflectionRequest_AllExtensionNumbersOfType:
v1.MessageRequest = &refv1.ServerReflectionRequest_AllExtensionNumbersOfType{
AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType,
}
case *refv1alpha.ServerReflectionRequest_ListServices:
v1.MessageRequest = &refv1.ServerReflectionRequest_ListServices{
ListServices: mr.ListServices,
}
default:
// no value set
}
return &v1
}
func toV1AlphaRequest(v1 *refv1.ServerReflectionRequest) *refv1alpha.ServerReflectionRequest {
var v1alpha refv1alpha.ServerReflectionRequest
v1alpha.Host = v1.Host
switch mr := v1.MessageRequest.(type) {
case *refv1.ServerReflectionRequest_FileByFilename:
if mr != nil {
v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_FileByFilename{
FileByFilename: mr.FileByFilename,
}
}
case *refv1.ServerReflectionRequest_FileContainingSymbol:
if mr != nil {
v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_FileContainingSymbol{
FileContainingSymbol: mr.FileContainingSymbol,
}
}
case *refv1.ServerReflectionRequest_FileContainingExtension:
if mr != nil {
v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_FileContainingExtension{
FileContainingExtension: &refv1alpha.ExtensionRequest{
ContainingType: mr.FileContainingExtension.GetContainingType(),
ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(),
},
}
}
case *refv1.ServerReflectionRequest_AllExtensionNumbersOfType:
if mr != nil {
v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_AllExtensionNumbersOfType{
AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType,
}
}
case *refv1.ServerReflectionRequest_ListServices:
if mr != nil {
v1alpha.MessageRequest = &refv1alpha.ServerReflectionRequest_ListServices{
ListServices: mr.ListServices,
}
}
default:
// no value set
}
return &v1alpha
}
func toV1Response(v1alpha *refv1alpha.ServerReflectionResponse) *refv1.ServerReflectionResponse {
var v1 refv1.ServerReflectionResponse
v1.ValidHost = v1alpha.ValidHost
if v1alpha.OriginalRequest != nil {
v1.OriginalRequest = toV1Request(v1alpha.OriginalRequest)
}
switch mr := v1alpha.MessageResponse.(type) {
case *refv1alpha.ServerReflectionResponse_FileDescriptorResponse:
if mr != nil {
v1.MessageResponse = &refv1.ServerReflectionResponse_FileDescriptorResponse{
FileDescriptorResponse: &refv1.FileDescriptorResponse{
FileDescriptorProto: mr.FileDescriptorResponse.GetFileDescriptorProto(),
},
}
}
case *refv1alpha.ServerReflectionResponse_AllExtensionNumbersResponse:
if mr != nil {
v1.MessageResponse = &refv1.ServerReflectionResponse_AllExtensionNumbersResponse{
AllExtensionNumbersResponse: &refv1.ExtensionNumberResponse{
BaseTypeName: mr.AllExtensionNumbersResponse.GetBaseTypeName(),
ExtensionNumber: mr.AllExtensionNumbersResponse.GetExtensionNumber(),
},
}
}
case *refv1alpha.ServerReflectionResponse_ListServicesResponse:
if mr != nil {
svcs := make([]*refv1.ServiceResponse, len(mr.ListServicesResponse.GetService()))
for i, svc := range mr.ListServicesResponse.GetService() {
svcs[i] = &refv1.ServiceResponse{
Name: svc.GetName(),
}
}
v1.MessageResponse = &refv1.ServerReflectionResponse_ListServicesResponse{
ListServicesResponse: &refv1.ListServiceResponse{
Service: svcs,
},
}
}
case *refv1alpha.ServerReflectionResponse_ErrorResponse:
if mr != nil {
v1.MessageResponse = &refv1.ServerReflectionResponse_ErrorResponse{
ErrorResponse: &refv1.ErrorResponse{
ErrorCode: mr.ErrorResponse.GetErrorCode(),
ErrorMessage: mr.ErrorResponse.GetErrorMessage(),
},
}
}
default:
// no value set
}
return &v1
}