fix versioning for limited federation instances
This commit is contained in:
parent
853cd82ecb
commit
bc2cb5e892
@ -454,14 +454,14 @@ class Mastodon:
|
|||||||
self.mastodon_major = 1
|
self.mastodon_major = 1
|
||||||
self.mastodon_minor = 0
|
self.mastodon_minor = 0
|
||||||
self.mastodon_patch = 0
|
self.mastodon_patch = 0
|
||||||
|
self.version_check_worked = None
|
||||||
|
|
||||||
# Versioning
|
# Versioning
|
||||||
if mastodon_version == None and self.version_check_mode != 'none':
|
if mastodon_version == None and self.version_check_mode != 'none':
|
||||||
self.retrieve_mastodon_version()
|
self.retrieve_mastodon_version()
|
||||||
elif self.version_check_mode != 'none':
|
elif self.version_check_mode != 'none':
|
||||||
try:
|
try:
|
||||||
self.mastodon_major, self.mastodon_minor, self.mastodon_patch = parse_version_string(
|
self.mastodon_major, self.mastodon_minor, self.mastodon_patch = parse_version_string(mastodon_version)
|
||||||
mastodon_version)
|
|
||||||
except:
|
except:
|
||||||
raise MastodonVersionError("Bad version specified")
|
raise MastodonVersionError("Bad version specified")
|
||||||
|
|
||||||
@ -477,9 +477,11 @@ class Mastodon:
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
version_str = self.__instance()["version"].split('+')[0]
|
version_str = self.__instance()["version"].split('+')[0]
|
||||||
|
self.version_check_worked = True
|
||||||
except:
|
except:
|
||||||
# instance() was added in 1.1.0, so our best guess is 1.0.0.
|
# instance() was added in 1.1.0, so our best guess is 1.0.0.
|
||||||
version_str = "1.0.0"
|
version_str = "1.0.0"
|
||||||
|
self.version_check_worked = False
|
||||||
|
|
||||||
self.mastodon_major, self.mastodon_minor, self.mastodon_patch = parse_version_string(version_str)
|
self.mastodon_major, self.mastodon_minor, self.mastodon_patch = parse_version_string(version_str)
|
||||||
return version_str
|
return version_str
|
||||||
@ -585,20 +587,16 @@ class Mastodon:
|
|||||||
Returns the access token as a string.
|
Returns the access token as a string.
|
||||||
"""
|
"""
|
||||||
if username is not None and password is not None:
|
if username is not None and password is not None:
|
||||||
params = self.__generate_params(
|
params = self.__generate_params(locals(), ['scopes', 'to_file', 'code', 'refresh_token'])
|
||||||
locals(), ['scopes', 'to_file', 'code', 'refresh_token'])
|
|
||||||
params['grant_type'] = 'password'
|
params['grant_type'] = 'password'
|
||||||
elif code is not None:
|
elif code is not None:
|
||||||
params = self.__generate_params(
|
params = self.__generate_params(locals(), ['scopes', 'to_file', 'username', 'password', 'refresh_token'])
|
||||||
locals(), ['scopes', 'to_file', 'username', 'password', 'refresh_token'])
|
|
||||||
params['grant_type'] = 'authorization_code'
|
params['grant_type'] = 'authorization_code'
|
||||||
elif refresh_token is not None:
|
elif refresh_token is not None:
|
||||||
params = self.__generate_params(
|
params = self.__generate_params(locals(), ['scopes', 'to_file', 'username', 'password', 'code'])
|
||||||
locals(), ['scopes', 'to_file', 'username', 'password', 'code'])
|
|
||||||
params['grant_type'] = 'refresh_token'
|
params['grant_type'] = 'refresh_token'
|
||||||
else:
|
else:
|
||||||
raise MastodonIllegalArgumentError(
|
raise MastodonIllegalArgumentError('Invalid arguments given. username and password or code are required.')
|
||||||
'Invalid arguments given. username and password or code are required.')
|
|
||||||
|
|
||||||
params['client_id'] = self.client_id
|
params['client_id'] = self.client_id
|
||||||
params['client_secret'] = self.client_secret
|
params['client_secret'] = self.client_secret
|
||||||
@ -611,11 +609,9 @@ class Mastodon:
|
|||||||
self.__set_token_expired(int(response.get('expires_in', 0)))
|
self.__set_token_expired(int(response.get('expires_in', 0)))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if username is not None or password is not None:
|
if username is not None or password is not None:
|
||||||
raise MastodonIllegalArgumentError(
|
raise MastodonIllegalArgumentError('Invalid user name, password, or redirect_uris: %s' % e)
|
||||||
'Invalid user name, password, or redirect_uris: %s' % e)
|
|
||||||
elif code is not None:
|
elif code is not None:
|
||||||
raise MastodonIllegalArgumentError(
|
raise MastodonIllegalArgumentError('Invalid access token or redirect_uris: %s' % e)
|
||||||
'Invalid access token or redirect_uris: %s' % e)
|
|
||||||
else:
|
else:
|
||||||
raise MastodonIllegalArgumentError('Invalid request: %s' % e)
|
raise MastodonIllegalArgumentError('Invalid request: %s' % e)
|
||||||
|
|
||||||
@ -635,6 +631,10 @@ class Mastodon:
|
|||||||
|
|
||||||
self.__logged_in_id = None
|
self.__logged_in_id = None
|
||||||
|
|
||||||
|
# Retry version check if needed (might be required in limited federation mode)
|
||||||
|
if self.version_check_worked == False:
|
||||||
|
self.retrieve_mastodon_version()
|
||||||
|
|
||||||
return response['access_token']
|
return response['access_token']
|
||||||
|
|
||||||
|
|
||||||
@ -1427,8 +1427,7 @@ class Mastodon:
|
|||||||
"""
|
"""
|
||||||
if not account_id is None or not offset is None or not min_id is None or not max_id is None:
|
if not account_id is None or not offset is None or not min_id is None or not max_id is None:
|
||||||
if self.verify_minimum_version("2.8.0", cached=True) == False:
|
if self.verify_minimum_version("2.8.0", cached=True) == False:
|
||||||
raise MastodonVersionError(
|
raise MastodonVersionError("Advanced search parameters require Mastodon 2.8.0+")
|
||||||
"Advanced search parameters require Mastodon 2.8.0+")
|
|
||||||
|
|
||||||
@api_version("1.1.0", "2.8.0", __DICT_VERSION_SEARCHRESULT)
|
@api_version("1.1.0", "2.8.0", __DICT_VERSION_SEARCHRESULT)
|
||||||
def search(self, q, resolve=True, result_type=None, account_id=None, offset=None, min_id=None, max_id=None, exclude_unreviewed=True):
|
def search(self, q, resolve=True, result_type=None, account_id=None, offset=None, min_id=None, max_id=None, exclude_unreviewed=True):
|
||||||
@ -1457,8 +1456,7 @@ class Mastodon:
|
|||||||
Returns a `search result dict`_, with tags as `hashtag dicts`_.
|
Returns a `search result dict`_, with tags as `hashtag dicts`_.
|
||||||
"""
|
"""
|
||||||
if self.verify_minimum_version("2.4.1", cached=True) == True:
|
if self.verify_minimum_version("2.4.1", cached=True) == True:
|
||||||
return self.search_v2(q, resolve=resolve, result_type=result_type, account_id=account_id,
|
return self.search_v2(q, resolve=resolve, result_type=result_type, account_id=account_id, offset=offset, min_id=min_id, max_id=max_id)
|
||||||
offset=offset, min_id=min_id, max_id=max_id)
|
|
||||||
else:
|
else:
|
||||||
self.__ensure_search_params_acceptable(
|
self.__ensure_search_params_acceptable(
|
||||||
account_id, offset, min_id, max_id)
|
account_id, offset, min_id, max_id)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user