1
+ import json
2
+ import datetime
3
+ import decimal
4
+ import requests
5
+
6
+ from constant import SLACK_HOOK
7
+ IGNORED_LIST = ['row_id' , 'row_created' , 'row_updated' ]
8
+
9
+ class Utils :
10
+ def __init__ (self ):
11
+ self .msg_type = {
12
+ 0 : 'info:: ' ,
13
+ 1 : 'err:: '
14
+ }
15
+
16
+ def report_slack (self , type , slack_msg ):
17
+ url = SLACK_HOOK ['hostname' ] + SLACK_HOOK ['path' ]
18
+ prefix = self .msg_type .get (type , "" )
19
+ print (url )
20
+ payload = {"channel" : "#contract-index-alerts" ,
21
+ "username" : "webhookbot" ,
22
+ "text" : prefix + slack_msg ,
23
+ "icon_emoji" : ":ghost:"
24
+ }
25
+
26
+ resp = requests .post (url = url , data = json .dumps (payload ))
27
+ print (resp .status_code , resp .text )
28
+
29
+ def clean (self , value_list ):
30
+ for value in value_list :
31
+ self .clean_row (value )
32
+
33
+ def clean_row (self , row ):
34
+ for item in IGNORED_LIST :
35
+ del row [item ]
36
+
37
+ for key in row :
38
+ if isinstance (row [key ], decimal .Decimal ) or isinstance (row [key ], datetime .datetime ):
39
+ row [key ] = str (row [key ])
40
+ elif isinstance (row [key ], bytes ):
41
+ if row [key ] == b'\x01 ' :
42
+ row [key ] = 1
43
+ elif row [key ] == b'\x00 ' :
44
+ row [key ] = 0
45
+ else :
46
+ raise Exception ("Unsupported bytes object. Key " + str (key ) + " value " + str (row [key ]))
47
+
48
+ return row
49
+
50
+ def remove_http_https_prefix (self , url ):
51
+ url = url .replace ("https://" ,"" )
52
+ url = url .replace ("http://" ,"" )
53
+ return url
0 commit comments