-
Notifications
You must be signed in to change notification settings - Fork 0
/
event.py
110 lines (80 loc) · 2.69 KB
/
event.py
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import json
import time
import urlparse
import copy
class Event(object):
def __init__(self, json_obj = None):
self.cancelled = False
if json_obj is None:
self.data = { "@source": "unknown",
"@type": None,
"@tags": [],
"@fields": {},
"@timestamp": time.strftime("%Y-%m-%dT%H:%M:%S",time.gmtime()),
"@message": None
}
else:
self.data = json.loads(json_obj)
def cancel(self):
self.cancelled = true
def is_cancelled(self):
return self.cancelled
def __str__(self):
return self.data["@timestamp"] + "," + self.data["@source"] + "," + self.data["@message"]
def getsource(self):
return self.data["@source"]
def setsource(self, source):
val = urlparse.urlparse(source)
if (val.scheme != ''):
self.data["@source"] = val.geturl()
self.data["@source_host"] = val.netloc
self.data["@source_path"] = val.path
else:
self.data["@source"] = source
self.data["@source_host"] = source
def gettimestamp(self):
return self.data["@timestamp"]
def settimestamp(self, val):
self.data["@timestamp"] = val
def getmessage(self):
return self.data["@message"]
def setmessage(self, val):
self.data["@message"] = val
def gettype(self):
return self.data["@type"]
def settype(self, val):
self.data["@type"] = val
def gettags(self):
return self.data["@tags"]
def settags(self, val):
self.data["@tags"] = val
def overwrite(self, event):
self.data = hash(event)
def __hash__(self):
return hash(data)
def getfields(self):
return self.data["@fields"]
def to_json(self):
return json.dumps(self.data)
def get(self, key):
if key not in self.data["@fields"] and key[0] == '@':
return self.data[key]
else:
return self.data["@fields"][key]
def put(self, key, value):
if key in self.data:
self.data[key] = value
else:
self.data["@fields"][key] = value
def includes(self, key):
return (key in self.data or key in self.data["@fields"])
def remove(self, field):
if (field in self.data):
del self.data[field]
else:
del self.data["@fields"][field]
def __eq__(self, other):
if self.__class__ == other._class__:
return hash(self) == hash(other)
else:
return False