-
Notifications
You must be signed in to change notification settings - Fork 28
/
extra.go
63 lines (44 loc) · 1.07 KB
/
extra.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// -------------------------
//
// Copyright 2015, undiabler
//
// git: github.com/undiabler/golang-whois
//
// http://undiabler.com
//
// Released under the Apache License, Version 2.0
//
//--------------------------
package whois
import (
"regexp"
"strings"
)
func parser(re *regexp.Regexp, group int, data string) (result []string) {
found := re.FindAllStringSubmatch(data, -1)
if len(found) > 0 {
for _, one := range found {
if len(one) >= 2 && len(one[group]) > 0 {
result = appendIfMissing(result, one[group])
}
}
}
return
}
//Parse uniq name servers from whois
func ParseNameServers(whois string) []string {
return parser(regexp.MustCompile(`(?i)Name Server:\s+(.*?)(\s|$)`), 1, whois)
}
//Parse uniq domain status(codes) from whois
func ParseDomainStatus(whois string) []string {
return parser(regexp.MustCompile(`(?i)(Domain )?Status:\s+(.*?)(\s|$)`), 2, whois)
}
func appendIfMissing(slice []string, i string) []string {
i = strings.ToLower(i)
for _, ele := range slice {
if ele == i {
return slice
}
}
return append(slice, i)
}