From c9b3a854d3cc37582ed4802bf9436fa3fe4b2be8 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Fri, 18 Jul 2025 12:16:21 +1000 Subject: [PATCH] feat: Inital setup --- README.md | 4 +- example.py | 175 ------------------------------------------------ shakestation.py | 52 ++++++++++++++ template.py | 32 --------- 4 files changed, 54 insertions(+), 209 deletions(-) delete mode 100644 example.py create mode 100644 shakestation.py delete mode 100644 template.py diff --git a/README.md b/README.md index 9772bc3..86f079d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# Plugin Template -This is a template for creating a plugin for Firewallet. It is not meant to be used as is, but rather as a guide for creating your own plugin. +# Shakestation Plugin +This is a plugin to add shakestation features to FireWallet. ## Format diff --git a/example.py b/example.py deleted file mode 100644 index bcf5cfa..0000000 --- a/example.py +++ /dev/null @@ -1,175 +0,0 @@ -import json -import account -import requests - - -# Plugin Data -info = { - "name": "Example Plugin", - "description": "This is a plugin to be used as an example", - "version": "1.0", - "author": "Nathan.Woodburn/" -} - - -# Functions -functions = { - "search":{ - "name": "Search Owned", - "type": "default", - "description": "Search for owned domains containing a string", - "params": { - "search": { - "name":"Search string", - "type":"text" - } - }, - "returns": { - "domains": - { - "name": "List of owned domains", - "type": "list" - } - } - }, - "transfer":{ - "name": "Bulk Transfer Domains", - "type": "default", - "description": "Transfer domains to another wallet", - "params": { - "address": { - "name":"Address to transfer to", - "type":"address" - }, - "domains": { - "name":"List of domains to transfer", - "type":"longText" - } - }, - "returns": { - "hash": { - "name": "Hash of the transaction", - "type": "tx" - }, - "address":{ - "name": "Address of the new owner", - "type": "text" - } - } - }, - "dns":{ - "name": "Set DNS for Domains", - "type": "default", - "description": "Set DNS for domains", - "params": { - "domains": { - "name":"List of domains to set DNS for", - "type":"longText" - }, - "dns": { - "name":"DNS", - "type":"dns" - } - }, - "returns": { - "hash": { - "name": "Hash of the transaction", - "type": "tx" - }, - "dns":{ - "name": "DNS", - "type": "dns" - } - } - }, - "niami": { - "name": "Niami info", - "type": "domain", - "description": "Check the domains niami rating", - "params": {}, - "returns": { - "rating": - { - "name": "Niami Rating", - "type": "text" - } - } - }, - "niamiSearch": { - "name": "Niami info", - "type": "search", - "description": "Check the domains niami rating", - "params": {}, - "returns": { - "rating": - { - "name": "Niami Rating", - "type": "text" - } - } - }, - "connections":{ - "name": "HSD Connections", - "type": "dashboard", - "description": "Show the number of connections the HSD node is connected to", - "params": {}, - "returns": { - "connections": - { - "name": "HSD Connections", - "type": "text" - } - } - } -} - -def check(params, authentication): - domains = params["domains"] - domains = domains.splitlines() - - wallet = authentication.split(":")[0] - owned = account.getDomains(wallet) - # Only keep owned domains ["name"] - ownedNames = [domain["name"] for domain in owned] - - domains = [domain for domain in domains if domain in ownedNames] - - - return {"domains": domains} - -def search(params, authentication): - search = params["search"].lower() - wallet = authentication.split(":")[0] - owned = account.getDomains(wallet) - # Only keep owned domains ["name"] - ownedNames = [domain["name"] for domain in owned] - - domains = [domain for domain in ownedNames if search in domain] - - return {"domains": domains} - - -def transfer(params, authentication): - address = params["address"] - return {"hash":"f921ffe1bb01884bf515a8079073ee9381cb93a56b486694eda2cce0719f27c0","address":address} - -def dns(params,authentication): - dns = params["dns"] - return {"hash":"f921ffe1bb01884bf515a8079073ee9381cb93a56b486694eda2cce0719f27c0","dns":dns} - -def niami(params, authentication): - domain = params["domain"] - response = requests.get(f"https://api.handshake.niami.io/domain/{domain}") - data = response.json()["data"] - if 'rating' not in data: - return {"rating":"No rating found."} - rating = str(data["rating"]["score"]) + " (" + data["rating"]["rarity"] + ")" - return {"rating":rating} - -def niamiSearch(params, authentication): - return niami(params, authentication) - - -def connections(params,authentication): - outbound = account.hsd.getInfo()['pool']['outbound'] - return {"connections": outbound} \ No newline at end of file diff --git a/shakestation.py b/shakestation.py new file mode 100644 index 0000000..67e17e1 --- /dev/null +++ b/shakestation.py @@ -0,0 +1,52 @@ +import json +import account +import requests + +# Plugin Data +info = { + "name": "Shakestation", + "description": "Connect to Shakestation", + "version": "1.0", + "author": "Nathan.Woodburn/" +} + +# Functions +functions = { + "main":{ + "name": "Function name", + "type": "default", + "description": "Description", + "params": {}, + "returns": { + "status": + { + "name": "Status of the function", + "type": "text" + } + } + }, + "domain-info": { + "name": "Domain info", + "type": "search", + "description": "Check if Shakestation has information on a domain", + "params": {}, + "returns": { + "info": + { + "name": "Information on the domain", + "type": "text" + } + } + } +} + +def main(params, authentication): + return {"status": "Success"} + +def domain_info(params, authentication): + domain = params.get("domain") + if not domain: + return {"info": "No domain provided"} + + + return {"info": "TODO"} \ No newline at end of file diff --git a/template.py b/template.py deleted file mode 100644 index 53ed5e1..0000000 --- a/template.py +++ /dev/null @@ -1,32 +0,0 @@ -import json -import account -import requests - -# Plugin Data -info = { - "name": "Plugin Template", - "description": "Plugin Description", - "version": "1.0", - "author": "Nathan.Woodburn/" -} - -# Functions -functions = { - "main":{ - "name": "Function name", - "type": "default", - "description": "Description", - "params": {}, - "returns": { - "status": - { - "name": "Status of the function", - "type": "text" - } - } - } -} - -def main(params, authentication): - return {"status": "Success"} - \ No newline at end of file