aboutsummaryrefslogtreecommitdiff
path: root/i3/bin/cloogle_stats.py
blob: ad1610712f0ee4c94678e869ff8428ed6debb084 (plain) (blame)
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
#!/usr/bin/env python3
import json
import ssl
import time
import websocket

def format_query(query):
    if 'className' in query:
        return 'class ' + query['className']
    elif 'typeName' in query:
        return 'type ' + query['typeName']
    elif 'unify' in query:
        if 'name' in query and query['name'] != '':
            return query['name'] + ' :: ' + query['unify']
        else:
            return ':: ' + query['unify']
    else:
        return query['name']

def on_message(ws, msg):
    try:
        print(format_query(json.loads(msg)))
    except:
        pass

def on_error(ws, err):
    print(err)

def on_close(ws):
    print('Lost connection to Cloogle.')
    time.sleep(3)
    start()

def start():
    ws = websocket.WebSocketApp('wss://cloogle.org:31216',
            subprotocols=['cloogle-stats'],
            on_message=on_message, on_error=on_error, on_close=on_close)
    ws.run_forever(sslopt={'cert_reqs': ssl.CERT_NONE})

if __name__ == '__main__':
    start()