You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.9 KiB
59 lines
1.9 KiB
#!/usr/bin/env python3
|
|
|
|
from pyln.client import Plugin
|
|
|
|
import json
|
|
import os.path
|
|
|
|
|
|
plugin = Plugin()
|
|
|
|
|
|
@plugin.init()
|
|
def init(configuration, options, plugin):
|
|
if os.path.exists('moves.json'):
|
|
jd = {}
|
|
with open('moves.json', 'r') as f:
|
|
jd = f.read()
|
|
plugin.coin_moves = json.loads(jd)
|
|
else:
|
|
plugin.coin_moves = []
|
|
|
|
|
|
@plugin.subscribe("coin_movement")
|
|
def notify_coin_movement(plugin, coin_movement, **kwargs):
|
|
idx = coin_movement['movement_idx']
|
|
plugin.log("{} coins movement version: {}".format(idx, coin_movement['version']))
|
|
plugin.log("{} coins node: {}".format(idx, coin_movement['node_id']))
|
|
plugin.log("{} coins mvt_type: {}".format(idx, coin_movement['type']))
|
|
plugin.log("{} coins account: {}".format(idx, coin_movement['account_id']))
|
|
plugin.log("{} coins credit: {}".format(idx, coin_movement['credit']))
|
|
plugin.log("{} coins debit: {}".format(idx, coin_movement['debit']))
|
|
plugin.log("{} coins tag: {}".format(idx, coin_movement['tag']))
|
|
plugin.log("{} coins timestamp: {}".format(idx, coin_movement['timestamp']))
|
|
plugin.log("{} coins coin_type: {}".format(idx, coin_movement['coin_type']))
|
|
|
|
for f in ['payment_hash', 'utxo_txid', 'vout', 'txid', 'part_id', 'blockheight']:
|
|
if f in coin_movement:
|
|
plugin.log("{} coins {}: {}".format(idx, f, coin_movement[f]))
|
|
|
|
plugin.coin_moves.append(coin_movement)
|
|
|
|
# we save to disk so that we don't get borked if the node restarts
|
|
# assumes notification calls are synchronous (not thread safe)
|
|
with open('moves.json', 'w') as f:
|
|
f.write(json.dumps(plugin.coin_moves))
|
|
|
|
|
|
@plugin.method('listcoinmoves_plugin')
|
|
def return_moves(plugin):
|
|
result = []
|
|
if os.path.exists('moves.json'):
|
|
jd = {}
|
|
with open('moves.json', 'r') as f:
|
|
jd = f.read()
|
|
result = json.loads(jd)
|
|
return {'coin_moves': result}
|
|
|
|
|
|
plugin.run()
|
|
|