Refactor _util.check_json
This commit is contained in:
@@ -107,36 +107,53 @@ def generateOfflineThreadingID():
|
|||||||
return str(int(msgs, 2))
|
return str(int(msgs, 2))
|
||||||
|
|
||||||
|
|
||||||
def check_json(j):
|
def handle_error_in_payload(j):
|
||||||
if hasattr(j.get("payload"), "get") and j["payload"].get("error"):
|
payload = j.get("payload")
|
||||||
|
if isinstance(payload, dict) and payload.get("error"):
|
||||||
raise FBchatFacebookError(
|
raise FBchatFacebookError(
|
||||||
"Error when sending request: {}".format(j["payload"]["error"]),
|
"Error when sending request: {}".format(payload["error"]),
|
||||||
fb_error_code=None,
|
fb_error_code=None,
|
||||||
fb_error_message=j["payload"]["error"],
|
fb_error_message=payload["error"],
|
||||||
)
|
)
|
||||||
elif j.get("error"):
|
|
||||||
if "errorDescription" in j:
|
|
||||||
# 'errorDescription' is in the users own language!
|
def handle_payload_error(j):
|
||||||
raise FBchatFacebookError(
|
# TODO: Check known error codes, and raise more relevant errors!
|
||||||
"Error #{} when sending request: {}".format(
|
# TODO: Use j["errorSummary"]
|
||||||
j["error"], j["errorDescription"]
|
if "error" in j and "errorDescription" in j:
|
||||||
),
|
# "errorDescription" is in the users own language!
|
||||||
fb_error_code=j["error"],
|
raise FBchatFacebookError(
|
||||||
fb_error_message=j["errorDescription"],
|
"Error #{} when sending request: {}".format(
|
||||||
)
|
j["error"], j["errorDescription"]
|
||||||
elif "debug_info" in j["error"] and "code" in j["error"]:
|
),
|
||||||
raise FBchatFacebookError(
|
fb_error_code=j["error"],
|
||||||
"Error #{} when sending request: {}".format(
|
fb_error_message=j["errorDescription"],
|
||||||
j["error"]["code"], repr(j["error"]["debug_info"])
|
)
|
||||||
),
|
|
||||||
fb_error_code=j["error"]["code"],
|
|
||||||
fb_error_message=j["error"]["debug_info"],
|
def handle_graphql_error(j):
|
||||||
)
|
if j.get("error") and "debug_info" in j["error"] and "code" in j["error"]:
|
||||||
else:
|
raise FBchatFacebookError(
|
||||||
raise FBchatFacebookError(
|
"Error #{} when sending request: {!r}".format(
|
||||||
"Error {} when sending request".format(j["error"]),
|
j["error"]["code"], j["error"]["debug_info"]
|
||||||
fb_error_code=j["error"],
|
),
|
||||||
)
|
fb_error_code=j["error"]["code"],
|
||||||
|
fb_error_message=j["error"]["debug_info"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def handle_generic_error(j):
|
||||||
|
if j.get("error"):
|
||||||
|
raise FBchatFacebookError(
|
||||||
|
"Error {} when sending request".format(j["error"]), fb_error_code=j["error"]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def check_json(j):
|
||||||
|
handle_error_in_payload(j)
|
||||||
|
handle_payload_error(j)
|
||||||
|
handle_graphql_error(j)
|
||||||
|
handle_generic_error(j)
|
||||||
|
|
||||||
|
|
||||||
def check_request(r, as_json=True):
|
def check_request(r, as_json=True):
|
||||||
|
Reference in New Issue
Block a user