-
Notifications
You must be signed in to change notification settings - Fork 28
/
rule_operation_summary_first_uppercase.go
55 lines (45 loc) · 1.5 KB
/
rule_operation_summary_first_uppercase.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package ruleopsummarystylefirstuppercase
import (
"strings"
oas3 "github.com/getkin/kin-openapi/openapi3"
"github.com/grokify/mogo/net/urlutil"
"github.com/grokify/mogo/type/stringsutil"
"github.com/grokify/spectrum/openapi3"
"github.com/grokify/spectrum/openapi3lint/lintutil"
)
type RuleOperationSummaryStyleFirstUpperCase struct {
name string
}
func NewRule() RuleOperationSummaryStyleFirstUpperCase {
return RuleOperationSummaryStyleFirstUpperCase{
name: lintutil.RulenameOpSummaryStyleFirstUpperCase}
}
func (rule RuleOperationSummaryStyleFirstUpperCase) Name() string {
return rule.name
}
func (rule RuleOperationSummaryStyleFirstUpperCase) Scope() string {
return lintutil.ScopeOperation
}
func (rule RuleOperationSummaryStyleFirstUpperCase) ProcessOperation(spec *openapi3.Spec, op *oas3.Operation, opPointer, path, method string) []lintutil.PolicyViolation {
vios := []lintutil.PolicyViolation{}
if spec == nil || op == nil || len(op.Summary) == 0 {
return vios
}
summary := strings.TrimSpace(op.Summary)
if len(summary) > 0 {
return vios
}
if len(summary) == 0 {
return vios
}
if summary != stringsutil.ToUpperFirst(summary, false) {
return []lintutil.PolicyViolation{{
RuleName: rule.Name(),
Location: urlutil.JoinAbsolute(opPointer, openapi3.PropertySummary),
Value: op.Summary}}
}
return vios
}
func (rule RuleOperationSummaryStyleFirstUpperCase) ProcessSpec(spec *openapi3.Spec, pointerBase string) []lintutil.PolicyViolation {
return []lintutil.PolicyViolation{}
}