Citizen get() and post() signature update, check if server isn't compaining about request flooding

This commit is contained in:
Eriks Karls 2019-12-03 09:42:51 +02:00
parent 24c755d414
commit a7dd528597

View File

@ -164,6 +164,13 @@ class Citizen(CitizenAPI):
self.logged_in = True self.logged_in = True
def _errors_in_response(self, response: Response): def _errors_in_response(self, response: Response):
try:
j = response.json()
if j['error'] and j["message"] == 'Too many requests':
self.write_log("Made too many requests! Sleeping for 30 seconds.")
self.sleep(30)
except:
pass
if response.status_code >= 400: if response.status_code >= 400:
self.r = response self.r = response
if response.status_code >= 500: if response.status_code >= 500:
@ -174,7 +181,7 @@ class Citizen(CitizenAPI):
return bool(re.search(r'body id="error"|Internal Server Error|' return bool(re.search(r'body id="error"|Internal Server Error|'
r'CSRF attack detected|meta http-equiv="refresh"|not_authenticated', response.text)) r'CSRF attack detected|meta http-equiv="refresh"|not_authenticated', response.text))
def get(self, url: str, *args, **kwargs) -> Response: def get(self, url: str, **kwargs) -> Response:
if (self.now - self._req.last_time).seconds >= 15 * 60: if (self.now - self._req.last_time).seconds >= 15 * 60:
self.get_csrf_token() self.get_csrf_token()
if "params" in kwargs: if "params" in kwargs:
@ -188,7 +195,7 @@ class Citizen(CitizenAPI):
except RequestException as e: except RequestException as e:
self.write_log("Network error while issuing GET request", e) self.write_log("Network error while issuing GET request", e)
self.sleep(60) self.sleep(60)
return self.get(url, *args, **kwargs) return self.get(url, **kwargs)
try: try:
self.update_citizen_info(html=response.text) self.update_citizen_info(html=response.text)
@ -221,7 +228,7 @@ class Citizen(CitizenAPI):
except RequestException as e: except RequestException as e:
self.write_log("Network error while issuing POST request", e) self.write_log("Network error while issuing POST request", e)
self.sleep(60) self.sleep(60)
return self.post(url, data, json, **kwargs) return self.post(url, data=data, json=json, **kwargs)
try: try:
resp_data = response.json() resp_data = response.json()