77 lines
1.7 KiB
Python
77 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""Exceptions for telegram-upload."""
|
|
import sys
|
|
|
|
import click
|
|
|
|
from telegram_upload.config import prompt_config
|
|
|
|
|
|
class ThumbError(Exception):
|
|
pass
|
|
|
|
|
|
class ThumbVideoError(ThumbError):
|
|
pass
|
|
|
|
|
|
class TelegramUploadError(Exception):
|
|
body = ''
|
|
error_code = 1
|
|
|
|
def __init__(self, extra_body=''):
|
|
self.extra_body = extra_body
|
|
|
|
def __str__(self):
|
|
msg = self.__class__.__name__
|
|
if self.body:
|
|
msg += ': {}'.format(self.body)
|
|
if self.extra_body:
|
|
msg += ('. {}' if self.body else ': {}').format(self.extra_body)
|
|
return msg
|
|
|
|
|
|
class MissingFileError(TelegramUploadError):
|
|
pass
|
|
|
|
|
|
class InvalidApiFileError(TelegramUploadError):
|
|
def __init__(self, config_file, extra_body=''):
|
|
self.config_file = config_file
|
|
super().__init__(extra_body)
|
|
|
|
|
|
class TelegramInvalidFile(TelegramUploadError):
|
|
error_code = 3
|
|
|
|
|
|
class TelegramUploadNoSpaceError(TelegramUploadError):
|
|
error_code = 28
|
|
|
|
|
|
class TelegramUploadDataLoss(TelegramUploadError):
|
|
error_code = 29
|
|
|
|
|
|
class TelegramProxyError(TelegramUploadError):
|
|
error_code = 30
|
|
|
|
|
|
class TelegramEnvironmentError(TelegramUploadError):
|
|
error_code = 31
|
|
|
|
|
|
def catch(fn):
|
|
def wrap(*args, **kwargs):
|
|
try:
|
|
return fn(*args, **kwargs)
|
|
except InvalidApiFileError as e:
|
|
click.echo('The api_id/api_hash combination is invalid. Re-enter both values.')
|
|
prompt_config(e.config_file)
|
|
return catch(fn)(*args, **kwargs)
|
|
except TelegramUploadError as e:
|
|
sys.stderr.write('[Error] telegram-upload Exception:\n{}\n'.format(e))
|
|
exit(e.error_code)
|
|
return wrap
|