mirror of
https://github.com/lnbits/lnbits.git
synced 2025-09-27 20:36:16 +02:00
refactor: clean database calls in api_transactions
view
And minor fixes.
This commit is contained in:
@@ -34,7 +34,6 @@ def db_connect(db_path=DEFAULT_PATH):
|
|||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def home():
|
def home():
|
||||||
|
|
||||||
return render_template("index.html")
|
return render_template("index.html")
|
||||||
|
|
||||||
|
|
||||||
@@ -43,16 +42,16 @@ def deletewallet():
|
|||||||
thewal = request.args.get("wal")
|
thewal = request.args.get("wal")
|
||||||
|
|
||||||
with Database() as db:
|
with Database() as db:
|
||||||
rowss = db.fetchall("SELECT * FROM wallets WHERE hash = ?", (thewal,))
|
wallets = db.fetchall("SELECT * FROM wallets WHERE hash = ?", (thewal,))
|
||||||
|
|
||||||
if rowss:
|
if wallets:
|
||||||
db.execute("UPDATE wallets SET user = ? WHERE hash = ?", (f"del{rowss[0][4]}", rowss[0][0]))
|
db.execute("UPDATE wallets SET user = ? WHERE hash = ?", (f"del{wallets[0][4]}", wallets[0][0]))
|
||||||
db.execute("UPDATE wallets SET adminkey = ? WHERE hash = ?", (f"del{rowss[0][5]}", rowss[0][0]))
|
db.execute("UPDATE wallets SET adminkey = ? WHERE hash = ?", (f"del{wallets[0][5]}", wallets[0][0]))
|
||||||
db.execute("UPDATE wallets SET inkey = ? WHERE hash = ?", (f"del{rowss[0][6]}", rowss[0][0]))
|
db.execute("UPDATE wallets SET inkey = ? WHERE hash = ?", (f"del{wallets[0][6]}", wallets[0][0]))
|
||||||
rowsss = db.fetchall("SELECT * FROM wallets WHERE user = ?", (rowss[0][4],))
|
user_wallets = db.fetchall("SELECT * FROM wallets WHERE user = ?", (wallets[0][4],))
|
||||||
|
|
||||||
if rowsss:
|
if user_wallets:
|
||||||
return render_template("deletewallet.html", theid=rowsss[0][4], thewal=rowsss[0][0])
|
return render_template("deletewallet.html", theid=user_wallets[0][4], thewal=user_wallets[0][0])
|
||||||
|
|
||||||
return render_template("index.html")
|
return render_template("index.html")
|
||||||
|
|
||||||
@@ -183,7 +182,7 @@ def wallet():
|
|||||||
wallet = db.fetchall("SELECT * FROM wallets WHERE hash = ?", (thewal,))
|
wallet = db.fetchall("SELECT * FROM wallets WHERE hash = ?", (thewal,))
|
||||||
|
|
||||||
if wallet:
|
if wallet:
|
||||||
walb = wallet[0][1].split(",")[-1]
|
walb = str(wallet[0][1]).split(",")[-1]
|
||||||
return render_template(
|
return render_template(
|
||||||
"wallet.html",
|
"wallet.html",
|
||||||
thearr=user_wallets,
|
thearr=user_wallets,
|
||||||
@@ -257,16 +256,16 @@ def wallet():
|
|||||||
(thewal, thenme, theid, adminkey, inkey),
|
(thewal, thenme, theid, adminkey, inkey),
|
||||||
)
|
)
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"wallet.html",
|
"wallet.html",
|
||||||
len=len("1"),
|
len=len("1"),
|
||||||
walnme=thenme,
|
walnme=thenme,
|
||||||
walbal="0",
|
walbal="0",
|
||||||
theid=theid,
|
theid=theid,
|
||||||
thewal=thewal,
|
thewal=thewal,
|
||||||
adminkey=adminkey,
|
adminkey=adminkey,
|
||||||
inkey=inkey,
|
inkey=inkey,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.route("/v1/invoices", methods=["GET", "POST"])
|
@app.route("/v1/invoices", methods=["GET", "POST"])
|
||||||
@@ -300,7 +299,7 @@ def api_invoices():
|
|||||||
payment_hash = data["payment_hash"]
|
payment_hash = data["payment_hash"]
|
||||||
|
|
||||||
db.execute(
|
db.execute(
|
||||||
"INSERT INTO apipayments (payhash, amount, wallet, paid, inkey, memo) VALUES (?, ?, ?, 0, ?, ?)'",
|
"INSERT INTO apipayments (payhash, amount, wallet, paid, inkey, memo) VALUES (?, ?, ?, 0, ?, ?)",
|
||||||
(
|
(
|
||||||
payment_hash,
|
payment_hash,
|
||||||
postedjson["value"],
|
postedjson["value"],
|
||||||
@@ -310,113 +309,79 @@ def api_invoices():
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
return jsonify({"pay_req": pay_req, "payment_hash": payment_hash}), 200
|
return jsonify({"pay_req": pay_req, "payment_hash": payment_hash}), 200
|
||||||
|
|
||||||
|
|
||||||
# API requests
|
|
||||||
@app.route("/v1/channels/transactions", methods=["GET", "POST"])
|
@app.route("/v1/channels/transactions", methods=["GET", "POST"])
|
||||||
def api_transactions():
|
def api_transactions():
|
||||||
if request.headers["Content-Type"] == "application/json":
|
if request.headers["Content-Type"] != "application/json":
|
||||||
postedjson = request.json
|
return jsonify({"ERROR": "MUST BE JSON"}), 200
|
||||||
print(postedjson)
|
|
||||||
print(postedjson["payment_request"])
|
|
||||||
|
|
||||||
if "payment_request" in postedjson:
|
postedjson = request.json
|
||||||
con = db_connect()
|
|
||||||
cur = con.cursor()
|
|
||||||
print(request.headers["Grpc-Metadata-macaroon"])
|
|
||||||
print()
|
|
||||||
cur.execute("select * from wallets WHERE adminkey = '" + request.headers["Grpc-Metadata-macaroon"] + "'")
|
|
||||||
rows = cur.fetchall()
|
|
||||||
if len(rows) > 0:
|
|
||||||
cur.close()
|
|
||||||
|
|
||||||
s = postedjson["payment_request"]
|
if "payment_request" not in postedjson:
|
||||||
result = re.search("lnbc(.*)1p", s)
|
|
||||||
tempp = result.group(1)
|
|
||||||
|
|
||||||
alpha = ""
|
|
||||||
num = ""
|
|
||||||
|
|
||||||
for i in range(len(tempp)):
|
|
||||||
if tempp[i].isdigit():
|
|
||||||
num = num + tempp[i]
|
|
||||||
else:
|
|
||||||
alpha += tempp[i]
|
|
||||||
sats = ""
|
|
||||||
if alpha == "n":
|
|
||||||
sats = int(num) / 10
|
|
||||||
elif alpha == "u":
|
|
||||||
sats = int(num) * 100
|
|
||||||
elif alpha == "m":
|
|
||||||
sats = int(num) * 100000
|
|
||||||
|
|
||||||
print(sats)
|
|
||||||
print(alpha)
|
|
||||||
print(num)
|
|
||||||
|
|
||||||
dataj = {"invoice": postedjson["payment_request"]}
|
|
||||||
headers = {"Authorization": "Basic %s" % ADMIN_KEY}
|
|
||||||
r = requests.post(url=API_ENDPOINT + "/payinvoice", json=dataj, headers=headers)
|
|
||||||
data = r.json()
|
|
||||||
print(data)
|
|
||||||
|
|
||||||
con = db_connect()
|
|
||||||
cur = con.cursor()
|
|
||||||
|
|
||||||
cur.execute(
|
|
||||||
"INSERT INTO apipayments (payhash, amount, wallet, paid, adminkey, memo) VALUES ('"
|
|
||||||
+ data["decoded"]["payment_hash"]
|
|
||||||
+ "','"
|
|
||||||
+ str(-int(data["decoded"]["num_satoshis"]))
|
|
||||||
+ "','"
|
|
||||||
+ rows[0][0]
|
|
||||||
+ "','1','"
|
|
||||||
+ request.headers["Grpc-Metadata-macaroon"]
|
|
||||||
+ "','"
|
|
||||||
+ data["decoded"]["description"]
|
|
||||||
+ "')"
|
|
||||||
)
|
|
||||||
con.commit()
|
|
||||||
cur.close()
|
|
||||||
|
|
||||||
con = db_connect()
|
|
||||||
cur = con.cursor()
|
|
||||||
cur.execute("select * from apipayments WHERE payhash = '" + data["decoded"]["payment_hash"] + "'")
|
|
||||||
rowss = cur.fetchall()
|
|
||||||
cur.close()
|
|
||||||
|
|
||||||
data["decoded"]["num_satoshis"]
|
|
||||||
|
|
||||||
lastamt = rows[0][1].split(",")
|
|
||||||
newamt = int(lastamt[-1]) - int(data["decoded"]["num_satoshis"])
|
|
||||||
updamt = rows[0][1] + "," + str(newamt)
|
|
||||||
thetime = time.time()
|
|
||||||
transactions = (
|
|
||||||
rows[0][2] + "!" + rowss[0][5] + "," + str(thetime) + "," + str(rowss[0][1]) + "," + str(newamt)
|
|
||||||
)
|
|
||||||
|
|
||||||
con = db_connect()
|
|
||||||
cur = con.cursor()
|
|
||||||
|
|
||||||
cur.execute(
|
|
||||||
"UPDATE wallets SET balance = '"
|
|
||||||
+ updamt
|
|
||||||
+ "', transactions = '"
|
|
||||||
+ transactions
|
|
||||||
+ "' WHERE hash = '"
|
|
||||||
+ rows[0][0]
|
|
||||||
+ "'"
|
|
||||||
)
|
|
||||||
con.commit()
|
|
||||||
cur.close()
|
|
||||||
|
|
||||||
return jsonify({"PAID": "TRUE"}), 200
|
|
||||||
else:
|
|
||||||
return jsonify({"ERROR": "BAD AUTH"}), 200
|
|
||||||
return jsonify({"ERROR": "NO PAY REQ"}), 200
|
return jsonify({"ERROR": "NO PAY REQ"}), 200
|
||||||
|
|
||||||
return jsonify({"ERROR": "MUST BE JSON"}), 200
|
with Database() as db:
|
||||||
|
wallets = db.fetchall("SELECT * FROM wallets WHERE adminkey = ?", (request.headers["Grpc-Metadata-macaroon"],))
|
||||||
|
|
||||||
|
if not wallets:
|
||||||
|
return jsonify({"ERROR": "BAD AUTH"}), 200
|
||||||
|
|
||||||
|
# TODO: check this unused code
|
||||||
|
# move sats calculation to a helper
|
||||||
|
# ---------------------------------
|
||||||
|
"""
|
||||||
|
s = postedjson["payment_request"]
|
||||||
|
result = re.search("lnbc(.*)1p", s)
|
||||||
|
tempp = result.group(1)
|
||||||
|
|
||||||
|
alpha = ""
|
||||||
|
num = ""
|
||||||
|
|
||||||
|
for i in range(len(tempp)):
|
||||||
|
if tempp[i].isdigit():
|
||||||
|
num = num + tempp[i]
|
||||||
|
else:
|
||||||
|
alpha += tempp[i]
|
||||||
|
sats = ""
|
||||||
|
if alpha == "n":
|
||||||
|
sats = int(num) / 10
|
||||||
|
elif alpha == "u":
|
||||||
|
sats = int(num) * 100
|
||||||
|
elif alpha == "m":
|
||||||
|
sats = int(num) * 100000
|
||||||
|
"""
|
||||||
|
# ---------------------------------
|
||||||
|
|
||||||
|
dataj = {"invoice": postedjson["payment_request"]}
|
||||||
|
headers = {"Authorization": f"Basic {ADMIN_KEY}"}
|
||||||
|
r = requests.post(url=f"{API_ENDPOINT}/payinvoice", json=dataj, headers=headers)
|
||||||
|
data = r.json()
|
||||||
|
|
||||||
|
db.execute(
|
||||||
|
"INSERT INTO apipayments (payhash, amount, wallet, paid, adminkey, memo) VALUES (?, ?, ?, 1, ?, ?)'",
|
||||||
|
(
|
||||||
|
data["decoded"]["payment_hash"],
|
||||||
|
str(-int(data["decoded"]["num_satoshis"])),
|
||||||
|
wallets[0][0],
|
||||||
|
request.headers["Grpc-Metadata-macaroon"],
|
||||||
|
data["decoded"]["description"],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
payment = db.fetchall("SELECT * FROM apipayments WHERE payhash = ?", (data["decoded"]["payment_hash"],))[0]
|
||||||
|
|
||||||
|
lastamt = str(wallets[0][1]).split(",")
|
||||||
|
newamt = int(lastamt[-1]) - int(data["decoded"]["num_satoshis"])
|
||||||
|
updamt = wallets[0][1] + "," + str(newamt)
|
||||||
|
transactions = f"{wallets[0][2]}!{payment[5]},{time.time()},{payment[1]},{newamt}"
|
||||||
|
|
||||||
|
db.execute(
|
||||||
|
"UPDATE wallets SET balance = ?, transactions = ? WHERE hash = ?", (updamt, transactions, wallets[0][0])
|
||||||
|
)
|
||||||
|
|
||||||
|
return jsonify({"PAID": "TRUE"}), 200
|
||||||
|
|
||||||
|
|
||||||
@app.route("/v1/invoice/<payhash>", methods=["GET"])
|
@app.route("/v1/invoice/<payhash>", methods=["GET"])
|
||||||
|
Reference in New Issue
Block a user