Policy rules remove redundant function (#193)

This commit is contained in:
Igor Gov 2021-08-10 16:45:47 +03:00 committed by GitHub
parent 8c9b8d3217
commit c4afeee5b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 20 deletions

View File

@ -54,17 +54,9 @@ type BaseEntryDetails struct {
} }
type ApplicableRules struct { type ApplicableRules struct {
Latency int64 `json:"latency,omitempty"` Latency int64 `json:"latency,omitempty"`
Status bool `json:"status,omitempty"` Status bool `json:"status,omitempty"`
NumberOfRules int `json:"numberOfRules,omitempty"` NumberOfRules int `json:"numberOfRules,omitempty"`
}
func NewApplicableRules(status bool, latency int64, number int) ApplicableRules {
ar := ApplicableRules{}
ar.Status = status
ar.Latency = latency
ar.NumberOfRules = number
return ar
} }
type FullEntryDetails struct { type FullEntryDetails struct {
@ -219,8 +211,6 @@ func (fewp *FullEntryWithPolicy) UnmarshalData(entry *MizuEntry) error {
} }
func RunValidationRulesState(harEntry har.Entry, service string) ApplicableRules { func RunValidationRulesState(harEntry har.Entry, service string) ApplicableRules {
numberOfRules, resultPolicyToSend := rules.MatchRequestPolicy(harEntry, service) _, resultPolicyToSend := rules.MatchRequestPolicy(harEntry, service)
statusPolicyToSend, latency, numberOfRules := rules.PassedValidationRules(resultPolicyToSend, numberOfRules) return rules.PassedValidationRules(resultPolicyToSend)
ar := NewApplicableRules(statusPolicyToSend, latency, numberOfRules)
return ar
} }

View File

@ -3,6 +3,7 @@ package rules
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"mizuserver/pkg/models"
"reflect" "reflect"
"regexp" "regexp"
"strings" "strings"
@ -92,19 +93,35 @@ func MatchRequestPolicy(harEntry har.Entry, service string) (int, []RulesMatched
return len(enforcePolicy.Rules), resultPolicyToSend return len(enforcePolicy.Rules), resultPolicyToSend
} }
func PassedValidationRules(rulesMatched []RulesMatched, numberOfRules int) (bool, int64, int) { func PassedValidationRules(rulesMatched []RulesMatched) models.ApplicableRules {
if len(rulesMatched) == 0 { if len(rulesMatched) == 0 {
return false, 0, 0 return models.ApplicableRules{
Status: false,
Latency: 0,
NumberOfRules: 0,
}
} }
for _, rule := range rulesMatched { for _, rule := range rulesMatched {
if rule.Matched == false { if rule.Matched == false {
return false, -1, len(rulesMatched) return models.ApplicableRules{
Status: false,
Latency: -1,
NumberOfRules: len(rulesMatched),
}
} }
} }
for _, rule := range rulesMatched { for _, rule := range rulesMatched {
if strings.ToLower(rule.Rule.Type) == "latency" { if strings.ToLower(rule.Rule.Type) == "latency" {
return true, rule.Rule.Latency, len(rulesMatched) return models.ApplicableRules{
Status: true,
Latency: rule.Rule.Latency,
NumberOfRules: len(rulesMatched),
}
} }
} }
return true, -1, len(rulesMatched) return models.ApplicableRules{
Status: true,
Latency: -1,
NumberOfRules: len(rulesMatched),
}
} }