RSRField parser to accept one letter replace templates

This commit is contained in:
DanB
2014-07-11 18:22:50 +02:00
parent c8c52842cb
commit 31a573fde4
3 changed files with 9 additions and 6 deletions

View File

@@ -97,7 +97,7 @@ func startMediator(responder *engine.Responder, loggerDb engine.LogStorage, cdrD
var err error
for i := 0; i < cfg.MediatorRaterReconnects; i++ {
client, err = rpcclient.NewRpcClient("tcp", cfg.MediatorRater, 0, 3, utils.GOB)
client, err = rpcclient.NewRpcClient("tcp", cfg.MediatorRater, 0, cfg.MediatorRaterReconnects, utils.GOB)
if err == nil { //Connected so no need to reiterate
break
}
@@ -150,7 +150,7 @@ func startSessionManager(responder *engine.Responder, loggerDb engine.LogStorage
var err error
for i := 0; i < cfg.SMRaterReconnects; i++ {
client, err = rpcclient.NewRpcClient("tcp", cfg.SMRater, 0, 3, utils.GOB)
client, err = rpcclient.NewRpcClient("tcp", cfg.SMRater, 0, cfg.SMRaterReconnects, utils.GOB)
if err == nil { //Connected so no need to reiterate
break
}

View File

@@ -48,17 +48,17 @@ func NewRSRField(fldStr string) (*RSRField, error) {
spltRgxp := regexp.MustCompile(`:s\/`)
spltRules := spltRgxp.Split(fldStr, -1)
if len(spltRules) < 2 {
return nil, fmt.Errorf("Invalid Search&Replace field rule. %s", fldStr)
return nil, fmt.Errorf("Invalid Split of Search&Replace field rule. %s", fldStr)
}
rsrField := &RSRField{Id: spltRules[0][1:]} // Original id in form ~hdr_name
rulesRgxp := regexp.MustCompile(`(?:(.+[^\\])\/(.+[^\\])*\/){1,}`)
rulesRgxp := regexp.MustCompile(`(?:(.+[^\\])\/(.*[^\\])*\/){1,}`)
for _, ruleStr := range spltRules[1:] { // :s/ already removed through split
allMatches := rulesRgxp.FindStringSubmatch(ruleStr)
if len(allMatches) != 3 {
return nil, fmt.Errorf("Invalid Search&Replace field rule. %s", fldStr)
return nil, fmt.Errorf("Not enough members in Search&Replace, ruleStr: %s, matches: %v, ", ruleStr, allMatches)
}
if srRegexp, err := regexp.Compile(allMatches[1]); err != nil {
return nil, fmt.Errorf("Invalid Search&Replace field rule. %s", fldStr)
return nil, fmt.Errorf("Invalid Search&Replace subfield rule: %s", allMatches[1])
} else {
rsrField.RSRules = append(rsrField.RSRules, &ReSearchReplace{SearchRegexp: srRegexp, ReplaceTemplate: allMatches[2]})
}

View File

@@ -65,6 +65,9 @@ func TestNewRSRFieldIvo(t *testing.T) {
} else if !reflect.DeepEqual(rsrField, expectRSRField) {
t.Errorf("Unexpected RSRField received: %v", rsrField)
}
if _, err := NewRSRField(`~account:s/^[A-Za-z0-9]*[c|a]\d{4}$/S/:s/^[A-Za-z0-9]*n\d{4}$/C/:s/^\d{10}$//`); err != nil {
t.Error(err)
}
}
func TestConvertPlusNationalAnd00(t *testing.T) {