aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mastodon/Mastodon.py')
-rw-r--r--mastodon/Mastodon.py61
1 files changed, 36 insertions, 25 deletions
diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py
index c519a0d..82e058c 100644
--- a/mastodon/Mastodon.py
+++ b/mastodon/Mastodon.py
@@ -210,10 +210,20 @@ class Mastodon:
210 'admin:read': [ 210 'admin:read': [
211 'admin:read:accounts', 211 'admin:read:accounts',
212 'admin:read:reports', 212 'admin:read:reports',
213 'admin:read:domain_allows',
214 'admin:read:domain_blocks',
215 'admin:read:ip_blocks',
216 'admin:read:email_domain_blocks',
217 'admin:read:canonical_email_blocks',
213 ], 218 ],
214 'admin:write': [ 219 'admin:write': [
215 'admin:write:accounts', 220 'admin:write:accounts',
216 'admin:write:reports', 221 'admin:write:reports',
222 'admin:write:domain_allows',
223 'admin:write:domain_blocks',
224 'admin:write:ip_blocks',
225 'admin:write:email_domain_blocks',
226 'admin:write:canonical_email_blocks',
217 ], 227 ],
218 } 228 }
219 __VALID_SCOPES = ['read', 'write', 'follow', 'push', 'admin:read', 'admin:write'] + \ 229 __VALID_SCOPES = ['read', 'write', 'follow', 'push', 'admin:read', 'admin:write'] + \
@@ -253,6 +263,7 @@ class Mastodon:
253 __DICT_VERSION_REACTION = "3.1.0" 263 __DICT_VERSION_REACTION = "3.1.0"
254 __DICT_VERSION_ANNOUNCEMENT = bigger_version("3.1.0", __DICT_VERSION_REACTION) 264 __DICT_VERSION_ANNOUNCEMENT = bigger_version("3.1.0", __DICT_VERSION_REACTION)
255 __DICT_VERSION_STATUS_EDIT = "3.5.0" 265 __DICT_VERSION_STATUS_EDIT = "3.5.0"
266 __DICT_VERSION_ADMIN_DOMAIN_BLOCK = "4.0.0"
256 267
257 ### 268 ###
258 # Registering apps 269 # Registering apps
@@ -3363,26 +3374,26 @@ class Mastodon:
3363 params = self.__generate_params(locals()) 3374 params = self.__generate_params(locals())
3364 return self.__api_request('GET', '/api/v1/admin/trends/links', params) 3375 return self.__api_request('GET', '/api/v1/admin/trends/links', params)
3365 3376
3366 @api_version("4.0.0","4.0.0","4.0.0") 3377 @api_version("4.0.0", "4.0.0", __DICT_VERSION_ADMIN_DOMAIN_BLOCK)
3367 def admin_domain_blocks(self, id:str=None, limit:int=None): 3378 def admin_domain_blocks(self, id=None, limit:int=None):
3368 """ 3379 """
3369 Fetches a list of blocked domains. Requires scope `admin:read:domain_blocks`. 3380 Fetches a list of blocked domains. Requires scope `admin:read:domain_blocks`.
3370 3381
3371 Provide an `id` to fetch a specific domain block based on its database id. 3382 Provide an `id` to fetch a specific domain block based on its database id.
3372 3383
3373 Returns a list of `domain dicts`_, or 404 if a domain is queried for and not found. 3384 Returns a list of `admin domain block dicts`_, raises a `MastodonAPIError` if the specified block does not exist.
3374 """ 3385 """
3375 id = self.__unpack_id(id)
3376 if id is not None: 3386 if id is not None:
3387 id = self.__unpack_id(id)
3377 return self.__api_request('GET', '/api/v1/admin/domain_blocks/{0}'.format(id)) 3388 return self.__api_request('GET', '/api/v1/admin/domain_blocks/{0}'.format(id))
3378 else: 3389 else:
3379 params = self.__generate_params(locals(),['limit']) 3390 params = self.__generate_params(locals(),['limit'])
3380 return self.__api_request('GET', '/api/v1/admin/domain_blocks/', params) 3391 return self.__api_request('GET', '/api/v1/admin/domain_blocks/', params)
3381 3392
3382 @api_version("4.0.0","4.0.0","4.0.0") 3393 @api_version("4.0.0", "4.0.0", __DICT_VERSION_ADMIN_DOMAIN_BLOCK)
3383 def admin_domain_block(self, domain:str, severity:str=None, reject_media:bool=None, reject_reports:bool=None, private_comment:str=None, public_comment:str=None, obfuscate:bool=None): 3394 def admin_create_domain_block(self, domain:str, severity:str=None, reject_media:bool=None, reject_reports:bool=None, private_comment:str=None, public_comment:str=None, obfuscate:bool=None):
3384 """ 3395 """
3385 Perform a moderation action on a domain. 3396 Perform a moderation action on a domain. Requires scope `admin:write:domain_blocks`.
3386 3397
3387 Valid severities are: 3398 Valid severities are:
3388 * "silence" - hide all posts from federated timelines and do not show notifications to local users from the remote instance's users unless they are following the remote user. 3399 * "silence" - hide all posts from federated timelines and do not show notifications to local users from the remote instance's users unless they are following the remote user.
@@ -3395,20 +3406,19 @@ class Mastodon:
3395 `reject_reports` ignores all reports from the remote instance. 3406 `reject_reports` ignores all reports from the remote instance.
3396 `private_comment` sets a private admin comment for the domain. 3407 `private_comment` sets a private admin comment for the domain.
3397 `public_comment` sets a publicly available comment for this domain, which will be available to local users and may be available to everyone depending on your settings. 3408 `public_comment` sets a publicly available comment for this domain, which will be available to local users and may be available to everyone depending on your settings.
3398 `obfuscate` sensors some part of the domain name. Useful if the domain name contains unwanted words like slurs. 3409 `obfuscate` censors some part of the domain name. Useful if the domain name contains unwanted words like slurs.
3410
3411 Returns the new domain block as an `admin domain block dict`_.
3399 """ 3412 """
3400 if domain is None: 3413 if domain is None:
3401 raise AttributeError("Must provide a domain to block a domain") 3414 raise AttributeError("Must provide a domain to block a domain")
3402
3403 params = self.__generate_params(locals()) 3415 params = self.__generate_params(locals())
3416 return self.__api_request('POST', '/api/v1/admin/domain_blocks/', params)
3404 3417
3405 3418 @api_version("4.0.0", "4.0.0", __DICT_VERSION_ADMIN_DOMAIN_BLOCK)
3406 self.__api_request('POST', '/api/v1/admin/domain_blocks/', params) 3419 def admin_update_domain_block(self, id, severity:str=None, reject_media:bool=None, reject_reports:bool=None, private_comment:str=None, public_comment:str=None, obfuscate:bool=None):
3407
3408 @api_version("4.0.0","4.0.0","4.0.0")
3409 def admin_update_domain_block(self, id:str, severity:str=None, reject_media:bool=None, reject_reports:bool=None, private_comment:str=None, public_comment:str=None, obfuscate:bool=None):
3410 """ 3420 """
3411 Modify existing moderation action on a domain. 3421 Modify existing moderation action on a domain. Requires scope `admin:write:domain_blocks`.
3412 3422
3413 Valid severities are: 3423 Valid severities are:
3414 * "silence" - hide all posts from federated timelines and do not show notifications to local users from the remote instance's users unless they are following the remote user. 3424 * "silence" - hide all posts from federated timelines and do not show notifications to local users from the remote instance's users unless they are following the remote user.
@@ -3421,27 +3431,28 @@ class Mastodon:
3421 `reject_reports` ignores all reports from the remote instance. 3431 `reject_reports` ignores all reports from the remote instance.
3422 `private_comment` sets a private admin comment for the domain. 3432 `private_comment` sets a private admin comment for the domain.
3423 `public_comment` sets a publicly available comment for this domain, which will be available to local users and may be available to everyone depending on your settings. 3433 `public_comment` sets a publicly available comment for this domain, which will be available to local users and may be available to everyone depending on your settings.
3424 `obfuscate` sensors some part of the domain name. Useful if the domain name contains unwanted words like slurs. 3434 `obfuscate` censors some part of the domain name. Useful if the domain name contains unwanted words like slurs.
3435
3436 Returns the modified domain block as an `admin domain block dict`_, raises a `MastodonAPIError` if the specified block does not exist.
3425 """ 3437 """
3426 if id is None: 3438 if id is None:
3427 raise AttributeError("Must provide an id to modify the existing moderation actions on a given domain.") 3439 raise AttributeError("Must provide an id to modify the existing moderation actions on a given domain.")
3440 id = self.__unpack_id(id)
3441 params = self.__generate_params(locals(), ["id"])
3442 return self.__api_request('PUT', '/api/v1/admin/domain_blocks/{0}'.format(id), params)
3428 3443
3429 params = self.__generate_params(locals()) 3444 @api_version("4.0.0", "4.0.0", __DICT_VERSION_ADMIN_DOMAIN_BLOCK)
3430 3445 def admin_delete_domain_block(self, id=None):
3431 self.__api_request('PUT', '/api/v1/admin/domain_blocks/', params)
3432
3433 @api_version("4.0.0","4.0.0","4.0.0")
3434 def admin_delete_domain_blocks(self, id:str=None):
3435 """ 3446 """
3436 Removes moderation action against a given domain. Requires scope `admin:write:domain_blocks`. 3447 Removes moderation action against a given domain. Requires scope `admin:write:domain_blocks`.
3437 3448
3438 Provide an `id` to remove a specific domain block based on its database id. 3449 Provide an `id` to remove a specific domain block based on its database id.
3439 3450
3440 Returns 200 OK if successful. 3451 Raises a `MastodonAPIError` if the specified block does not exist.
3441 """ 3452 """
3442 id = self.__unpack_id(id)
3443 if id is not None: 3453 if id is not None:
3444 return self.__api_request('DELETE', '/api/v1/admin/domain_blocks/{0}'.format(id)) 3454 id = self.__unpack_id(id)
3455 self.__api_request('DELETE', '/api/v1/admin/domain_blocks/{0}'.format(id))
3445 else: 3456 else:
3446 raise AttributeError("You must provide an id of an existing domain block to remove it.") 3457 raise AttributeError("You must provide an id of an existing domain block to remove it.")
3447 3458
Powered by cgit v1.2.3 (git 2.41.0)