github.com/googleapis/api-linter@v1.65.2/rules/aip0134/request_resource_required.go (about) 1 package aip0134 2 3 import ( 4 "fmt" 5 6 "github.com/googleapis/api-linter/lint" 7 "github.com/googleapis/api-linter/rules/internal/utils" 8 "github.com/jhump/protoreflect/desc" 9 ) 10 11 // The create request message should have resource field. 12 var requestResourceRequired = &lint.MessageRule{ 13 Name: lint.NewRuleName(134, "request-resource-required"), 14 OnlyIf: utils.IsUpdateRequestMessage, 15 LintMessage: func(m *desc.MessageDescriptor) []lint.Problem { 16 resourceMsgName := extractResource(m.GetName()) 17 for _, fieldDesc := range m.GetFields() { 18 msgDesc := fieldDesc.GetMessageType() 19 if msgDesc != nil && msgDesc.GetName() == resourceMsgName { 20 // found the resource field. 21 return nil 22 } 23 } 24 25 // No resource field. 26 return []lint.Problem{{ 27 Message: fmt.Sprintf("Message %q has no %q type field", m.GetName(), resourceMsgName), 28 Descriptor: m, 29 }} 30 }, 31 }