Remove import-froms for errors.
This commit is contained in:
parent
86e6756b2c
commit
6d59de416e
1 changed files with 14 additions and 14 deletions
|
@ -17,8 +17,8 @@ import shutil
|
||||||
import requests
|
import requests
|
||||||
from tenacity import retry, wait_exponential, retry_if_exception_type
|
from tenacity import retry, wait_exponential, retry_if_exception_type
|
||||||
|
|
||||||
|
from . import crypto
|
||||||
from . import errors
|
from . import errors
|
||||||
from .errors import ValidationError, RequestError, error_for_code
|
|
||||||
from .crypto import (
|
from .crypto import (
|
||||||
a32_to_base64, encrypt_key, base64_url_encode, encrypt_attr, base64_to_a32,
|
a32_to_base64, encrypt_key, base64_url_encode, encrypt_attr, base64_to_a32,
|
||||||
base64_url_decode, decrypt_attr, a32_to_str, get_chunks, str_to_a32,
|
base64_url_decode, decrypt_attr, a32_to_str, get_chunks, str_to_a32,
|
||||||
|
@ -78,7 +78,7 @@ class Mega:
|
||||||
json_resp = json_resp[0]
|
json_resp = json_resp[0]
|
||||||
if isinstance(json_resp, int):
|
if isinstance(json_resp, int):
|
||||||
# If this raises EAGAIN it'll be caught by tenacity retry.
|
# If this raises EAGAIN it'll be caught by tenacity retry.
|
||||||
raise error_for_code(json_resp)
|
raise errors.error_for_code(json_resp)
|
||||||
return json_resp[0]
|
return json_resp[0]
|
||||||
|
|
||||||
def _api_account_version_and_salt(self, email):
|
def _api_account_version_and_salt(self, email):
|
||||||
|
@ -147,7 +147,7 @@ class Mega:
|
||||||
|
|
||||||
resp = self._api_start_session(email, user_hash)
|
resp = self._api_start_session(email, user_hash)
|
||||||
if isinstance(resp, int):
|
if isinstance(resp, int):
|
||||||
raise RequestError(resp)
|
raise errors.RequestError(resp)
|
||||||
self._login_process(resp, password_aes)
|
self._login_process(resp, password_aes)
|
||||||
|
|
||||||
def login_anonymous(self):
|
def login_anonymous(self):
|
||||||
|
@ -164,7 +164,7 @@ class Mega:
|
||||||
|
|
||||||
resp = self._api_start_session(user)
|
resp = self._api_start_session(user)
|
||||||
if isinstance(resp, int):
|
if isinstance(resp, int):
|
||||||
raise RequestError(resp)
|
raise errors.RequestError(resp)
|
||||||
self._login_process(resp, password_key)
|
self._login_process(resp, password_key)
|
||||||
|
|
||||||
def _login_process(self, resp, password):
|
def _login_process(self, resp, password):
|
||||||
|
@ -231,7 +231,7 @@ class Mega:
|
||||||
# File urls are '#!', Folder urls are '#F!'
|
# File urls are '#!', Folder urls are '#F!'
|
||||||
match = re.findall(r'/#F?!(.*)!(.*)', url)
|
match = re.findall(r'/#F?!(.*)!(.*)', url)
|
||||||
if not match:
|
if not match:
|
||||||
raise ValidationError('Invalid public url. Should have /#!id!key')
|
raise errors.ValidationError('Invalid public url. Should have /#!id!key')
|
||||||
|
|
||||||
(public_handle, decryption_key) = match[0]
|
(public_handle, decryption_key) = match[0]
|
||||||
return (public_handle, decryption_key)
|
return (public_handle, decryption_key)
|
||||||
|
@ -435,7 +435,7 @@ class Mega:
|
||||||
if 'h' in file and 'k' in file:
|
if 'h' in file and 'k' in file:
|
||||||
public_handle = self._api_request({'a': 'l', 'n': file['h']})
|
public_handle = self._api_request({'a': 'l', 'n': file['h']})
|
||||||
if public_handle == -11:
|
if public_handle == -11:
|
||||||
raise RequestError(
|
raise errors.RequestError(
|
||||||
"Can't get a public link from that file "
|
"Can't get a public link from that file "
|
||||||
"(is this a shared file?)"
|
"(is this a shared file?)"
|
||||||
)
|
)
|
||||||
|
@ -445,7 +445,7 @@ class Mega:
|
||||||
f'/#!{public_handle}!{decrypted_key}'
|
f'/#!{public_handle}!{decrypted_key}'
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise ValidationError('File id and key must be present')
|
raise errors.ValidationError('File id and key must be present')
|
||||||
|
|
||||||
def _node_data(self, node):
|
def _node_data(self, node):
|
||||||
try:
|
try:
|
||||||
|
@ -461,7 +461,7 @@ class Mega:
|
||||||
if 'h' in file and 'k' in file:
|
if 'h' in file and 'k' in file:
|
||||||
public_handle = self._api_request({'a': 'l', 'n': file['h']})
|
public_handle = self._api_request({'a': 'l', 'n': file['h']})
|
||||||
if public_handle == -11:
|
if public_handle == -11:
|
||||||
raise RequestError(
|
raise errors.RequestError(
|
||||||
"Can't get a public link from that file "
|
"Can't get a public link from that file "
|
||||||
"(is this a shared file?)"
|
"(is this a shared file?)"
|
||||||
)
|
)
|
||||||
|
@ -471,7 +471,7 @@ class Mega:
|
||||||
f'/#F!{public_handle}!{decrypted_key}'
|
f'/#F!{public_handle}!{decrypted_key}'
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise ValidationError('File id and key must be present')
|
raise errors.ValidationError('File id and key must be present')
|
||||||
|
|
||||||
def get_user(self):
|
def get_user(self):
|
||||||
user_data = self._api_request({'a': 'ug'})
|
user_data = self._api_request({'a': 'ug'})
|
||||||
|
@ -658,7 +658,7 @@ class Mega:
|
||||||
try:
|
try:
|
||||||
# If already exported
|
# If already exported
|
||||||
return self.get_folder_link(node)
|
return self.get_folder_link(node)
|
||||||
except (RequestError, KeyError):
|
except (errors.RequestError, KeyError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
master_key_cipher = AES.new(a32_to_str(self.master_key), AES.MODE_ECB)
|
master_key_cipher = AES.new(a32_to_str(self.master_key), AES.MODE_ECB)
|
||||||
|
@ -745,7 +745,7 @@ class Mega:
|
||||||
# inaccessible also in the official also in the official web app.
|
# inaccessible also in the official also in the official web app.
|
||||||
# Strangely, files can come back later.
|
# Strangely, files can come back later.
|
||||||
if 'g' not in file_data:
|
if 'g' not in file_data:
|
||||||
raise RequestError('File not accessible anymore')
|
raise errors.RequestError('File not accessible anymore')
|
||||||
file_url = file_data['g']
|
file_url = file_data['g']
|
||||||
file_size = file_data['s']
|
file_size = file_data['s']
|
||||||
attribs = base64_url_decode(file_data['at'])
|
attribs = base64_url_decode(file_data['at'])
|
||||||
|
@ -1040,10 +1040,10 @@ class Mega:
|
||||||
elif add is False:
|
elif add is False:
|
||||||
l = '0' # remove command
|
l = '0' # remove command
|
||||||
else:
|
else:
|
||||||
raise ValidationError('add parameter must be of type bool')
|
raise errors.ValidationError('add parameter must be of type bool')
|
||||||
|
|
||||||
if not re.match(r"[^@]+@[^@]+\.[^@]+", email):
|
if not re.match(r"[^@]+@[^@]+\.[^@]+", email):
|
||||||
ValidationError('add_contact requires a valid email address')
|
raise errors.ValidationError('add_contact requires a valid email address')
|
||||||
else:
|
else:
|
||||||
request = {
|
request = {
|
||||||
'a': 'ur',
|
'a': 'ur',
|
||||||
|
@ -1176,7 +1176,7 @@ class Mega:
|
||||||
"""
|
"""
|
||||||
data = self._api_request({'a': 'g', 'p': file_handle, 'ssm': 1})
|
data = self._api_request({'a': 'g', 'p': file_handle, 'ssm': 1})
|
||||||
if isinstance(data, int):
|
if isinstance(data, int):
|
||||||
raise RequestError(data)
|
raise errors.RequestError(data)
|
||||||
|
|
||||||
if 'at' not in data or 's' not in data:
|
if 'at' not in data or 's' not in data:
|
||||||
raise ValueError("Unexpected result", data)
|
raise ValueError("Unexpected result", data)
|
||||||
|
|
Loading…
Reference in a new issue