* fix: CI yml name * add: mypy configuraion * add: type annotation to waybackpy modules * add: type annotation to test modules * fix: mypy command * add: types-requests to dev deps * fix: disable max-line-length * fix: move pytest.ini into setup.cfg * add: urllib3 to deps * fix: Retry (ref: https://github.com/python/typeshed/issues/6893) * fix: f-string * fix: shorten long lines * add: staticmethod decorator to no-self-use methods * fix: str(headers)->headers_str * fix: error message * fix: revert "str(headers)->headers_str" and ignore assignment CaseInsensitiveDict with str * fix: mypy error
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import requests
|
|
|
|
from . import __version__
|
|
|
|
DEFAULT_USER_AGENT: str = (
|
|
f"waybackpy {__version__} - https://github.com/akamhy/waybackpy"
|
|
)
|
|
|
|
|
|
def latest_version_pypi(package_name: str, user_agent: str = DEFAULT_USER_AGENT) -> str:
|
|
request_url = "https://pypi.org/pypi/" + package_name + "/json"
|
|
headers = {"User-Agent": user_agent}
|
|
response = requests.get(request_url, headers=headers)
|
|
data = response.json()
|
|
if (
|
|
data is not None
|
|
and "info" in data
|
|
and data["info"] is not None
|
|
and "version" in data["info"]
|
|
and data["info"]["version"] is not None
|
|
):
|
|
return str(data["info"]["version"])
|
|
else:
|
|
raise ValueError("Could not get latest pypi version")
|
|
|
|
|
|
def latest_version_github(
|
|
package_name: str, user_agent: str = DEFAULT_USER_AGENT
|
|
) -> str:
|
|
request_url = (
|
|
"https://api.github.com/repos/akamhy/" + package_name + "/releases?per_page=1"
|
|
)
|
|
headers = {"User-Agent": user_agent}
|
|
response = requests.get(request_url, headers=headers)
|
|
data = response.json()
|
|
if (
|
|
data is not None
|
|
and len(data) > 0
|
|
and data[0] is not None
|
|
and "tag_name" in data[0]
|
|
):
|
|
return str(data[0]["tag_name"])
|
|
else:
|
|
raise ValueError("Could not get latest github version")
|