github.com/googleapis/api-linter@v1.65.2/locations/method_locations.go (about) 1 // Copyright 2019 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // https://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package locations 16 17 import ( 18 lrpb "cloud.google.com/go/longrunning/autogen/longrunningpb" 19 "github.com/jhump/protoreflect/desc" 20 apb "google.golang.org/genproto/googleapis/api/annotations" 21 dpb "google.golang.org/protobuf/types/descriptorpb" 22 ) 23 24 // MethodRequestType returns the precise location of the method's input type. 25 func MethodRequestType(m *desc.MethodDescriptor) *dpb.SourceCodeInfo_Location { 26 return pathLocation(m, 2) // MethodDecriptor.input_type == 2 27 } 28 29 // MethodResponseType returns the precise location of the method's output type. 30 func MethodResponseType(m *desc.MethodDescriptor) *dpb.SourceCodeInfo_Location { 31 return pathLocation(m, 3) // MethodDescriptor.output_type == 3 32 } 33 34 // MethodHTTPRule returns the precise location of the method's `google.api.http` 35 // rule, if any. 36 func MethodHTTPRule(m *desc.MethodDescriptor) *dpb.SourceCodeInfo_Location { 37 return MethodOption(m, int(apb.E_Http.TypeDescriptor().Number())) 38 } 39 40 // MethodOperationInfo returns the precise location of the method's 41 // `google.longrunning.operation_info` annotation, if any. 42 func MethodOperationInfo(m *desc.MethodDescriptor) *dpb.SourceCodeInfo_Location { 43 return MethodOption(m, int(lrpb.E_OperationInfo.TypeDescriptor().Number())) 44 } 45 46 // MethodSignature returns the precise location of the method's 47 // `google.api.method_signature` annotation, if any. 48 func MethodSignature(m *desc.MethodDescriptor, index int) *dpb.SourceCodeInfo_Location { 49 return pathLocation(m, 4, int(apb.E_MethodSignature.TypeDescriptor().Number()), index) // MethodDescriptor.options == 4 50 } 51 52 // MethodOption returns the precise location of the method's option with the given field number, if any. 53 func MethodOption(m *desc.MethodDescriptor, fieldNumber int) *dpb.SourceCodeInfo_Location { 54 return pathLocation(m, 4, fieldNumber) // MethodDescriptor.options == 4 55 }