feat(indexers): irc parse support ignoring lines (#641)

feat(indexers): irc support ignore line
This commit is contained in:
ze0s 2023-01-10 19:20:48 +01:00 committed by GitHub
parent e014528c97
commit 626fa6f156
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 4 deletions

View file

@ -79,7 +79,7 @@ func (a *announceProcessor) processQueue(queue chan string) {
// check should ignore
match, err := a.parseLine(parseLine.Pattern, parseLine.Vars, tmpVars, line)
match, err := a.parseLine(parseLine.Pattern, parseLine.Vars, tmpVars, line, parseLine.Ignore)
if err != nil {
a.log.Error().Err(err).Msgf("error parsing extract for line: %v", line)
@ -135,12 +135,12 @@ func (a *announceProcessor) AddLineToQueue(channel string, line string) error {
return nil
}
func (a *announceProcessor) parseLine(pattern string, vars []string, tmpVars map[string]string, line string) (bool, error) {
func (a *announceProcessor) parseLine(pattern string, vars []string, tmpVars map[string]string, line string, ignore bool) (bool, error) {
if len(vars) > 0 {
return a.parseExtract(pattern, vars, tmpVars, line)
}
return a.parseMatchRegexp(pattern, tmpVars, line)
return a.parseMatchRegexp(pattern, tmpVars, line, ignore)
}
func (a *announceProcessor) parseExtract(pattern string, vars []string, tmpVars map[string]string, line string) (bool, error) {
@ -168,12 +168,17 @@ func (a *announceProcessor) parseExtract(pattern string, vars []string, tmpVars
return true, nil
}
func (a *announceProcessor) parseMatchRegexp(pattern string, tmpVars map[string]string, line string) (bool, error) {
func (a *announceProcessor) parseMatchRegexp(pattern string, tmpVars map[string]string, line string, ignore bool) (bool, error) {
var re = regexp.MustCompile(`(?mi)` + pattern)
groupNames := re.SubexpNames()
for _, match := range re.FindAllStringSubmatch(line, -1) {
for groupIdx, group := range match {
// if line should be ignored then lets return
if ignore {
return true, nil
}
name := groupNames[groupIdx]
if name == "" {
name = "raw"