forked from ilanasegall/AustralisTelemetry
/
getpayloads.py
43 lines (36 loc) · 944 Bytes
/
getpayloads.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
from collections import defaultdict
import simplejson as json
import sys
import traceback
pymap = map
def enum_paths(dct, path=[]):
if not hasattr(dct, 'items'):
path.append(dct)
yield path
return
for k,v in dct.iteritems():
for p in enum_paths(v, path + [k]):
yield p
def map(k, d, v, cx):
try:
j = json.loads(v)
if not "simpleMeasurements" in j:
return
m = j["simpleMeasurements"]
sysinfo = j["info"]
if not "UITelemetry" in m:
return
ui = m["UITelemetry"]
ui_payload = {"sysinfo": sysinfo, "uitelemetry": ui}
cx.write(json.dumps(ui_payload), 1)
except Exception, e:
print >> sys.stderr, "ERROR:", e
print >> sys.stderr, traceback.format_exc()
cx.write("ERROR:", str(e))
def reduce(k, v, cx):
if k == "ERROR:":
for i in set(v):
cx.write(k, i)
return
#cheat and just write the blob. we assume they're not repeated.
cx.write(k, "")