Use GitHub releases API for update checks.

This commit is contained in:
Tobias Gruetzmacher 2015-11-06 23:07:19 +01:00
parent a41574e31a
commit 81827f83bc

View file

@ -4,19 +4,13 @@ Function to check for updates.
"""
import os
import dosagelib
from dosagelib import configuration
from .util import urlopen
from distutils.version import StrictVersion
import requests
# Use the Freecode submit file as source since that file gets updated
# only when releasing a new version.
UPDATE_URL = "https://raw.github.com/wummel/dosage/master/dosage.freecode"
VERSION_TAG = 'Version:'
if os.name == 'nt':
URL_TAG = 'Windows-installer-URL:'
else:
URL_TAG = 'Source-Package-URL:'
UPDATE_URL = "https://api.github.com/repos/webcomics/dosage/releases/latest"
def check_update ():
"""Return the following values:
@ -42,14 +36,14 @@ def check_update ():
def get_online_version ():
"""Download update info and parse it."""
session = requests.session()
page = urlopen(UPDATE_URL, session)
page = urlopen(UPDATE_URL, session).json()
version, url = None, None
for line in page.text.splitlines():
if line.startswith(VERSION_TAG):
version = line.split(':', 1)[1].strip()
elif line.startswith(URL_TAG):
url = line.split(':', 1)[1].strip()
url = url.replace('${version}', version)
version = page['tag_name']
if os.name == 'nt':
url = next((x['browser_download_url'] for x in page['assets'] if x['content_type'] == 'application/x-msdos-program'), configuration.Url)
else:
url = page['tarball_url']
return version, url