Compare commits

..

5 Commits

Author SHA1 Message Date
rubenwardy
6ce495fcd3 Fix crash on reading mod.conf from Github 2019-08-09 11:27:54 +01:00
rubenwardy
776a3eff2a Fail gracefully when given a bad git reference 2019-08-09 11:25:19 +01:00
rubenwardy
04e8ae5bdd Fix unexpected crash on bad Github URL 2019-08-09 11:17:39 +01:00
rubenwardy
18b9fb3876 Fix typo in zip uploading 2019-08-09 11:10:45 +01:00
rubenwardy
1da86f27a7 Fix topic ID parse error in import topics task 2019-07-29 23:31:42 +01:00
4 changed files with 28 additions and 10 deletions

View File

@@ -99,11 +99,19 @@ def parseTitle(title):
def getLinksFromModSearch(): def getLinksFromModSearch():
links = {} links = {}
contents = urllib.request.urlopen("https://krock-works.uk.to/minetest/modList.php").read().decode("utf-8") try:
for x in json.loads(contents): contents = urllib.request.urlopen("https://krock-works.uk.to/minetest/modList.php").read().decode("utf-8")
link = x.get("link") for x in json.loads(contents):
if link is not None: try:
links[int(x["topicId"])] = link link = x.get("link")
if link is not None:
links[int(x["topicId"])] = link
except ValueError:
pass
except urllib.error.URLError:
print("Unable to open krocks mod search!")
return links
return links return links

View File

@@ -29,6 +29,10 @@ from app.utils import randomString
class GithubURLMaker: class GithubURLMaker:
def __init__(self, url): def __init__(self, url):
self.baseUrl = None
self.user = None
self.repo = None
# Rewrite path # Rewrite path
import re import re
m = re.search("^\/([^\/]+)\/([^\/]+)\/?$", url.path) m = re.search("^\/([^\/]+)\/([^\/]+)\/?$", url.path)
@@ -51,6 +55,9 @@ class GithubURLMaker:
def getScreenshotURL(self): def getScreenshotURL(self):
return self.baseUrl + "/screenshot.png" return self.baseUrl + "/screenshot.png"
def getModConfURL(self):
return self.baseUrl + "/mod.conf"
def getCommitsURL(self, branch): def getCommitsURL(self, branch):
return "https://api.github.com/repos/{}/{}/commits?sha={}" \ return "https://api.github.com/repos/{}/{}/commits?sha={}" \
.format(self.user, self.repo, urllib.parse.quote_plus(branch)) .format(self.user, self.repo, urllib.parse.quote_plus(branch))
@@ -339,8 +346,11 @@ def makeVCSReleaseFromGithub(id, branch, release, url):
raise TaskError("Invalid github repo URL") raise TaskError("Invalid github repo URL")
commitsURL = urlmaker.getCommitsURL(branch) commitsURL = urlmaker.getCommitsURL(branch)
contents = urllib.request.urlopen(commitsURL).read().decode("utf-8") try:
commits = json.loads(contents) contents = urllib.request.urlopen(commitsURL).read().decode("utf-8")
commits = json.loads(contents)
except HTTPError:
raise TaskError("Unable to get commits for Github repository. Either the repository or reference doesn't exist.")
if len(commits) == 0 or not "sha" in commits[0]: if len(commits) == 0 or not "sha" in commits[0]:
raise TaskError("No commits found") raise TaskError("No commits found")
@@ -349,7 +359,6 @@ def makeVCSReleaseFromGithub(id, branch, release, url):
release.task_id = None release.task_id = None
release.commit_hash = commits[0]["sha"] release.commit_hash = commits[0]["sha"]
release.approve(release.package.author) release.approve(release.package.author)
print(release.url)
db.session.commit() db.session.commit()
return release.url return release.url

View File

@@ -50,7 +50,7 @@ def doFileUpload(file, fileType, fileTypeDesc):
if fileType == "image": if fileType == "image":
allowedExtensions = ["jpg", "jpeg", "png"] allowedExtensions = ["jpg", "jpeg", "png"]
isImage = True isImage = True
elif filetype == "zip": elif fileType == "zip":
allowedExtensions = ["zip"] allowedExtensions = ["zip"]
else: else:
raise Exception("Invalid fileType") raise Exception("Invalid fileType")

View File

@@ -12,7 +12,8 @@ GitHub-Flask~=3.2
SQLAlchemy-Searchable==1.0.3 SQLAlchemy-Searchable==1.0.3
beautifulsoup4~=4.6 beautifulsoup4~=4.6
celery~=4.2 celery==4.1.1
kombu==4.2.0
GitPython~=2.1 GitPython~=2.1
lxml~=4.2 lxml~=4.2
pillow~=5.3 pillow~=5.3