diff --git a/gift.py b/gift.py
index f3321da..591cfbf 100644
--- a/gift.py
+++ b/gift.py
@@ -1,10 +1,19 @@
import os
import dotenv
import json
+import requests
+import pyotp
+import time
+
dotenv.load_dotenv()
loaded = False
gifts = []
+nbcookie = os.getenv('cookie')
+cookies = {"namebase-main": nbcookie}
+nb_endpoint = "https://www.namebase.io/"
+
+max_price = 4 # Max price to buy a domain at (in HNS)
def gift(name,email,referer, ip):
@@ -51,4 +60,56 @@ def gift(name,email,referer, ip):
with open(path, 'w') as f:
json.dump(gifts, f)
+ headers = {"Accept": "application/json", "Content-Type": "application/json"}
+ params = {"recipientEmail": email, "senderName": "Woodburn Faucet",
+ "note": "Enjoy your free domain! - Woodburn Faucet"}
+
+ names = requests.get(nb_endpoint + "/api/user/domains/owned?offset=0&sortKey=acquiredAt&sortDirection=desc&limit=100"
+ ,headers=headers, cookies=cookies)
+ if names.status_code != 200:
+ return "Error getting names:
" + names.text
+
+ names = names.json()
+ if len(names['domains']) == 0:
+ domains_market = requests.get(nb_endpoint + "/api/domains/marketplace?offset=0&buyNowOnly=true&sortKey=price&sortDirection=asc&exclude=%2Cnumbers%2Chyphens%2Cunderscores&maxLength=10&offersOnly=false"
+ ,headers=headers, cookies=cookies)
+ if domains_market.status_code != 200:
+ return "Error getting names:
" + domains_market.text
+
+ domains_market = domains_market.json()
+ if len(domains_market['domains']) == 0:
+ return "No domains available to gift
Check back in a few minutes"
+
+ domain = domains_market['domains'][0]['name']
+ print("Buying: " + domain,flush=True)
+ price = int(domains_market['domains'][0]['ammount'])
+ if price > max_price*1000000:
+ return "Domain price too high
Check back in a few minutes"
+
+
+
+ payload = {
+ "listingId": domains_market['domains'][0]['id']
+ }
+ buy = requests.post(nb_endpoint + "/api/v0/marketplace/"+domain+"/buynow",headers=headers,data=json.dumps(payload), cookies=cookies)
+ if buy.status_code != 200:
+ return "Error buying name:
" + buy.text
+
+
+ else:
+ domain = names['domains'][0]['name']
+
+ print("Gifting: " + domain,flush=True)
+
+ # Add this name to gifts record
+ gifts[-1]['domain'] = domain
+
+
+
+ send_name = requests.post(nb_endpoint + "/api/gift/" + domain.strip(),headers=headers,data=json.dumps(params), cookies=cookies)
+
+ if send_name.status_code != 200:
+ return "Error sending gift:
" + send_name.text
+
+
return True
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
index f640785..d806e62 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
flask
python-dotenv
gunicorn
-requests
\ No newline at end of file
+requests
+pyotp
\ No newline at end of file
diff --git a/templates/error.html b/templates/error.html
index 2e6b67a..3964afe 100644
--- a/templates/error.html
+++ b/templates/error.html
@@ -46,7 +46,7 @@ Claim a free Handshake domain">
{{error}}
+{{error | safe}}
If you need any help with your domain you can ask in the Namebase discord server or by emailing my at faucet@nathan.woodburn.au