diff --git a/server.py b/server.py index 8226cb7..a872721 100644 --- a/server.py +++ b/server.py @@ -86,7 +86,49 @@ def verify_domain(): "params": [domain] } ) - return jsonify(nameInfo.json()), 200 + # Verify error is none + if nameInfo.status_code != 200: + return jsonify({"error": "Failed to get name info"}), 500 + + # Convert response to JSON + try: + nameInfo = nameInfo.json() + except json.JSONDecodeError: + return jsonify({"error": "Failed to decode JSON response"}), 500 + + if nameInfo["error"] is not None: + return jsonify({"error": nameInfo["error"]}), 500 + + # Get .result.info.owner.hash and .result.info.owner.index + if "result" not in nameInfo or "info" not in nameInfo["result"]: + return jsonify({"error": "Invalid response format"}), 500 + if "owner" not in nameInfo["result"]["info"]: + return jsonify({"error": "Owner not found in response"}), 500 + if "hash" not in nameInfo["result"]["info"]["owner"] or "index" not in nameInfo["result"]["info"]["owner"]: + return jsonify({"error": "Owner hash or index not found in response"}), 500 + + owner_hash = nameInfo["result"]["info"]["owner"]["hash"] + owner_index = nameInfo["result"]["info"]["owner"]["index"] + + coinInfo = requests.get(f"http://x:{apiKEY}@{host}:12037/coin/{owner_hash}/{owner_index}") + if coinInfo.status_code != 200: + return jsonify({"error": "Failed to get coin info"}), 500 + + # Convert coinInfo response to JSON + try: + coinInfo = coinInfo.json() + except json.JSONDecodeError: + return jsonify({"error": "Failed to decode JSON response"}), 500 + + if "address" not in coinInfo: + return jsonify({"error": "Address not found in coin info"}), 500 + + return jsonify({ + "domain": domain, + "owner_hash": owner_hash, + "owner_index": owner_index, + "address": coinInfo["address"] + }), 200 @app.route("/renew", methods=["POST"]) def renew():