Refactor IP parsing to use appendIfNotExcluded for exclusion validation and error handling
This commit is contained in:
+12
-3
@@ -55,7 +55,10 @@ func (p *jsonLinesParser) Parse(body io.Reader, validator IPValidator, limit uin
|
||||
continue
|
||||
}
|
||||
|
||||
ips = append(ips, ip)
|
||||
ips, err = appendIfNotExcluded(ip, ips, validator)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if limit > 0 && uint(len(ips)) >= limit {
|
||||
break
|
||||
}
|
||||
@@ -96,9 +99,15 @@ func (p *jsonLinesParser) ParseIPsByVersion(body io.Reader, validator IPValidato
|
||||
}
|
||||
|
||||
if ipVersion == IPVersion4 {
|
||||
ipV4 = append(ipV4, ip)
|
||||
ipV4, err = appendIfNotExcluded(ip, ipV4, validator)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
} else if ipVersion == IPVersion6 {
|
||||
ipV6 = append(ipV6, ip)
|
||||
ipV6, err = appendIfNotExcluded(ip, ipV6, validator)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package parser
|
||||
|
||||
func appendIfNotExcluded(ip string, ips []string, validator IPValidator) ([]string, error) {
|
||||
if exclude, listIP, err := validator.IsExcluded(ip); err != nil {
|
||||
return ips, err
|
||||
} else if exclude {
|
||||
if listIP == nil || len(listIP) == 0 {
|
||||
return ips, nil
|
||||
}
|
||||
ips = append(ips, listIP...)
|
||||
return ips, nil
|
||||
}
|
||||
|
||||
ips = append(ips, ip)
|
||||
return ips, nil
|
||||
}
|
||||
+12
-3
@@ -58,7 +58,10 @@ func (p *rssParser) Parse(body io.Reader, validator IPValidator, limit uint) (IP
|
||||
continue
|
||||
}
|
||||
|
||||
ips = append(ips, ip)
|
||||
ips, err = appendIfNotExcluded(ip, ips, validator)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if limit > 0 && uint(len(ips)) >= limit {
|
||||
break
|
||||
}
|
||||
@@ -102,9 +105,15 @@ func (p *rssParser) ParseIPsByVersion(body io.Reader, validator IPValidator, lim
|
||||
}
|
||||
|
||||
if ipVersion == IPVersion4 {
|
||||
ipV4 = append(ipV4, ip)
|
||||
ipV4, err = appendIfNotExcluded(ip, ipV4, validator)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
} else if ipVersion == IPVersion6 {
|
||||
ipV6 = append(ipV6, ip)
|
||||
ipV6, err = appendIfNotExcluded(ip, ipV6, validator)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
|
||||
+13
-3
@@ -146,7 +146,11 @@ func (p *textParser) Parse(body io.Reader, validator IPValidator, limit uint) (I
|
||||
continue
|
||||
}
|
||||
|
||||
ips = append(ips, ip)
|
||||
var err error
|
||||
ips, err = appendIfNotExcluded(ip, ips, validator)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if limit > 0 && uint(len(ips)) >= limit {
|
||||
break
|
||||
}
|
||||
@@ -186,9 +190,15 @@ func (p *textParser) ParseIPsByVersion(body io.Reader, validator IPValidator, li
|
||||
}
|
||||
|
||||
if ipVersion == IPVersion4 {
|
||||
ipV4 = append(ipV4, ip)
|
||||
ipV4, err = appendIfNotExcluded(ip, ipV4, validator)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
} else if ipVersion == IPVersion6 {
|
||||
ipV6 = append(ipV6, ip)
|
||||
ipV6, err = appendIfNotExcluded(ip, ipV6, validator)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user