Add preferences endpoint

This commit is contained in:
Lorenz Diener 2019-04-28 21:53:01 +02:00
pare 66524ad4df
commit 3eba3f8835
S'han modificat 4 arxius amb 75 adicions i 2 eliminacions

Veure arxiu

@ -335,7 +335,7 @@ Scheduled toot dicts
.. code-block:: python
api2.status_post("text", scheduled_at=the_future)
mastodon.status_post("text", scheduled_at=the_future)
# Returns the following dictionary:
{
'id': # Scheduled toot ID (note: Not the id of the toot once it gets posted!)
@ -693,6 +693,26 @@ Push notification dicts
'title': # Title for the notification
}
Preference dicts
~~~~~~~~~~~~~~~~
.. _preference dict:
.. code-block:: python
mastodon.preferences()
# Returns the following dictionary
{
'posting:default:visibility': # The default visibility setting for the users posts,
# as a string
'posting:default:sensitive': # Boolean indicating whether the users uploads should
# be marked sensitive by default
'posting:default:language': # The users default post language, if set (None if not)
'reading:expand:media': # How the user wishes to be shown sensitive media. Can be
# 'default' (hide if sensitive), 'hide_all' or 'show_all'
'reading:expand:spoilers': # Boolean indicating whether the user wishes to expand
# content warnings by default
}
App registration and user authentication
----------------------------------------
Before you can use the mastodon API, you have to register your
@ -878,6 +898,11 @@ Reading data: Endorsements
.. automethod:: Mastodon.endorsements
Reading data: Preferences
--------------------------
.. automethod:: Mastodon.preferences
Writing data: Statuses
----------------------

Veure arxiu

@ -180,6 +180,7 @@ class Mastodon:
__DICT_VERSION_FILTER = "2.4.3"
__DICT_VERSION_CONVERSATION = bigger_version(bigger_version("2.6.0", __DICT_VERSION_ACCOUNT), __DICT_VERSION_STATUS)
__DICT_VERSION_SCHEDULED_STATUS = bigger_version("2.7.0", __DICT_VERSION_STATUS)
__DICT_VERSION_PREFERENCES = "2.8.0"
###
# Registering apps
@ -1349,6 +1350,20 @@ class Mastodon:
"""
return self.__api_request('GET', '/api/v1/push/subscription')
###
# Reading data: Preferences
###
@api_version("2.8.0", "2.8.0", __DICT_VERSION_PREFERENCES)
def preferences(self):
"""
Fetch the users preferences, which can be used to set some default options.
As of 2.8.0, apps can only fetch, not update preferences.
Returns a `preference dict`_.
"""
return self.__api_request('GET', '/api/v1/preferences')
###
# Writing data: Statuses
###

Veure arxiu

@ -0,0 +1,30 @@
interactions:
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
Connection: [keep-alive]
User-Agent: [python-requests/2.18.4]
method: GET
uri: http://localhost:3000/api/v1/preferences
response:
body: {string: '{"posting:default:visibility":"public","posting:default:sensitive":false,"posting:default:language":null,"reading:expand:media":"default","reading:expand:spoilers":false}'}
headers:
Cache-Control: ['max-age=0, private, must-revalidate']
Content-Type: [application/json; charset=utf-8]
ETag: [W/"16e1b4c608ece78202df9c19d6a56932"]
Referrer-Policy: [strict-origin-when-cross-origin]
Transfer-Encoding: [chunked]
Vary: ['Accept-Encoding, Origin']
X-Content-Type-Options: [nosniff]
X-Download-Options: [noopen]
X-Frame-Options: [SAMEORIGIN]
X-Permitted-Cross-Domain-Policies: [none]
X-Request-Id: [0b19cc10-64ae-4fd4-827e-0e8e1b46c673]
X-Runtime: ['0.032833']
X-XSS-Protection: [1; mode=block]
content-length: ['170']
status: {code: 200, message: OK}
version: 1

Veure arxiu

@ -205,4 +205,7 @@ def test_account_pin_unpin(api, api2):
assert not relationship['endorsed']
assert not user["id"] in map(lambda x: x["id"], endorsed2)
@pytest.mark.vcr()
def test_preferences(api):
prefs = api.preferences()
assert prefs