diff --git a/miniflux.py b/miniflux.py index f268d41..b5134e1 100644 --- a/miniflux.py +++ b/miniflux.py @@ -20,7 +20,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -import json from typing import List, Optional, Union import requests @@ -285,7 +284,7 @@ def discover(self, website_url: str, **kwargs) -> List[dict]: response = self._session.post( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 200: @@ -406,7 +405,7 @@ def create_feed(self, feed_url: str, category_id: Optional[int] = None, **kwargs response = self._session.post( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: @@ -428,7 +427,7 @@ def update_feed(self, feed_id: int, **kwargs) -> dict: data = self._get_modification_params(**kwargs) response = self._session.put( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: @@ -594,7 +593,7 @@ def import_entry( response = self._session.post( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code in (200, 201): @@ -676,7 +675,7 @@ def update_entry(self, entry_id: int, title: Optional[str] = None, content: Opti ) response = self._session.put( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: @@ -699,7 +698,7 @@ def update_entries(self, entry_ids: List[int], status: str) -> bool: data = {"entry_ids": entry_ids, "status": status} response = self._session.put( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code >= 400: @@ -790,7 +789,7 @@ def update_enclosure(self, enclosure_id: int, media_progression: Optional[int] = data = self._get_modification_params(media_progression=media_progression) response = self._session.put( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code != 204: @@ -867,7 +866,7 @@ def create_category(self, title: str) -> dict: data = {"title": title} response = self._session.post( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: @@ -890,7 +889,7 @@ def update_category(self, category_id: int, title: str) -> dict: data = {"id": category_id, "title": title} response = self._session.put( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: @@ -990,7 +989,7 @@ def create_user(self, username: str, password: str, is_admin: bool = False) -> d data = {"username": username, "password": password, "is_admin": is_admin} response = self._session.post( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: @@ -1012,7 +1011,7 @@ def update_user(self, user_id: int, **kwargs) -> dict: data = self._get_modification_params(**kwargs) response = self._session.put( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: @@ -1107,7 +1106,7 @@ def create_api_key(self, description: str) -> dict: data = {"description": description} response = self._session.post( endpoint, - data=json.dumps(data), + json=data, timeout=self._timeout, ) if response.status_code == 201: diff --git a/tests/test_client.py b/tests/test_client.py index 47e0a26..c4aca63 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -20,7 +20,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -import json import time import unittest from unittest import mock @@ -113,7 +112,7 @@ def test_base_url_with_trailing_slash(self): session.post.assert_called_once_with( "http://localhost/v1/discover", - data=mock.ANY, + json=mock.ANY, timeout=30.0, ) self.assertEqual(session.auth, ("username", "password")) @@ -218,12 +217,12 @@ def test_discover(self): session.post.assert_called_once_with( "http://localhost/v1/discover", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("url"), "http://example.org/") self.assertIsNone(payload.get("username")) @@ -251,12 +250,12 @@ def test_discover_with_credentials(self): session.post.assert_called_once_with( "http://localhost/v1/discover", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("url"), "http://example.org/") self.assertEqual(payload.get("username"), "foobar") @@ -429,12 +428,12 @@ def test_create_feed(self): session.post.assert_called_once_with( "http://localhost/v1/feeds", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("feed_url"), "http://example.org/feed") self.assertEqual(payload.get("category_id"), 123) @@ -459,12 +458,12 @@ def test_create_feed_with_no_category(self): session.post.assert_called_once_with( "http://localhost/v1/feeds", - data=mock.ANY, + json=mock.ANY, timeout=30.0, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("feed_url"), "http://example.org/feed") self.assertIsNone(payload.get("category_id")) @@ -489,12 +488,12 @@ def test_create_feed_with_credentials(self): session.post.assert_called_once_with( "http://localhost/v1/feeds", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("feed_url"), "http://example.org/feed") self.assertEqual(payload.get("category_id"), 123) @@ -519,12 +518,12 @@ def test_create_feed_with_crawler_enabled(self): session.post.assert_called_once_with( "http://localhost/v1/feeds", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("feed_url"), "http://example.org/feed") self.assertEqual(payload.get("category_id"), 123) @@ -549,12 +548,12 @@ def test_create_feed_with_custom_user_agent_and_crawler_disabled(self): session.post.assert_called_once_with( "http://localhost/v1/feeds", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("feed_url"), "http://example.org/feed") self.assertEqual(payload.get("category_id"), 123) @@ -580,12 +579,12 @@ def test_update_feed(self): session.put.assert_called_once_with( "http://localhost/v1/feeds/123", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.put.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertNotIn("feed_url", payload) self.assertNotIn("category_id", payload) @@ -743,12 +742,12 @@ def test_import_entry(self): session.post.assert_called_once_with( "http://localhost/v1/feeds/123/entries/import", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("url"), "http://example.org/article.html") self.assertEqual(payload.get("title"), "Entry Title") @@ -777,12 +776,12 @@ def test_import_entry_with_published_at_timestamp(self): session.post.assert_called_once_with( "http://localhost/v1/feeds/123/entries/import", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("published_at"), published_at) self.assertEqual(result, expected_result) @@ -803,12 +802,12 @@ def test_import_entry_when_existing(self): session.post.assert_called_once_with( "http://localhost/v1/feeds/123/entries/import", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.post.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("url"), "http://example.org/article.html") self.assertEqual(result, expected_result) @@ -1100,12 +1099,12 @@ def test_update_user(self): session.put.assert_called_once_with( "http://localhost/v1/users/123", - data=mock.ANY, + json=mock.ANY, timeout=30, ) _, kwargs = session.put.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertNotIn("username", payload) self.assertNotIn("password", payload) @@ -1224,12 +1223,12 @@ def test_update_entry_title(self): session.put.assert_called_once_with( "http://localhost/v1/entries/123", - data=mock.ANY, + json=mock.ANY, timeout=30.0, ) _, kwargs = session.put.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("title"), "New title") self.assertEqual(result, expected_result) @@ -1250,12 +1249,12 @@ def test_update_entry_content(self): session.put.assert_called_once_with( "http://localhost/v1/entries/123", - data=mock.ANY, + json=mock.ANY, timeout=30.0, ) _, kwargs = session.put.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("content"), "New content") self.assertEqual(result, expected_result) @@ -1274,12 +1273,12 @@ def test_update_entries_status(self): session.put.assert_called_once_with( "http://localhost/v1/entries", - data=mock.ANY, + json=mock.ANY, timeout=30.0, ) _, kwargs = session.put.call_args - payload = json.loads(kwargs.get("data")) + payload = kwargs.get("json") self.assertEqual(payload.get("entry_ids"), [123, 456]) self.assertEqual(payload.get("status"), "read") @@ -1320,7 +1319,7 @@ def test_update_enclosure(self): session.put.assert_called_once_with( "http://localhost/v1/enclosures/123", - data=mock.ANY, + json=mock.ANY, timeout=30.0, ) @@ -1382,7 +1381,7 @@ def test_create_api_key(self): session.post.assert_called_once_with( "http://localhost/v1/api-keys", - data=json.dumps({"description": "New API Key"}), + json={"description": "New API Key"}, timeout=30.0, ) self.assertEqual(session.headers.get("X-Auth-Token"), "secret")