mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-20 13:50:12 +01:00
Improve http update check mode
This commit is contained in:
parent
057c1f06e4
commit
381bbb60ac
@ -1084,13 +1084,19 @@ It currently only works for git, hg and git-svn repositories. In the case of
|
|||||||
the latter, the repo URL must encode the path to the trunk and tags or else no
|
the latter, the repo URL must encode the path to the trunk and tags or else no
|
||||||
tags will be found.
|
tags will be found.
|
||||||
@item
|
@item
|
||||||
@code{HTTP} - An HTTP request is performed, and the resulting document is
|
@code{HTTP} - HTTP requests are used to determine the current version code and
|
||||||
scanned for two regular expressions, the first specifying the version name
|
version name. This is controlled by the @code{Update Check Data} field, which
|
||||||
and the second the version code. The expression for the version name can be
|
is of the form @code{urlcode|excode|urlver|exver}.
|
||||||
blank, but the version code must always be correct.
|
|
||||||
|
|
||||||
The @code{Update Check Data} field is used to provide the url and the two
|
Firstly, if @code{urlcode} is non-empty, the document from that URL is
|
||||||
regular expressions, in the form @code{url|ex1|ex2}.
|
retrieved, and matched against the regular expression @code{excode}, with the
|
||||||
|
first group becoming the version code.
|
||||||
|
|
||||||
|
Secondly, if @code{urlver} is non-empty, the document from that URL is
|
||||||
|
retrieved, and matched against the regular expression @code{exver}, with the
|
||||||
|
first group becoming the version name. The @code{urlver} field can be set to
|
||||||
|
simply '.' which says to use the same document returned for the version code
|
||||||
|
again, rather than retrieving a different one.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node Update Check Data
|
@node Update Check Data
|
||||||
|
@ -43,27 +43,30 @@ def check_http(app):
|
|||||||
if not 'Update Check Data' in app:
|
if not 'Update Check Data' in app:
|
||||||
raise Exception('Missing Update Check Data')
|
raise Exception('Missing Update Check Data')
|
||||||
|
|
||||||
url, verex, codeex = app['Update Check Data'].split('|')
|
urlcode, codeex, urlver, verex = app['Update Check Data'].split('|')
|
||||||
|
|
||||||
req = urllib2.Request(url, None)
|
vercode = "99999999"
|
||||||
resp = urllib2.urlopen(req, None, 20)
|
if len(urlcode) > 0:
|
||||||
page = resp.read()
|
req = urllib2.Request(urlcode, None)
|
||||||
|
resp = urllib2.urlopen(req, None, 20)
|
||||||
|
page = resp.read()
|
||||||
|
|
||||||
if len(verex) > 0:
|
|
||||||
m = re.search(verex, page)
|
|
||||||
if not m:
|
|
||||||
raise Exception("No RE match for version")
|
|
||||||
version = m.group(1)
|
|
||||||
else:
|
|
||||||
version = "??"
|
|
||||||
|
|
||||||
if len(codeex) > 0:
|
|
||||||
m = re.search(codeex, page)
|
m = re.search(codeex, page)
|
||||||
if not m:
|
if not m:
|
||||||
raise Exception("No RE match for version code")
|
raise Exception("No RE match for version code")
|
||||||
vercode = m.group(1)
|
vercode = m.group(1)
|
||||||
else:
|
|
||||||
vercode = "99999999"
|
version = "??"
|
||||||
|
if len(urlver) > 0:
|
||||||
|
if urlver != '.':
|
||||||
|
req = urllib2.Request(urlver, None)
|
||||||
|
resp = urllib2.urlopen(req, None, 20)
|
||||||
|
page = resp.read()
|
||||||
|
|
||||||
|
m = re.search(verex, page)
|
||||||
|
if not m:
|
||||||
|
raise Exception("No RE match for version")
|
||||||
|
version = m.group(1)
|
||||||
|
|
||||||
return (version, vercode)
|
return (version, vercode)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user