Dynamically determine latest wow-lite version for API method

master
dsc 4 years ago
parent ca48a0f0ed
commit 1691e08f01

@ -1,3 +1,5 @@
import re
import requests import requests
from flask import jsonify, send_from_directory, Response from flask import jsonify, send_from_directory, Response
from flask_yoloapi import endpoint, parameter from flask_yoloapi import endpoint, parameter
@ -66,28 +68,30 @@ def api_qr_generate(address):
return send_from_directory('static/qr', '%s.png' % address) return send_from_directory('static/qr', '%s.png' % address)
@app.route('/api/1/wowlight') @app.route('/api/1/wowlite')
@endpoint.api( @endpoint.api(
parameter('version', type=str, location='args', required=True) parameter('version', type=str, location='args', required=True)
) )
def api_wowlight_version_check(version): def api_wowlight_version_check(version: str) -> bool:
""" """
Checks incoming wowlight wallet version, returns False when the version is Checks incoming wow-lite wallet version, returns False when the version is too old and needs to be upgraded.
too old and needs to be upgraded (due to hard-forks)
:param version: :param version:
:return: bool :return: bool
""" """
versions = { url = "https://raw.githubusercontent.com/wownero/wow-lite-wallet/master/src/renderer/components/Landing/LandingPage.vue"
'0.1.0': False, try:
'0.1.1': False, resp = requests.get(url, headers={"User-Agent": "Mozilla 5.0"})
'0.1.2': False, resp.raise_for_status()
'0.1.3': True content = resp.content.decode()
} except:
return True # default to true
if version not in versions:
# parse latest version
current = next(re.finditer(r"wowlite\?version=(\d+.\d+.\d+)", content), None)
if not current:
return False return False
return versions[version] return version == current.group(1)
@app.route('/api/1/wow/supply') @app.route('/api/1/wow/supply')

Loading…
Cancel
Save