mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-13 11:06:25 +05:00
Added *join dataconverter
This commit is contained in:
committed by
Dan Christian Bogos
parent
1f603b9fe7
commit
7afef6be4b
@@ -638,6 +638,7 @@ const (
|
||||
MetaSIPURIUser = "*sipuri_user"
|
||||
E164DomainConverter = "*e164Domain"
|
||||
E164Converter = "*e164"
|
||||
MetaJoin = "*join"
|
||||
MetaReload = "*reload"
|
||||
MetaLoad = "*load"
|
||||
MetaFloat64 = "*float64"
|
||||
|
||||
@@ -115,6 +115,11 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
|
||||
return NewRandomConverter(EmptyString)
|
||||
}
|
||||
return NewRandomConverter(params[len(MetaRandom)+1:])
|
||||
case strings.HasPrefix(params, MetaJoin):
|
||||
if len(params) == len(MetaJoin) { // no extra params, defaults implied
|
||||
return joinConverter(FieldsSep), nil
|
||||
}
|
||||
return joinConverter(params[len(MetaJoin)+1:]), nil
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported converter definition: <%s>", params)
|
||||
}
|
||||
@@ -573,3 +578,13 @@ func (e164Converter) Convert(in interface{}) (interface{}, error) {
|
||||
return ReverseString(
|
||||
strings.Replace(name[:i], ".", "", -1)), nil
|
||||
}
|
||||
|
||||
type joinConverter string
|
||||
|
||||
func (j joinConverter) Convert(in interface{}) (interface{}, error) {
|
||||
slice, err := IfaceAsStringSlice(in)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return strings.Join(slice, string(j)), nil
|
||||
}
|
||||
|
||||
@@ -1251,3 +1251,27 @@ func TestDataConverterE164Convert(t *testing.T) {
|
||||
t.Errorf("Expected 'unknown format' error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestJoinConverter(t *testing.T) {
|
||||
d, err := NewDataConverter(MetaJoin)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
expVal := "1,2,3,5"
|
||||
if i, err := d.Convert("1;2;3;5"); err != nil {
|
||||
t.Error(err.Error())
|
||||
} else if expVal != i {
|
||||
t.Errorf("expecting: %q, received: %q", expVal, i)
|
||||
}
|
||||
|
||||
d, err = NewDataConverter(MetaJoin + ":|")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
expVal = "1|2|3|5"
|
||||
if i, err := d.Convert("1;2;3;5"); err != nil {
|
||||
t.Error(err.Error())
|
||||
} else if expVal != i {
|
||||
t.Errorf("expecting: %q, received: %q", expVal, i)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user