diff --git a/src/fedi_api.py b/src/fedi_api.py index 60edd0c..2207d2b 100644 --- a/src/fedi_api.py +++ b/src/fedi_api.py @@ -25,25 +25,31 @@ def get_notifications(): def mark_as_read_notification(id_notification): - r = requests.post(instance_point + f"/notifications/{id_notification}/dismiss", headers=headers) - return r.json() + success = 0 + while success == 0: + try: + r = requests.post(instance_point + f"/notifications/{id_notification}/dismiss", headers=headers) + r.raise_for_status() + success = 1 + return r.json() + except: + logger.exception(f'Error read notification {id_notification}') + time.sleep(30) + logger.info('Retrying read notification {id_notification}...') def get_status_context(status_id): - r = requests.get(instance_point + f"/statuses/{status_id}/context", headers=headers) - if r.status_code == 200: - return r.json() - else: - http_code = r.status_code - logger.error(f'Ошибка получения контекста треда {status_id}: {http_code}') - logger.error(str(r.headers)) - while r.status_code != 200: + success = 0 + while success == 0: + try: + r = requests.get(instance_point + f"/statuses/{status_id}/context", headers=headers) + r.raise_for_status() + success = 1 + return r.json() + except: + logger.exception(f'Ошибка получения контекста треда {status_id}') time.sleep(30) logger.info('Повторный запрос треда...') - r = requests.get(instance_point + f"/statuses/{status_id}/context", headers=headers) - return r.json() - - def get_status(status_id): @@ -69,8 +75,16 @@ def post_status(text, reply_to_status_id=None, poll_options=None, poll_expires=3 } if attachments: params['media_ids'] = attachments - r = requests.post(instance_point + "/statuses", json=params, headers=headers) - return r.json() + success = 0 + while success == 0: + try: + r = requests.post(instance_point + "/statuses", json=params, headers=headers) + r.raise_for_status() + success = 1 + return r.json() + except: + logger.exception('Error send status, retrying...') + time.sleep(5) def upload_attachment(file_path): @@ -88,9 +102,15 @@ def mute_user(acct_id=str, acct=str, duration=None): params = { "duration": duration } - r = requests.post(instance_point + '/accounts' + f"/{acct_id}/mute", params, headers=headers) - if r.status_code == 200: - logger.info(f'Пользователь {acct} был заглушен на {duration} secs') - else: - logger.error(f'Ошибка глушения {r.status_code} - {acct}') + success = 0 + while success == 0: + try: + r = requests.post(instance_point + '/accounts' + f"/{acct_id}/mute", params, headers=headers) + r.raise_for_status() + logger.info(f'Пользователь {acct} был заглушен на {duration} secs') + success = 1 + except: + logger.exception(f'Ошибка глушения {acct}') + time.sleep(5) + logger.info(f'Повторное глушение {acct}...')