From 034f94cff79f4d20f51025977a0422116a9c6ba0 Mon Sep 17 00:00:00 2001 From: Alexander Yalov Date: Thu, 11 Apr 2019 01:44:26 +0300 Subject: [PATCH] manufacturer --- .gitignore | 2 + ChangeLog.md | 63 +++++ CommNetAntennasExtension.version | 22 ++ .../CommNetAntennasExtension/ChangeLog.md | 63 +++++ .../CommNetAntennasExtension/ChangeLog.txt | 61 ----- .../CommNetAntennasExtension.version | 9 +- .../DeployableAntenna.cfg | 2 +- .../Parts/RTantennas-patch.cfg | 5 + .../localization/en-us.cfg | 2 + .../localization/ru.cfg | 1 + GameData/ModuleManager.3.1.2.dll | Bin 120320 -> 0 bytes GameData/ModuleManager.4.0.2.dll | Bin 0 -> 135168 bytes release.bat | 37 --- release.json | 10 + release.py | 235 ++++++++++++++++++ release_spacedock_utils.py | 229 +++++++++++++++++ 16 files changed, 635 insertions(+), 106 deletions(-) create mode 100644 ChangeLog.md create mode 100644 CommNetAntennasExtension.version create mode 100644 GameData/CommNetAntennasExtension/ChangeLog.md delete mode 100644 GameData/CommNetAntennasExtension/ChangeLog.txt delete mode 100644 GameData/ModuleManager.3.1.2.dll create mode 100644 GameData/ModuleManager.4.0.2.dll delete mode 100644 release.bat create mode 100644 release.json create mode 100644 release.py create mode 100644 release_spacedock_utils.py diff --git a/.gitignore b/.gitignore index a64d57b..584a579 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ packages/ /CKAN/ +/release_token.json +__pycache__/ diff --git a/ChangeLog.md b/ChangeLog.md new file mode 100644 index 0000000..51b8260 --- /dev/null +++ b/ChangeLog.md @@ -0,0 +1,63 @@ +ChangeLog: + +## Version 2.0.1 + * KSP 1.7, remove KSP max version limit + * update localization + * update MM 4.0.2 + +## Version 2.0.0 + * The plugin is excluded to the separate CommNet Antennas Info, + * Only parts are leaved there. + * either of the two 500Gm antennas cannot be a first part now, as any other mod's and stock antennas + * update MM 3.1.2 + +## Version 1.1.1.1 + * Plugin: Localized Internal AntennaType + +## Version 1.1.1 + * Plugin: Localized AntennaType + +## Version 1.1.0 (Plugin Update) + * shows modified ratings (if you have changed power modifiers in the settings) + * shows all DSN levels (Custom Barn Kit supported) + * shows DSN ratings, hightlights active DSN level, + * shows range to Built-in antenna for relays + * compact ## Version for internal antennas + +## Version 1.0.3 + * HG-25 is HG-32 now. + * When this antenna was included, the purpose was to make + * InnerSOI Commnet Network reaching Minmus with 2 of those on each vessel. + * But HG-25 doesn't make this true, because of Combinability, + * so the antenna-power was increased. + +## Version 1.0.2 + * fixed large power consumption of the HG-25 + +## Version 1.0.1 + * Recompile for KSP 1.5.1 + * fixed RelayTech One antennaType (Relay) + +## Version 1.0.0 + * Recompile for KSP 1.5.0 + * Russian localization + * Update MM to 3.1.0 + +## Version 0.9.5 + * check working with RemoteTechRedevAntennas 0.1.1 + * update desc + * add MM to archive + +## Version 0.9.3 + * fix bug in the ja-localization + +## Version 0.9.2 + * fix technodes + +## Version 0.9.1 + * remove RT art assets + +## Version 0.9 + * direct antennas: 5M and 500G + * relay antennas: 25M, 7G, 25G, 500G + * plugin for showing CombinabilityExponent in the VAB diff --git a/CommNetAntennasExtension.version b/CommNetAntennasExtension.version new file mode 100644 index 0000000..8c2e1a1 --- /dev/null +++ b/CommNetAntennasExtension.version @@ -0,0 +1,22 @@ +{ + "NAME": "CommNetAntennasExtension", + "URL": "https://raw.githubusercontent.com/yalov/CommNetAntennasExtension/master/CommNetAntennasExtension.version", + "DOWNLOAD": "https://github.com/yalov/CommNetAntennasExtension/releases", + "VERSION": { + "MAJOR": 2, + "MINOR": 0, + "PATCH": 1, + "BUILD": 0 + }, + "KSP_VERSION": { + "MAJOR": 1, + "MINOR": 7, + "PATCH": 0 + }, + "KSP_VERSION_MIN": { + "MAJOR": 1, + "MINOR": 6, + "PATCH": 0 + } +} + diff --git a/GameData/CommNetAntennasExtension/ChangeLog.md b/GameData/CommNetAntennasExtension/ChangeLog.md new file mode 100644 index 0000000..51b8260 --- /dev/null +++ b/GameData/CommNetAntennasExtension/ChangeLog.md @@ -0,0 +1,63 @@ +ChangeLog: + +## Version 2.0.1 + * KSP 1.7, remove KSP max version limit + * update localization + * update MM 4.0.2 + +## Version 2.0.0 + * The plugin is excluded to the separate CommNet Antennas Info, + * Only parts are leaved there. + * either of the two 500Gm antennas cannot be a first part now, as any other mod's and stock antennas + * update MM 3.1.2 + +## Version 1.1.1.1 + * Plugin: Localized Internal AntennaType + +## Version 1.1.1 + * Plugin: Localized AntennaType + +## Version 1.1.0 (Plugin Update) + * shows modified ratings (if you have changed power modifiers in the settings) + * shows all DSN levels (Custom Barn Kit supported) + * shows DSN ratings, hightlights active DSN level, + * shows range to Built-in antenna for relays + * compact ## Version for internal antennas + +## Version 1.0.3 + * HG-25 is HG-32 now. + * When this antenna was included, the purpose was to make + * InnerSOI Commnet Network reaching Minmus with 2 of those on each vessel. + * But HG-25 doesn't make this true, because of Combinability, + * so the antenna-power was increased. + +## Version 1.0.2 + * fixed large power consumption of the HG-25 + +## Version 1.0.1 + * Recompile for KSP 1.5.1 + * fixed RelayTech One antennaType (Relay) + +## Version 1.0.0 + * Recompile for KSP 1.5.0 + * Russian localization + * Update MM to 3.1.0 + +## Version 0.9.5 + * check working with RemoteTechRedevAntennas 0.1.1 + * update desc + * add MM to archive + +## Version 0.9.3 + * fix bug in the ja-localization + +## Version 0.9.2 + * fix technodes + +## Version 0.9.1 + * remove RT art assets + +## Version 0.9 + * direct antennas: 5M and 500G + * relay antennas: 25M, 7G, 25G, 500G + * plugin for showing CombinabilityExponent in the VAB diff --git a/GameData/CommNetAntennasExtension/ChangeLog.txt b/GameData/CommNetAntennasExtension/ChangeLog.txt deleted file mode 100644 index 430f2d3..0000000 --- a/GameData/CommNetAntennasExtension/ChangeLog.txt +++ /dev/null @@ -1,61 +0,0 @@ -ChangeLog: - -Version 2.0.0 - The plugin is excluded to the separate CommNet Antennas Info, - Only parts are leaved there. - either of the two 500Gm antennas cannot be a first part now, as any other mod's and stock antennas - update MM 3.1.2 - -Version 1.1.1.1 - Plugin: Localized Internal AntennaType - -Version 1.1.1 - Plugin: Localized AntennaType - - -Version 1.1.0 (Plugin Update) - shows modified ratings (if you have changed power modifiers in the settings) - shows all DSN levels (Custom Barn Kit supported) - shows DSN ratings, hightlights active DSN level, - shows range to Built-in antenna for relays - compact version for internal antennas - -Version 1.0.3 - HG-25 is HG-32 now. - When this antenna was included, the purpose was to make - InnerSOI Commnet Network reaching Minmus with 2 of those on each vessel. - But HG-25 doesn't make this true, because of Combinability, - so the antenna-power was increased. - -Version 1.0.2 - fixed large power consumption of the HG-25 - -Version 1.0.1 - Recompile for KSP 1.5.1 - fixed RelayTech One antennaType (Relay) - -Version 1.0.0 - Recompile for KSP 1.5.0 - Russian localization - Update MM to 3.1.0 - -Version 0.9.5 - check working with RemoteTechRedevAntennas 0.1.1 - update desc - add MM to archive - -Version 0.9.3 - fix bug in the ja-localization - -Version 0.9.2 - fix technodes - -Version 0.9.1 - remove RT art assets - -Version 0.9 - direct antennas: 5M and 500G - relay antennas: 25M, 7G, 25G, 500G - plugin for showing CombinabilityExponent in the VAB - - diff --git a/GameData/CommNetAntennasExtension/CommNetAntennasExtension.version b/GameData/CommNetAntennasExtension/CommNetAntennasExtension.version index 39e2cff..8c2e1a1 100644 --- a/GameData/CommNetAntennasExtension/CommNetAntennasExtension.version +++ b/GameData/CommNetAntennasExtension/CommNetAntennasExtension.version @@ -5,23 +5,18 @@ "VERSION": { "MAJOR": 2, "MINOR": 0, - "PATCH": 0, + "PATCH": 1, "BUILD": 0 }, "KSP_VERSION": { "MAJOR": 1, - "MINOR": 6, + "MINOR": 7, "PATCH": 0 }, "KSP_VERSION_MIN": { "MAJOR": 1, "MINOR": 6, "PATCH": 0 - }, - "KSP_VERSION_MAX": { - "MAJOR": 1, - "MINOR": 6, - "PATCH": 9 } } diff --git a/GameData/CommNetAntennasExtension/Parts/CommDeployableAntenna/DeployableAntenna.cfg b/GameData/CommNetAntennasExtension/Parts/CommDeployableAntenna/DeployableAntenna.cfg index 0e32ecf..34e8b7c 100644 --- a/GameData/CommNetAntennasExtension/Parts/CommDeployableAntenna/DeployableAntenna.cfg +++ b/GameData/CommNetAntennasExtension/Parts/CommDeployableAntenna/DeployableAntenna.cfg @@ -17,7 +17,7 @@ PART category = Communication subcategory = 0 title = #CAE_DeployableAntenna_title // C2+ High Gain Antenna HG-25 // HG-20 High Gain Antenna - manufacturer = Ionic Symphonic Protonic Electronics + manufacturer = #CAE_manufacturer // CommNet Antennas Extension description = #CAE_DeployableAntenna_desc tags = CAE_DeployableAntenna_tags attachRules = 0,1,0,0,1 diff --git a/GameData/CommNetAntennasExtension/Parts/RTantennas-patch.cfg b/GameData/CommNetAntennasExtension/Parts/RTantennas-patch.cfg index fc9d6fd..f6bd6c6 100644 --- a/GameData/CommNetAntennasExtension/Parts/RTantennas-patch.cfg +++ b/GameData/CommNetAntennasExtension/Parts/RTantennas-patch.cfg @@ -8,6 +8,7 @@ @title = #CAE_CommAntenna_title // C2 Communotron EXP-VR-2T // CommTech EXP-VR-2T @description = #CAE_CommAntenna_desc %tags = #CAE_CommAntenna_tags + %manufacturer = #CAE_manufacturer @mass = 0.02 @crashTolerance = 7 @maxTemp = 2000 @@ -34,6 +35,7 @@ @title = #CAE_CommDish1_title // C3+ Relay Antenna RA-7 //Reflectron KR-7 @description = #CAE_CommDish1_desc %tags = #CAE_CommDish1_tags + %manufacturer = #CAE_manufacturer @mass = 0.21 @crashTolerance = 8 @maxTemp = 2000 @@ -59,6 +61,7 @@ @title = #CAE_CommDish2_title // C4+ Relay Antenna RA-25 //Reflectron KR-14 @description = #CAE_CommDish2_desc %tags = #CAE_CommDish2_tags + %manufacturer = #CAE_manufacturer @mass = 0.4 @crashTolerance = 7 @maxTemp = 2000 @@ -84,6 +87,7 @@ @title = #CAE_CommDish3_title // C5+ Communotron "Tigger" // Reflectron GX-128 @description = #CAE_CommDish3_desc %tags = #CAE_CommDish3_tags + %manufacturer = #CAE_manufacturer %attachRules = 1,1,0,0,1 @mass = 0.5 @crashTolerance = 7 @@ -110,6 +114,7 @@ @title = #CAE_CommDish4_title // C5+ RelayTech One // CommTech-1 @description = #CAE_CommDish4_desc %tags = #CAE_CommDish4_tags + %manufacturer = #CAE_manufacturer %attachRules = 1,1,0,0,1 @mass = 1.5 @crashTolerance = 8 diff --git a/GameData/CommNetAntennasExtension/localization/en-us.cfg b/GameData/CommNetAntennasExtension/localization/en-us.cfg index 32fbe80..637f9c2 100644 --- a/GameData/CommNetAntennasExtension/localization/en-us.cfg +++ b/GameData/CommNetAntennasExtension/localization/en-us.cfg @@ -3,6 +3,8 @@ en-us { + #CAE_manufacturer = CommNet Antennas Extension + #CAE_CommAntenna_title = C2 Communotron EXP-VR-2T #CAE_CommAntenna_desc = This effective and compact folding antenna is highly recommended for your research missions. #CAE_CommAntenna_tags = aerial antenna deploy direct extend fold radio signal transmi diff --git a/GameData/CommNetAntennasExtension/localization/ru.cfg b/GameData/CommNetAntennasExtension/localization/ru.cfg index dd126fe..29c93d7 100644 --- a/GameData/CommNetAntennasExtension/localization/ru.cfg +++ b/GameData/CommNetAntennasExtension/localization/ru.cfg @@ -2,6 +2,7 @@ { ru { + #CAE_manufacturer = CommNet Antennas Extension #CAE_CommAntenna_title = Коммунотрон EXP-VR-2T #CAE_CommAntenna_desc = "Эта эффективная и компактная раскрывающаяся антенна крайне рекомендуется для ваших исследовательных миссий. diff --git a/GameData/ModuleManager.3.1.2.dll b/GameData/ModuleManager.3.1.2.dll deleted file mode 100644 index 26f25937703f65727f31aaf27d3ecfc7d713839b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120320 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 CQ%das diff --git a/GameData/ModuleManager.4.0.2.dll b/GameData/ModuleManager.4.0.2.dll new file mode 100644 index 0000000000000000000000000000000000000000..3ef00da8f3c2ee3964835eee5461d7ab2ead2c9a GIT binary patch literal 135168 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

W)Gsi#YWUAE~iOX!YIZT(WUJujd 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≥LWux-~+B^^&$0(+22CBY6<42`w>v9!r@-P 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 M(fl2|{~ZeaKiwp@PXGV_ literal 0 HcmV?d00001 diff --git a/release.bat b/release.bat deleted file mode 100644 index d18e1d6..0000000 --- a/release.bat +++ /dev/null @@ -1,37 +0,0 @@ -@echo off - -set MODNAME=CommNetAntennasExtension -set MODFOLDER=CommNetAntennasExtension -set VERSIONFILE=GameData\%MODFOLDER%\%MODNAME%.version -set RELEASESDIR=Releases -set ZIP="c:\Program Files\7-zip\7z.exe" - -REM The following requires the JQ program, available here: https://stedolan.github.io/jq/download/ -set JD=c:\Users\User\Games\Development\jq-win64 - -copy %VERSIONFILE% tmp.version -set VERSIONFILE=tmp.version - -%JD% ".VERSION.MAJOR" %VERSIONFILE% >tmpfile -set /P major=tmpfile -set /P minor=tmpfile -set /P patch=tmpfile -set /P build=.+?)\n({0}|\n\Z|\Z)".format(version) + desc = re.search(pattern, changelog, re.DOTALL).group('last') + return desc + + +def publish_to_github(token, mod_name, version, last_change, is_draft, is_prerelease, zip_file): + """create tag and publish a release""" + sys.stdout.write(" * Github connection...") + github = None + repo = None + user = None + + try: + github = Github(token) + user = github.get_user() + except Exception: + print(" failed.") + sys.exit(-1) + + try: + repo = user.get_repo(mod_name) + print(" user: {}, repo: {}".format(user.login, repo.name)) + except Exception: + print(" failed to get {}".format(mod_name)) + sys.exit(-1) + + tags = repo.get_tags() + count = tags.totalCount + + if count == 0 or (count > 0 and tags[0].name != version): + print(" * getting last commit sha...") + sha = repo.get_commits()[0].sha + + try: + repo.create_git_ref('refs/tags/{}'.format(version), sha) + except GithubException: + print(" * could not create tag on the repo.") + else: + print(" * the tag "+version+" is found, skiping...") + + rel = repo.create_git_release(tag=version, name="Version " + version, + message=last_change, + draft=is_draft, prerelease=is_prerelease) + + print(" * uploading asset...") + rel.upload_asset(path=zip_file, content_type="application/zip") + print(" * success.") + + +if __name__ == '__main__': + + jsn = json.load(open("release.json")) + tkn = json.load(open("release_token.json")) + + MODNAME = jsn["MODNAME"] + MODFOLDER = jsn["MODFOLDER"] + VERSIONFILE = jsn["VERSIONFILE"] + RELEASESDIR = jsn["RELEASESDIR"] + CHANGELOG = jsn["CHANGELOG"] + DRAFT = jsn["DRAFT"] + PRERELEASE = jsn["PRERELEASE"] + SD_ID = jsn["SPACEDOCK_ID"] + + TOKEN = tkn["GITHUB_TOKEN"] + SD_LOGIN = tkn["SPACEDOCK_LOGIN"] + SD_PASS = tkn["SPACEDOCK_PASS"] + + if MODNAME == "auto": + parent = os.path.basename([x for x in sys.path if x][0]) + onlyversionfiles = [f for f in os.listdir() if os.path.splitext(f)[1] == ".version"] + if (len(onlyversionfiles) == 1 and parent == os.path.splitext(onlyversionfiles[0])[0]): + MODNAME = parent + else: + print("Failed. You need to set up MODNAME in the release.json manually.") + input("Press Enter to exit") + sys.exit(-1) + + if MODFOLDER == "auto": + MODFOLDER = MODNAME + + if VERSIONFILE == "auto": + VERSIONFILE = MODNAME + ".version" + + copy(VERSIONFILE, "GameData/" + MODFOLDER) + copy(CHANGELOG, "GameData/" + MODFOLDER) + + VERSION = get_version(VERSIONFILE) + KSP_VER = get_version(VERSIONFILE, "KSP_VERSION") + KSP_MIN = get_version(VERSIONFILE, "KSP_VERSION_MIN") + KSP_MAX = get_version(VERSIONFILE, "KSP_VERSION_MAX") + + print("name: {}".format(MODNAME)) + print("version: {}\nksp_ver: {}\nksp_min: {}\nksp_max: {}\n" + .format(VERSION, KSP_VER, KSP_MIN, KSP_MAX)) + print("draft: {}\nprerelease: {}\n".format(DRAFT, PRERELEASE)) + print("parsing "+ CHANGELOG +" ...") + LAST_CHANGE = get_description(CHANGELOG) + print("- start of desc ------------") + print(LAST_CHANGE) + print("- end of desc --------------") + print("") + + ZIPFILE = os.path.join(RELEASESDIR, MODNAME + "-v" + VERSION + ".zip") + if os.path.exists(ZIPFILE): + print(ZIPFILE + " already exists.") + if input("Re-zip? [y/N]: ") == 'y': + archive_to(ZIPFILE) + else: + print("Creating "+ ZIPFILE +" ...") + archive_to(ZIPFILE) + + + print("") + print("GITHUB:") + print("You already push your changes to a remote repo, don't you?") + print("Create the tag, and publish a {}{} with the asset?".format("DRAFT " if DRAFT else "","PRERELEASE" if PRERELEASE else "RELEASE" )) + if input("[y/N]: ") == 'y': + publish_to_github(TOKEN, MODNAME, VERSION, LAST_CHANGE, DRAFT, PRERELEASE, ZIPFILE) + + # ====================================== + + print("") + print("SPACEDOCK:") + if not SD_ID: + print("Spacedock number is not found in the json.") + input("Press Enter to exit") + sys.exit(-1) + + print("Accessing to Spacedock...") + all_versions = [v['name'] for v in GetSpacedockKSPVersions()] + + if not all_versions: + print("Failed. Could not access to Spacedock.") + input("Press Enter to exit") + sys.exit(-1) + + if KSP_VER not in all_versions: + print("KSP {} is not supported by Spacedock,\nlast supported version is KSP {}" + .format(KSP_VER, all_versions[0])) + input("Press Enter to exit") + sys.exit(-1) + + print("KSP {} is supported by Spacedock.".format(KSP_VER)) + + mod_details = GetSpacedockModDetails(SD_ID) + + if not mod_details or 'error' in mod_details: + print("The mod #{} isn't found.".format(SD_ID)) + input("Press Enter to exit") + sys.exit(-1) + + print("Spacedock info:\nID: {}, NAME: {}\nLast Release {} (KSP {})".format( + SD_ID, mod_details['name'], + mod_details['versions'][0]['friendly_version'], + mod_details['versions'][0]['game_version'] + )) + + print("Publish {} (KSP {}) to the Spacedock?".format(VERSION, KSP_VER)) + if input("[y/N]: ") == 'y': + PublishToSpacedock(SD_ID, ZIPFILE, LAST_CHANGE, VERSION, KSP_VER, SD_LOGIN, SD_PASS) + + input("Press Enter to exit") + sys.exit(0) diff --git a/release_spacedock_utils.py b/release_spacedock_utils.py new file mode 100644 index 0000000..5627d4f --- /dev/null +++ b/release_spacedock_utils.py @@ -0,0 +1,229 @@ +"""utils for accessing to the spacedock""" +# Public domain license. +# Based on: https://github.com/ihsoft/KSPDev_ReleaseBuilder +# $version: 2 +# -*- coding: utf-8 -*- + +import json +import urllib.request +import urllib.error +import urllib.parse + +import io +import random +import string +import ntpath + + +# Endpoint for all the API requests +API_BASE_URL = 'https://spacedock.info' + +# The actions paths. +API_AUTHORIZE = '/api/login' +API_UPDATE_MOD_TMPL = '/api/mod/{mod_id}/update' +API_GET_VERSIONS = '/api/kspversions' +API_GET_MOD = '/api/mod/{mod_id}' + +# The authorization cookie. It's only created once. To refresh it, simply +# set it to None. +authorized_cookie = None + + +def PublishToSpacedock(mod_id, filepath, changelog, mod_version, game_version, login, password): + """ + Args: + mod_id: The mod ID to update. + filepath: A full or relative path to the local file. + changelog: The change log content. + mod_version: The version of the mod being published. + game_version: The KSP version to publish for. + Returns: + The response object. + """ + + headers, data = EncodeFormData([ + {'name': 'version', 'data': mod_version}, + {'name': 'changelog', 'data': changelog}, + {'name': 'game-version', 'data': game_version}, + {'name': 'notify-followers', 'data': 'yes'}, + {'name': 'zipball', 'filename': filepath}, + ]) + url, headers = _GetAuthorizedEndpoint( + API_UPDATE_MOD_TMPL, headers, login, password, mod_id=mod_id) + + resp = _CallAPI(url, data=data, headers=headers) + + print('success.') + print('The new version is now available and the followers are notified!') + + return resp + + +def GetSpacedockModDetails(mod_id): + """Gets the mod informnation. + This call does NOT require authorization. + Args: + mod_id: The mod to request. + Returns: + The response object. + """ + url = _MakeAPIUrl(API_GET_MOD, mod_id=mod_id) + response_obj, _ = _CallAPI(url, None, None) + return response_obj + + +def GetSpacedockKSPVersions(): + """Gets the available versions of the game. + This call does NOT require authorization. + Returns: + A list of objects: { 'name': , 'id': } + """ + response = _CallAPI(_MakeAPIUrl(API_GET_VERSIONS), None, None) + versions = [{'name': x['friendly_version'], 'id': x['id']} for x in response[0]] + + return versions + + +def _MakeAPIUrl(action_path, **kwargs): + """Makes a URL for the action.""" + return API_BASE_URL + action_path.format(**kwargs) + + +def _CallAPI(url, data, headers, raise_on_error=True): + """Invokes the API call.""" + resp_obj = {'error': True, 'reason': 'unknown'} + try: + request = urllib.request.Request(url, data, headers=headers or {}) + response = urllib.request.urlopen(request) + resp_obj = json.loads(response.read()) + headers = response.info() + except urllib.error.HTTPError as ex: + resp_obj = {'error': True, 'reason': '%d - %s' % (ex.code, ex.reason)} + try: + resp_obj = json.loads(ex.read()) + except Exception: + pass # Not a JSON response + if ex.code == 401: + print("AuthorizationRequiredError") + + if type(resp_obj) is dict and resp_obj.get('error'): + if raise_on_error: + print("BadResponseError") + return resp_obj, None + return resp_obj, headers + + +def _GetAuthorizedEndpoint(api_path, headers, login, password, **kwargs): + """Gets API URL and the authorization headers. + + The login/password must be set in the global variables API_LOGIN/API_PASS. + """ + global authorized_cookie + + url = _MakeAPIUrl(api_path, **kwargs) + if not headers: + headers = {} + + if not authorized_cookie: + if not login or not password: + print("BadCredentialsError: API_LOGIN and/or API_PASS not set") + exit(0) + + auth_headers, data = EncodeFormData([ + {'name': 'username', 'data': login}, + {'name': 'password', 'data': password}, + ]) + resp, auth_headers = _CallAPI( + API_BASE_URL + API_AUTHORIZE, data, auth_headers, + raise_on_error=False) + if resp['error']: + print("BadCredentialsError") + exit(0) + authorized_cookie = auth_headers['set-cookie'] + + headers['Cookie'] = authorized_cookie + return url, headers + + +# Utils: Provides helpers to deal with the multipart/form-data MIME types. + + +def EncodeFormData(fields): + """Encodes the provided arguments as the web form fields. + + The argument must be an array of objects that define the fields to be passed: + - 'name': A required property than defines the name of the web form field. + - 'data': The raw data to pass. If it's of type 'string', then it's passed as + 'text/plain'. Otherwise, it's serialized as JSON and passed as + 'application/json'. + - 'filename': An optional property that designates a path to the binary file + to tansfer. The 'data' field is ignored in this case, and the real data is + read from the file. The data is passed as 'application/octet-stream', and + server will receive the file name part of the path. The part can be + relative, in which case it's counted realtive to the main module, or it can + be absolute. + + Example: + [ + { 'name': 'metadata', 'data': metadatObj }, + { 'name': 'file', 'filename': '/home/me/releases/MyMod_v1.0.zip' } + ] + + @param fields: An array of the fields to encode. + """ + boundry = '----WebKitFormBoundary' + IdGenerator(16) + + data_stream = io.BytesIO() + for field in fields: + filename = field.get('filename') + if filename: + with open(filename, 'rb') as f: + data = f.read() + content_type = 'application/octet-stream' + filename = ntpath.basename(filename) + else: + data = field['data'] + if type(data) != str: + content_type = 'application/json' + data = json.dumps(data) + else: + content_type = 'text/plain; charset=utf-8' + data = data.encode('utf-8') + _WriteFormData(data_stream, boundry, + field['name'], content_type, data, filename) + + data_stream.write(b'--') + data_stream.write(boundry.encode()) + data_stream.write(b'--') + data_stream.write(b'\r\n') + + headers = { + 'Content-Type': 'multipart/form-data; boundary=%s' % boundry, + 'Content-Length': str(data_stream.tell()), + } + return headers, data_stream.getvalue() + + +def IdGenerator(size, chars=string.ascii_letters + string.digits): + """Makes a unique random string of the requested size.""" + return ''.join(random.choice(chars) for _ in range(size)) + + +def _WriteFormData(stream, boundry, name, content_type, data, filename=None): + """Helper method to write a single web form field.""" + stream.write(b'--') + stream.write(boundry.encode()) + stream.write(b'\r\n') + + if filename: + stream.write(('Content-Disposition: form-data; name="%s"; filename="%s"' % + (name, filename)).encode()) + else: + stream.write(('Content-Disposition: form-data; name="%s"' % + (name)).encode()) + stream.write(b'\r\n') + stream.write(('Content-Type: %s' % content_type).encode()) + stream.write(b'\r\n') + stream.write(b'\r\n') + stream.write(data) + stream.write(b'\r\n')