From b6fd956cc3f21e31282772b58f13eb14a276d361 Mon Sep 17 00:00:00 2001 From: Caleb Fontenot Date: Mon, 20 Dec 2021 09:38:59 -0600 Subject: [PATCH] Fix IPv6 weirdness? --- .gitmodules | 3 +++ mcUp.py | 2 ++ parsers/modrinth.py | 21 ++++++++++++++++----- parsers/paperMC.py | 17 ++++++++++------- request-wrapper | 1 + request_wrapper | 1 + 6 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 .gitmodules create mode 160000 request-wrapper create mode 160000 request_wrapper diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7833dea --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "request_wrapper"] + path = request_wrapper + url = https://gitlab.com/snippets/1900824.git diff --git a/mcUp.py b/mcUp.py index d625337..c20e967 100755 --- a/mcUp.py +++ b/mcUp.py @@ -1,6 +1,8 @@ #!/bin/python # Setup Parser import requests +#import socket +#from request_wrapper import requests_wrapper as requests from re import sub import parsers.paperMC import parsers.modrinth diff --git a/parsers/modrinth.py b/parsers/modrinth.py index 27ef098..d890795 100644 --- a/parsers/modrinth.py +++ b/parsers/modrinth.py @@ -1,10 +1,13 @@ from os import error +from types import WrapperDescriptorType from pytz.tzinfo import memorized_timedelta -import requests +#import requests +import socket +from request_wrapper import requests_wrapper as requests import datetime import iso8601 import pytz -debug = False +debug = True if debug == True: import logging from requests import api @@ -14,7 +17,7 @@ if debug == True: requests_log.setLevel(logging.DEBUG) requests_log.propagate = True timeoutTime = 1 -base_api_url = "https://api.modrinth.com/api/v1" +base_api_url = "https://api.modrinth.com:443/api/v1" def failCheck(response): print("Status Code is: "+str(response.status_code)) if response.status_code != 200: @@ -24,12 +27,14 @@ dataCache = {} def cacheData(function_name, cached_data): print("Caching data!") dataCache[function_name] = cached_data + print("Stored "+function_name+"'s data to cache") # def modInfo(project): print("Calling modInfo()...") if "modInfo" in dataCache: + print("Returning cached data!") return dataCache["modInfo"] - response = requests.get(base_api_url+"/mod/"+project) + response = requests.get(base_api_url+"/mod/"+project, family=socket.AF_INET) failCheck(response) api_response = response.json() cacheData("modInfo", api_response) @@ -38,6 +43,7 @@ def modInfo(project): def getVersions(project): print("Calling getVersions()...") if "getVersions" in dataCache: + print("Returning cached data!") return dataCache["getVersions"] workingDict = modInfo(project) versions = workingDict["versions"] @@ -47,18 +53,21 @@ def getVersions(project): def getAllModVersionInfo(project): print("Calling getAllModVersionInfo()...") if "getAllModVersionInfo" in dataCache: + print("Returning cached data!") return dataCache["getAllMinecraftVersionInfo"] versions = getVersions(project) responseList = [] numberOfVersions = len(versions) for item in range(numberOfVersions): - response = requests.get(base_api_url+"/version/"+versions[item]) + response = requests.get(base_api_url+"/version/"+versions[item], family=socket.AF_INET) + failCheck(response) api_response = response.json() responseList.append(api_response) cacheData("getAllMinecraftVersionInfo", responseList) return responseList def determine(project, whatToDetermine): + print("Calling determine()...") modInfo = getAllModVersionInfo(project) numberOfVersions = len(modInfo) determine = [] @@ -69,6 +78,7 @@ def determine(project, whatToDetermine): return determine def getLatestVersion(project): + print("Calling getLatestVersion()...") versions = getVersions(project) publishDates = determine(project, "date_published") #print(publishDates) @@ -89,6 +99,7 @@ def getLatestVersion(project): return list(latest.keys())[0] def getDownloadURL(project, versionID): + print("Calling getDownloadURL()...") versions = getVersions(project) versionInfo = getAllModVersionInfo(project) downloadURLs = {} diff --git a/parsers/paperMC.py b/parsers/paperMC.py index dc8cedf..81f195d 100644 --- a/parsers/paperMC.py +++ b/parsers/paperMC.py @@ -1,6 +1,8 @@ from os import error -import requests -debug = False +#import requests +import socket +from request_wrapper import requests_wrapper as requests +debug = True if debug == True: import logging from requests import api @@ -10,7 +12,7 @@ if debug == True: requests_log.setLevel(logging.DEBUG) requests_log.propagate = True timeoutTime = 1 -base_api_url = "https://papermc.io/api/v2" +base_api_url = "https://papermc.io:443/api/v2" def failCheck(response): print("Status Code is: "+str(response.status_code)) if response.status_code != 200: @@ -20,12 +22,13 @@ dataCache = {} def cacheData(function_name, cached_data): print("Caching data!") dataCache[function_name] = cached_data + print("Stored "+function_name+"'s data to cache") # This function returns the versions from a project from the Paper API. def getVersions(project): print("Calling getVersions()...") if "getVersions" in dataCache: return dataCache["getVersions"] - response = requests.get(base_api_url+"/projects/"+project, timeout=timeoutTime) + response = requests.get(base_api_url+"/projects/"+project, family=socket.AF_INET, timeout=timeoutTime) failCheck(response) api_response = response.json() cacheData("getVersions", api_response['versions']) @@ -40,7 +43,7 @@ def getBuildNumber(project, version): print("Calling getBuildNumber()...") if "getBuildNumber" in dataCache: return dataCache["getBuildNumber"] - response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version, timeout=timeoutTime) + response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version, family=socket.AF_INET, timeout=timeoutTime) failCheck(response) api_response = response.json() cacheData("getBuildNumber", api_response['builds']) @@ -52,7 +55,7 @@ def getBuildInfo(project, version): return dataCache["getBuildInfo"] buildID1 = getBuildNumber(project, version) buildID = str(buildID1[-1]) - response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version+"/builds/"+buildID, timeout=timeoutTime) + response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version+"/builds/"+buildID, family=socket.AF_INET, timeout=timeoutTime) failCheck(response) api_response = response.json() cacheData("getBuildInfo", api_response) @@ -70,7 +73,7 @@ def downloadVersion(project, version): jarName = getJarInfo(project, version) buildID1 = getBuildNumber(project, version) buildID = str(buildID1[-1]) - response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version+"/builds/"+buildID+"/downloads/"+jarName["name"], stream=True, timeout=timeoutTime) + response = requests.get(base_api_url+"/projects/"+project+"/versions/"+version+"/builds/"+buildID+"/downloads/"+jarName["name"], family=socket.AF_INET, stream=True, timeout=timeoutTime) failCheck(response) return response diff --git a/request-wrapper b/request-wrapper new file mode 160000 index 0000000..f2811c5 --- /dev/null +++ b/request-wrapper @@ -0,0 +1 @@ +Subproject commit f2811c5ce989753e7a926f2849489941f21bb2c2 diff --git a/request_wrapper b/request_wrapper new file mode 160000 index 0000000..f2811c5 --- /dev/null +++ b/request_wrapper @@ -0,0 +1 @@ +Subproject commit f2811c5ce989753e7a926f2849489941f21bb2c2