From 88929ad072cb04c5d517cd8a5c36236e077ffe75 Mon Sep 17 00:00:00 2001 From: eli fessler Date: Thu, 17 Aug 2023 02:11:17 -1000 Subject: [PATCH] improve json error handling (#138) --- iksm.py | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/iksm.py b/iksm.py index 6c4fb43..249a96e 100644 --- a/iksm.py +++ b/iksm.py @@ -202,7 +202,13 @@ def get_session_token(session_token_code, auth_code_verifier): url = 'https://accounts.nintendo.com/connect/1.0.0/api/session_token' r = session.post(url, headers=app_head, data=body) - return json.loads(r.text)["session_token"] + try: + s_t = json.loads(r.text)["session_token"] + except json.decoder.JSONDecodeError: + print("Got non-JSON response from Nintendo (in api/session_token step). Please try again.") + sys.exit(1) + + return s_t def get_gtoken(f_gen_url, session_token, ver): @@ -231,7 +237,11 @@ def get_gtoken(f_gen_url, session_token, ver): url = "https://accounts.nintendo.com/connect/1.0.0/api/token" r = requests.post(url, headers=app_head, json=body) - id_response = json.loads(r.text) + try: + id_response = json.loads(r.text) + except json.decoder.JSONDecodeError: + print("Got non-JSON response from Nintendo (in api/token step). Please try again.") + sys.exit(1) # get user info try: @@ -252,7 +262,11 @@ def get_gtoken(f_gen_url, session_token, ver): url = "https://api.accounts.nintendo.com/2.0.0/users/me" r = requests.get(url, headers=app_head) - user_info = json.loads(r.text) + try: + user_info = json.loads(r.text) + except json.decoder.JSONDecodeError: + print("Got non-JSON response from Nintendo (in users/me step). Please try again.") + sys.exit(1) user_nickname = user_info["nickname"] user_lang = user_info["language"] @@ -295,7 +309,11 @@ def get_gtoken(f_gen_url, session_token, ver): url = "https://api-lp1.znc.srv.nintendo.net/v3/Account/Login" r = requests.post(url, headers=app_head, json=body) - splatoon_token = json.loads(r.text) + try: + splatoon_token = json.loads(r.text) + except json.decoder.JSONDecodeError: + print("Got non-JSON response from Nintendo (in Account/Login step). Please try again.") + sys.exit(1) try: access_token = splatoon_token["result"]["webApiServerCredential"]["accessToken"] @@ -344,7 +362,11 @@ def get_gtoken(f_gen_url, session_token, ver): url = "https://api-lp1.znc.srv.nintendo.net/v2/Game/GetWebServiceToken" r = requests.post(url, headers=app_head, json=body) - web_service_resp = json.loads(r.text) + try: + web_service_resp = json.loads(r.text) + except json.decoder.JSONDecodeError: + print("Got non-JSON response from Nintendo (in Game/GetWebServiceToken step). Please try again.") + sys.exit(1) try: web_service_token = web_service_resp["result"]["accessToken"]