firewalletbrowser/plugins/automations.py

83 lines
2.3 KiB
Python
Raw Normal View History

2024-02-12 21:53:17 +11:00
import json
import account
import requests
import threading
import os
import datetime
APIKEY = os.environ.get("hsd_api")
ip = os.getenv("hsd_ip")
if ip is None:
ip = "localhost"
# Plugin Data
info = {
"name": "Automations",
"description": "This plugin will automatically renew domains, reveal and redeem bids.",
"version": "1.0",
"author": "Nathan.Woodburn/"
}
# Functions
functions = {
"automation":{
"name": "Function to automate",
"type": "dashboard",
"description": "This used type dashboard to trigger the function whenever you access the dashboard.",
"params": {},
"returns": {
"Status":
{
"name": "Status of the automation",
"type": "text"
}
}
}
}
started = 0
# Main entry point only lets the main function run every 5 mins
def automation(params, authentication):
global started
now = datetime.datetime.now().timestamp()
# Add 5 mins
now = now - 300
if now < started:
return {"Status": "Waiting before checking for new actions"}
started = datetime.datetime.now().timestamp()
threading.Thread(target=automations_background, args=(authentication,)).start()
return {"Status": "Checking for actions"}
# Background function to run the automations
def automations_background(authentication):
print("Running automations")
# Get account details
account_name = account.check_account(authentication)
password = ":".join(authentication.split(":")[1:])
if account_name == False:
return {
"error": {
"message": "Invalid account"
}
}
try:
# Try to select and login to the wallet
response = account.hsw.rpc_selectWallet(account_name)
if response['error'] is not None:
return
response = account.hsw.rpc_walletPassphrase(password,10)
if response['error'] is not None:
return
# Try to send the batch of all renew, reveal and redeem actions
response = requests.post(f"http://x:{APIKEY}@{ip}:12039",json={
"method": "sendbatch",
"params": [[["RENEW"], ["REVEAL"], ["REDEEM"]]]
}).json()
print(response)
except Exception as e:
print(e)