Refactor _util.check_json

This commit is contained in:
Mads Marquart
2019-07-02 16:21:20 +02:00
parent 4a898b3ff5
commit d17f741f97

View File

@@ -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):