-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomplexdata.go
More file actions
60 lines (50 loc) · 2 KB
/
complexdata.go
File metadata and controls
60 lines (50 loc) · 2 KB
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
package eventlog
import "github.com/v8platform/brackets"
type ComplexDataParser interface {
Parse(node brackets.Node, eventType EventType)
}
type ComplexDataType int
const (
UnknownComplexData ComplexDataType = 0
AuthenticationErrorData ComplexDataType = 1
AuthenticationData ComplexDataType = 6
UpdateUserData ComplexDataType = 30
)
type complexDataMapParser struct {
fn func(data map[string]interface{}, node brackets.Node, eventType EventType)
Data map[string]interface{}
}
func (p *complexDataMapParser) Parse(node brackets.Node, eventType EventType) {
p.fn(p.Data, node, eventType)
}
func newComplexDataMapParser(fn func(data map[string]interface{}, node brackets.Node, eventType EventType)) *complexDataMapParser {
return &complexDataMapParser{
fn: fn,
Data: make(map[string]interface{}),
}
}
func (c ComplexDataType) Parser() ComplexDataParser {
switch c {
case UnknownComplexData:
return nil
case AuthenticationErrorData:
return newComplexDataMapParser(func(data map[string]interface{}, node brackets.Node, eventType EventType) {
data["Пользователь ОС"] = getData(node.GetNode(1), eventType)
})
case AuthenticationData:
return newComplexDataMapParser(func(data map[string]interface{}, node brackets.Node, eventType EventType) {
data["Имя"] = getData(node.GetNode(1), eventType)
data["Текущий пользователь ОС"] = getData(node.GetNode(2), eventType)
})
case UpdateUserData:
return newComplexDataMapParser(func(data map[string]interface{}, node brackets.Node, eventType EventType) {
data["Аутентификация ОС"] = getData(node.GetNode(1), eventType)
data["Аутентификация 1С:Предприятия"] = getData(node.GetNode(2), eventType)
data["Запрещено изменять пароль"] = getData(node.GetNode(3), eventType)
data["Имя"] = getData(node.GetNode(4), eventType)
data["Основной язык"] = getData(node.GetNode(5), eventType)
})
default:
return nil
}
}