-
Notifications
You must be signed in to change notification settings - Fork 0
/
types.go
75 lines (59 loc) · 2.32 KB
/
types.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
64
65
66
67
68
69
70
71
72
73
74
75
package whois
//import "gopkg.in/webnice/debug.v1"
//import "gopkg.in/webnice/log.v2"
import (
"regexp"
"time"
whoisKey "github.com/webnice/whois/key"
)
const (
ianaWhoisServer = `whois.iana.org` // Is an iana whois server
tldWhoisServer = `whois-servers.net` // Is an tld whois server
defaultWhoisPort = uint16(43) // Is an default whois port
defaultTimeout = 30 * time.Second // Request timeout default limit
)
var (
rexIana = regexp.MustCompile(`(?mi)^([^\:\%]+)\:(.*)$`)
)
// Interface is an interface of package
type Interface interface {
// WithTimeout Установка времени ожидания завершения запроса к серверу
WithTimeout(t time.Duration) Interface
// Whois Запрос информации о домене или IP адресе
Whois(domain string) (err error)
// Source Возвращает ответ whois сервера как есть
Source() (ret []byte)
// Parsed Возвращает ответ whois разобранный по сегментам и ключам
Parsed() (ret *Whois)
// GetKeyAll Получение всех значений ключа из всех сегментов
GetKeyAll(key whoisKey.Key) (ret []*Value)
// Reset object data
Reset()
// ERRORS
// Errors Все ошибки известного состояния, которые могут вернуть функции пакета
Errors() *Error
}
// impl is an implementation of package
type impl struct {
requestTimeout time.Duration // Время ожидания выполнения запроса
ianaSrc []byte // Ответ iana whois сервера
iana *Whois // Сегменты ответа whois сервера
domainName string // Исходное доменное имя или IP адрес
domainSrc []byte // Ответ whois сервера
domainParsed *Whois // Сегменты ответа whois сервера
}
// Whois parsed data
type Whois struct {
Segment [][]*Segment
}
// Segment parsed data
type Segment struct {
keySrc string // Key source
Key whoisKey.Key // Key
Value *Value // Value data
Known bool // Flag key is known
}
// Значение ключа с возможностью конвертации
type Value struct {
source string
}