|
@ -1,35 +1,58 @@ |
|
|
#views_api.py is for you API endpoints that could be hit by another service |
|
|
from flask import g, jsonify, request |
|
|
|
|
|
|
|
|
#add your dependencies here |
|
|
from lnbits.core.crud import get_user |
|
|
|
|
|
from lnbits.decorators import api_check_wallet_macaroon, api_validate_post_request |
|
|
|
|
|
from lnbits.helpers import Status |
|
|
|
|
|
|
|
|
import json |
|
|
|
|
|
import requests |
|
|
|
|
|
from flask import jsonify, render_template, request, redirect, url_for |
|
|
|
|
|
from lnbits.db import open_db, open_ext_db |
|
|
|
|
|
from lnbits.extensions.tpos import tpos_ext |
|
|
from lnbits.extensions.tpos import tpos_ext |
|
|
|
|
|
from .crud import create_tpos, get_tpos, get_tposs, delete_tpos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@tpos_ext.route("/api/v1/tposs", methods=["GET"]) |
|
|
|
|
|
@api_check_wallet_macaroon(key_type="invoice") |
|
|
|
|
|
def api_tposs(): |
|
|
|
|
|
|
|
|
|
|
|
wallet_ids = [g.wallet.id] |
|
|
|
|
|
|
|
|
|
|
|
if "all_wallets" in request.args: |
|
|
|
|
|
wallet_ids = get_user(g.wallet.user).wallet_ids |
|
|
|
|
|
|
|
|
|
|
|
return jsonify([tpos._asdict() for tpos in get_tposs(wallet_ids)]), Status.OK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@tpos_ext.route("/api/v1/tposs", methods=["POST"]) |
|
|
|
|
|
@api_check_wallet_macaroon(key_type="invoice") |
|
|
|
|
|
@api_validate_post_request(required_params=["name", "currency"]) |
|
|
|
|
|
def api_tpos_create(): |
|
|
|
|
|
print("poo") |
|
|
|
|
|
|
|
|
|
|
|
tpos = create_tpos(wallet_id=g.wallet.id, name=g.data["name"], currency=g.data["currency"]) |
|
|
|
|
|
|
|
|
|
|
|
return jsonify(tpos._asdict()), Status.CREATED |
|
|
|
|
|
|
|
|
|
|
|
@tpos_ext.route("/api/v1/tposs/<tpos_id>", methods=["DELETE"]) |
|
|
|
|
|
@api_check_wallet_macaroon(key_type="invoice") |
|
|
|
|
|
def api_tpos_delete(tpos_id): |
|
|
|
|
|
tpos = get_tpos(tpos_id) |
|
|
|
|
|
|
|
|
|
|
|
if not tpos: |
|
|
|
|
|
return jsonify({"message": "TPoS does not exist."}), Status.NOT_FOUND |
|
|
|
|
|
|
|
|
|
|
|
if tpos.wallet != g.wallet.id: |
|
|
|
|
|
return jsonify({"message": "Not your tpos."}), Status.FORBIDDEN |
|
|
|
|
|
|
|
|
|
|
|
delete_tpos(tpos_id) |
|
|
|
|
|
|
|
|
|
|
|
return '', Status.NO_CONTENT |
|
|
|
|
|
|
|
|
|
|
|
@tpos_ext.route("/api/v1/tposs/invoice/<tpos_id>", methods=["POST"]) |
|
|
|
|
|
@api_validate_post_request(required_params=["amount"]) |
|
|
|
|
|
def api_tpos_create_invoice(tpos_id): |
|
|
|
|
|
r = get_tpos(tpos_id) |
|
|
|
|
|
print(r) |
|
|
|
|
|
rr = get_wallet(tpos_id.id) |
|
|
|
|
|
print(rr) |
|
|
|
|
|
# api_payments_create_invoice(memo=tpos_id.id, amount=amount, ) |
|
|
|
|
|
|
|
|
|
|
|
return jsonify(rr), Status.CREATED |
|
|
|
|
|
|
|
|
#add your endpoints here |
|
|
|
|
|
|
|
|
|
|
|
@tpos_ext.route("/api/v1/fetch", methods=["GET","POST"]) |
|
|
|
|
|
def api_tpos(): |
|
|
|
|
|
"""Try to add descriptions for others.""" |
|
|
|
|
|
|
|
|
|
|
|
data = request.json |
|
|
|
|
|
sats = data["sats"] |
|
|
|
|
|
pos = data["pos"] |
|
|
|
|
|
|
|
|
|
|
|
with open_ext_db("tpos") as events_ext_db: |
|
|
|
|
|
user_pos = events_ext_db.fetchall("SELECT * FROM tpos WHERE uni = ?", (pos,)) |
|
|
|
|
|
if not user_pos: |
|
|
|
|
|
return jsonify({"status": "ERROR", "reason":"NO POS"}), 400 |
|
|
|
|
|
print(user_pos[0][4]) |
|
|
|
|
|
header = {"Content-Type": "application/json", "Grpc-Metadata-macaroon": user_pos[0][4]} |
|
|
|
|
|
data = {"value": sats, "memo": "TPOS"} |
|
|
|
|
|
print(url_for("api_invoices", _external=True)) |
|
|
|
|
|
r = requests.post(url=url_for("api_invoices", _external=True), headers=header, data=json.dumps(data)) |
|
|
|
|
|
r_json = r.json() |
|
|
|
|
|
|
|
|
|
|
|
if "ERROR" in r_json: |
|
|
|
|
|
return jsonify({"status": "ERROR", "reason": r_json["ERROR"]}), 400 |
|
|
|
|
|
|
|
|
|
|
|
return jsonify({"status": "TRUE","pay_req": r_json["pay_req"] ,"payment_hash": r_json["payment_hash"] }), 200 |
|
|
|
|
|