handlers/github: remove
* Mirror removed and api has very strict ratelimits making impractical to use. * https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f119d00dab0c3bd087faab36f1a44734772a9d75 Signed-off-by: Alfred Wingate <parona@protonmail.com>
This commit is contained in:
		| @@ -1,66 +0,0 @@ | ||||
| # Copyright 2011 Corentin Chary <corentin.chary@gmail.com> | ||||
| # Copyright 2020-2023 src_prepare group | ||||
| # Distributed under the terms of the GNU General Public License v2 | ||||
|  | ||||
| import json | ||||
| import re | ||||
| import urllib.error | ||||
| import urllib.parse | ||||
| import urllib.request | ||||
|  | ||||
| import portage | ||||
|  | ||||
| from euscan import helpers, mangling, output | ||||
|  | ||||
| HANDLER_NAME = "github" | ||||
| CONFIDENCE = 100 | ||||
| PRIORITY = 90 | ||||
|  | ||||
|  | ||||
| def can_handle(pkg, url=None): | ||||
|     return url and url.startswith("mirror://github/") | ||||
|  | ||||
|  | ||||
| def guess_package(cp, url): | ||||
|     match = re.search("^mirror://github/(.*?)/(.*?)/(.*)$", url) | ||||
|  | ||||
|     assert match | ||||
|     return (match.group(1), match.group(2), match.group(3)) | ||||
|  | ||||
|  | ||||
| def scan_url(pkg, url, options): | ||||
|     "http://developer.github.com/v3/repos/downloads/" | ||||
|  | ||||
|     user, project, filename = guess_package(pkg.cpv, url) | ||||
|  | ||||
|     # find out where version is expected to be found | ||||
|     cp, ver, rev = portage.pkgsplit(pkg.cpv) | ||||
|     if ver not in filename: | ||||
|         return | ||||
|  | ||||
|     # now create a filename-matching regexp | ||||
|     # XXX: supposedly replace first with (?P<foo>...) | ||||
|     # and remaining ones with (?P=foo) | ||||
|     fnre = re.compile("^%s$" % re.escape(filename).replace(re.escape(ver), "(.*?)")) | ||||
|  | ||||
|     output.einfo( | ||||
|         f"Using github API for: project={project} user={user} filename={filename}" | ||||
|     ) | ||||
|  | ||||
|     dlreq = urllib.request.urlopen( | ||||
|         f"https://api.github.com/repos/{user}/{project}/downloads" | ||||
|     ) | ||||
|     dls = json.load(dlreq) | ||||
|  | ||||
|     ret = [] | ||||
|     for dl in dls: | ||||
|         m = fnre.match(dl["name"]) | ||||
|  | ||||
|         if m: | ||||
|             pv = mangling.mangle_version(m.group(1), options) | ||||
|             if helpers.version_filtered(cp, ver, pv): | ||||
|                 continue | ||||
|  | ||||
|             url = mangling.mangle_url(dl["html_url"], options) | ||||
|             ret.append((url, pv, HANDLER_NAME, CONFIDENCE)) | ||||
|     return ret | ||||
		Reference in New Issue
	
	Block a user