in pkg/admin/services/traffic/argument.go [50:89]
func (tm *ArgumentService) Search(a *model.Argument) ([]*model.Argument, error) {
result := make([]*model.Argument, 0)
var con string
if a.Service != "" && a.Service != "*" {
con = util.ColonSeparatedKey(a.Service, a.Group, a.Version)
}
list, err := services.GetRules(con, constant.ConditionRuleSuffix)
if err != nil {
return result, err
}
for k, v := range list {
k, _ = strings.CutSuffix(k, constant.ConditionRuleSuffix)
split := strings.Split(k, ":")
argument := &model.Argument{
Service: split[0],
}
route := &model.ConditionRoute{}
err = yaml.Unmarshal([]byte(v), route)
if err != nil {
return result, err
}
for _, c := range route.Conditions {
// fixme, regex match
if i := strings.Index(c, model.ArgumentAdminIdentifier); i > 0 {
argument.Rule = strings.TrimSpace(c[0:i])
break
}
}
if argument.Rule != "" {
result = append(result, argument)
}
}
return result, nil
}