summaryrefslogtreecommitdiffstats
path: root/gateway
diff options
context:
space:
mode:
Diffstat (limited to 'gateway')
-rw-r--r--gateway/gateway.go54
-rw-r--r--gateway/gateway_test.go24
2 files changed, 33 insertions, 45 deletions
diff --git a/gateway/gateway.go b/gateway/gateway.go
index 72d0831b..6ac0abe5 100644
--- a/gateway/gateway.go
+++ b/gateway/gateway.go
@@ -237,38 +237,6 @@ func (gw *Gateway) ignoreTextEmpty(msg *config.Message) bool {
return true
}
-// ignoreTexts returns true if msg.Text matches any of the input regexes.
-func (gw *Gateway) ignoreTexts(msg *config.Message, input []string) bool {
- for _, entry := range input {
- if entry == "" {
- continue
- }
- // TODO do not compile regexps everytime
- re, err := regexp.Compile(entry)
- if err != nil {
- flog.Errorf("incorrect regexp %s for %s", entry, msg.Account)
- continue
- }
- if re.MatchString(msg.Text) {
- flog.Debugf("matching %s. ignoring %s from %s", entry, msg.Text, msg.Account)
- return true
- }
- }
- return false
-}
-
-// ignoreNicks returns true if msg.Username matches any of the input regexes.
-func (gw *Gateway) ignoreNicks(msg *config.Message, input []string) bool {
- // is the username in IgnoreNicks field
- for _, entry := range input {
- if msg.Username == entry {
- flog.Debugf("ignoring %s from %s", msg.Username, msg.Account)
- return true
- }
- }
- return false
-}
-
func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
// if we don't have the bridge, ignore it
if _, ok := gw.Bridges[msg.Account]; !ok {
@@ -277,7 +245,7 @@ func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
igNicks := strings.Fields(gw.Bridges[msg.Account].GetString("IgnoreNicks"))
igMessages := strings.Fields(gw.Bridges[msg.Account].GetString("IgnoreMessages"))
- if gw.ignoreTextEmpty(msg) || gw.ignoreNicks(msg, igNicks) || gw.ignoreTexts(msg, igMessages) {
+ if gw.ignoreTextEmpty(msg) || gw.ignoreText(msg.Username, igNicks) || gw.ignoreText(msg.Text, igMessages) {
return true
}
@@ -435,3 +403,23 @@ func getChannelID(msg config.Message) string {
func isAPI(account string) bool {
return strings.HasPrefix(account, "api.")
}
+
+// ignoreText returns true if text matches any of the input regexes.
+func (gw *Gateway) ignoreText(text string, input []string) bool {
+ for _, entry := range input {
+ if entry == "" {
+ continue
+ }
+ // TODO do not compile regexps everytime
+ re, err := regexp.Compile(entry)
+ if err != nil {
+ flog.Errorf("incorrect regexp %s", entry)
+ continue
+ }
+ if re.MatchString(text) {
+ flog.Debugf("matching %s. ignoring %s", entry, text)
+ return true
+ }
+ }
+ return false
+}
diff --git a/gateway/gateway_test.go b/gateway/gateway_test.go
index cd78fe99..9621ab7d 100644
--- a/gateway/gateway_test.go
+++ b/gateway/gateway_test.go
@@ -434,68 +434,68 @@ func TestIgnoreTextEmpty(t *testing.T) {
func TestIgnoreTexts(t *testing.T) {
msgTests := map[string]struct {
- input *config.Message
+ input string
re []string
output bool
}{
"no regex": {
- input: &config.Message{Text: "a text message"},
+ input: "a text message",
re: []string{},
output: false,
},
"simple regex": {
- input: &config.Message{Text: "a text message"},
+ input: "a text message",
re: []string{"text"},
output: true,
},
"multiple regex fail": {
- input: &config.Message{Text: "a text message"},
+ input: "a text message",
re: []string{"abc", "123$"},
output: false,
},
"multiple regex pass": {
- input: &config.Message{Text: "a text message"},
+ input: "a text message",
re: []string{"lala", "sage$"},
output: true,
},
}
gw := &Gateway{}
for testname, testcase := range msgTests {
- output := gw.ignoreTexts(testcase.input, testcase.re)
+ output := gw.ignoreText(testcase.input, testcase.re)
assert.Equalf(t, testcase.output, output, "case '%s' failed", testname)
}
}
func TestIgnoreNicks(t *testing.T) {
msgTests := map[string]struct {
- input *config.Message
+ input string
re []string
output bool
}{
"no entry": {
- input: &config.Message{Username: "user", Text: "a text message"},
+ input: "user",
re: []string{},
output: false,
},
"one entry": {
- input: &config.Message{Username: "user", Text: "a text message"},
+ input: "user",
re: []string{"user"},
output: true,
},
"multiple entries": {
- input: &config.Message{Username: "user", Text: "a text message"},
+ input: "user",
re: []string{"abc", "user"},
output: true,
},
"multiple entries fail": {
- input: &config.Message{Username: "user", Text: "a text message"},
+ input: "user",
re: []string{"abc", "def"},
output: false,
},
}
gw := &Gateway{}
for testname, testcase := range msgTests {
- output := gw.ignoreNicks(testcase.input, testcase.re)
+ output := gw.ignoreText(testcase.input, testcase.re)
assert.Equalf(t, testcase.output, output, "case '%s' failed", testname)
}
}