Fix several bugs

This commit is contained in:
Lorenz Diener 2018-04-18 21:56:36 +02:00
pare d9f7442989
commit a825905b57

Veure arxiu

@ -90,7 +90,7 @@ class Mastodon:
__DEFAULT_BASE_URL = 'https://mastodon.social' __DEFAULT_BASE_URL = 'https://mastodon.social'
__DEFAULT_TIMEOUT = 300 __DEFAULT_TIMEOUT = 300
__DEFAULT_STREAM_RECONNECT_WAIT_SEC = 5 __DEFAULT_STREAM_RECONNECT_WAIT_SEC = 5
__SUPPORTED_MASTODON_VERSION = "2.2.0" __SUPPORTED_MASTODON_VERSION = "2.3.0"
### ###
# Registering apps # Registering apps
@ -892,7 +892,7 @@ class Mastodon:
### ###
@api_version("1.0.0", "2.0.0") @api_version("1.0.0", "2.0.0")
def status_post(self, status, in_reply_to_id=None, media_ids=None, def status_post(self, status, in_reply_to_id=None, media_ids=None,
sensitive=False, visibility='', spoiler_text=None): sensitive=False, visibility=None, spoiler_text=None):
""" """
Post a status. Can optionally be in reply to another status and contain Post a status. Can optionally be in reply to another status and contain
media. media.
@ -930,11 +930,14 @@ class Mastodon:
params_initial = locals() params_initial = locals()
# Validate visibility parameter # Validate visibility parameter
valid_visibilities = ['private', 'public', 'unlisted', 'direct', ''] valid_visibilities = ['private', 'public', 'unlisted', 'direct']
params_initial['visibility'] = params_initial['visibility'].lower() if params_initial['visibility'] == None:
if params_initial['visibility'] not in valid_visibilities: del params_initial['visibility']
raise ValueError('Invalid visibility value! Acceptable ' else:
'values are %s' % valid_visibilities) params_initial['visibility'] = params_initial['visibility'].lower()
if params_initial['visibility'] not in valid_visibilities:
raise ValueError('Invalid visibility value! Acceptable '
'values are %s' % valid_visibilities)
if params_initial['sensitive'] is False: if params_initial['sensitive'] is False:
del [params_initial['sensitive']] del [params_initial['sensitive']]
@ -1145,21 +1148,54 @@ class Mastodon:
@api_version("1.1.1", "2.3.0") @api_version("1.1.1", "2.3.0")
def account_update_credentials(self, display_name=None, note=None, def account_update_credentials(self, display_name=None, note=None,
avatar=None, header=None, locked=None): avatar=None, avatar_mime_type=None,
header=None, header_mime_type=None, locked=None):
""" """
Update the profile for the currently logged-in user. Update the profile for the currently logged-in user.
'note' is the user's bio. 'note' is the user's bio.
'avatar' and 'header' are images encoded in base64, prepended by a content-type 'avatar' and 'header' are images. As with media uploads, it is possible to either
(for example: 'data:image/png;base64,iVBORw0KGgoAAAA[...]') pass image data and a mime type, or a filename of an image file, for either.
'locked' specifies whether the user needs to manually approve follow requests. 'locked' specifies whether the user needs to manually approve follow requests.
Returns the updated `user dict` of the logged-in user. Returns the updated `user dict` of the logged-in user.
""" """
params = self.__generate_params(locals()) params_initial = locals()
return self.__api_request('PATCH', '/api/v1/accounts/update_credentials', params)
# Load avatar, if specified
if avatar_mime_type is None and os.path.isfile(avatar):
avatar_mime_type = mimetypes.guess_type(avatar)[0]
avatar = open(avatar, 'rb')
if (not avatar is None and avatar_mime_type is None):
raise MastodonIllegalArgumentError('Could not determine mime type or data passed directly without mime type.')
# Load header, if specified
if header_mime_type is None and os.path.isfile(header):
header_mime_type = mimetypes.guess_type(header)[0]
header = open(header, 'rb')
if (not header is None and header_mime_type is None):
raise MastodonIllegalArgumentError('Could not determine mime type or data passed directly without mime type.')
# Clean up params
for param in ["avatar", "avatar_mime_type", "header", "header_mime_type"]:
if param in params_initial:
del params_initial[param]
# Create file info
files = {}
if not avatar is None:
avatar_file_name = "mastodonpyupload_" + mimetypes.guess_extension(avatar_mime_type)
files["avatar"] = (avatar_file_name, avatar, avatar_mime_type)
if not header is None:
header_file_name = "mastodonpyupload_" + mimetypes.guess_extension(avatar_mime_type)
files["header"] = (header_file_name, header, header_mime_type)
params = self.__generate_params(params_initial)
return self.__api_request('PATCH', '/api/v1/accounts/update_credentials', params, files=files)
### ###
# Writing data: Lists # Writing data: Lists