github.com/googleapis/api-linter@v1.65.2/rules/aip0234/aip0234.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 aip0234 contains rules defined in https://aip.dev/234. 16 package aip0234 17 18 import ( 19 "regexp" 20 21 "github.com/googleapis/api-linter/lint" 22 "github.com/jhump/protoreflect/desc" 23 ) 24 25 // AddRules accepts a register function and registers each of 26 // this AIP's rules to it. 27 func AddRules(r lint.RuleRegistry) error { 28 return r.Register( 29 234, 30 httpBody, 31 httpMethod, 32 httpURISuffix, 33 pluralMethodName, 34 requestMessageName, 35 requestParentField, 36 requestParentReference, 37 requestRequestsBehavior, 38 requestRequestsField, 39 requestUnknownFields, 40 responseMessageName, 41 responseResourceField, 42 ) 43 } 44 45 var ( 46 batchUpdateMethodRegexp = regexp.MustCompile("^BatchUpdate(?:[A-Za-z0-9]|$)") 47 batchUpdateReqMessageRegexp = regexp.MustCompile("^BatchUpdate[A-Za-z0-9]*Request$") 48 batchUpdateResMessageRegexp = regexp.MustCompile("^BatchUpdate[A-Za-z0-9]*Response$") 49 batchUpdateURINameRegexp = regexp.MustCompile(`:batchUpdate$`) 50 ) 51 52 // Returns true if this is a AIP-234 Batch Update method, false otherwise. 53 func isBatchUpdateMethod(m *desc.MethodDescriptor) bool { 54 return batchUpdateMethodRegexp.MatchString(m.GetName()) 55 } 56 57 // Returns true if this is an AIP-234 Batch Update request message, false otherwise. 58 func isBatchUpdateRequestMessage(m *desc.MessageDescriptor) bool { 59 return batchUpdateReqMessageRegexp.MatchString(m.GetName()) 60 } 61 62 // Returns true if this is an AIP-234 Batch Update request message, false otherwise. 63 func isBatchUpdateResponseMessage(m *desc.MessageDescriptor) bool { 64 return batchUpdateResMessageRegexp.MatchString(m.GetName()) 65 }