lsrestclient 1.5.2__py3-none-any.whl → 1.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lsrestclient/client.py +2 -0
- lsrestclient/exceptions.py +7 -3
- lsrestclient/mock.py +27 -26
- lsrestclient/response.py +8 -2
- {lsrestclient-1.5.2.dist-info → lsrestclient-1.7.0.dist-info}/METADATA +7 -5
- lsrestclient-1.7.0.dist-info/RECORD +13 -0
- lsrestclient-1.5.2.dist-info/RECORD +0 -13
- {lsrestclient-1.5.2.dist-info → lsrestclient-1.7.0.dist-info}/WHEEL +0 -0
- {lsrestclient-1.5.2.dist-info → lsrestclient-1.7.0.dist-info}/entry_points.txt +0 -0
lsrestclient/client.py
CHANGED
@@ -66,6 +66,7 @@ class LsRestClient(Session):
|
|
66
66
|
self._mocks = {}
|
67
67
|
self.base_url = base_url
|
68
68
|
self.base_headers = {"content-type": "application/json"}
|
69
|
+
self.base_kwargs = {}
|
69
70
|
self.name = name
|
70
71
|
super().__init__()
|
71
72
|
self._clients[name] = self
|
@@ -164,6 +165,7 @@ class LsRestClient(Session):
|
|
164
165
|
|
165
166
|
headers = self.base_headers | bearer_headers | kwargs.get("headers", {})
|
166
167
|
|
168
|
+
kwargs |= self.base_kwargs
|
167
169
|
kwargs |= dict(headers=headers)
|
168
170
|
|
169
171
|
# params
|
lsrestclient/exceptions.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
import contextlib
|
2
|
+
import logging
|
2
3
|
from typing import Optional, List, Type
|
3
4
|
|
4
5
|
import pydash
|
5
6
|
from webexception.webexception import WebException
|
6
|
-
import logging
|
7
7
|
|
8
8
|
log = logging.getLogger(__name__)
|
9
9
|
|
@@ -43,8 +43,12 @@ class DownStreamError(Exception):
|
|
43
43
|
|
44
44
|
|
45
45
|
@contextlib.contextmanager
|
46
|
-
def raise_errors(r, exceptions: List[Type[Exception]]):
|
47
|
-
|
46
|
+
def raise_errors(r, exceptions: Optional[List[Type[Exception]]] = None):
|
47
|
+
if exceptions is None:
|
48
|
+
exceptions_by_class = {}
|
49
|
+
else:
|
50
|
+
exceptions_by_class = {e.__name__: e for e in exceptions}
|
51
|
+
|
48
52
|
if r.status_code < 399:
|
49
53
|
yield r
|
50
54
|
else:
|
lsrestclient/mock.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import dataclasses
|
2
2
|
from contextlib import contextmanager
|
3
|
+
from typing import Union
|
3
4
|
from unittest.mock import MagicMock
|
4
5
|
|
5
6
|
from lsrestclient import LsRestClient
|
@@ -7,40 +8,40 @@ from lsrestclient import LsRestClient
|
|
7
8
|
|
8
9
|
@dataclasses.dataclass
|
9
10
|
class LsRestClientMockModel:
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
mock_name: str
|
12
|
+
client: LsRestClient
|
13
|
+
mock: MagicMock
|
13
14
|
|
14
15
|
|
15
16
|
class LsRestClientMocker(object):
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
def __init__(self):
|
18
|
+
super().__init__()
|
19
|
+
self.mocks = {}
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
def mock(self, client: Union[LsRestClient, str], method: str, url: str, *args, **kwargs):
|
22
|
+
if isinstance(client, str):
|
23
|
+
client = LsRestClient.client(client)
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
mock_name = LsRestClient.mock_name(client.name, method, url)
|
26
|
+
mock = MagicMock(*args, **kwargs)
|
27
|
+
client.mock(mock_name, mock)
|
28
|
+
self.mocks[mock_name] = LsRestClientMockModel(client=client, mock_name=mock_name, mock=mock)
|
29
|
+
return mock
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
def unmock_all(self):
|
32
|
+
for mock_name, mock_model in self.mocks.items():
|
33
|
+
mock_model.client.unmock(mock_name)
|
34
|
+
self.mocks = {}
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
def unmock(self, client: LsRestClient, method: str, url: str):
|
37
|
+
mock_name = LsRestClient.mock_name(client.name, method, url)
|
38
|
+
mock_model = self.mocks[mock_name]
|
39
|
+
mock_model.client.unmock(mock_name)
|
40
|
+
del self.mocks[mock_name]
|
40
41
|
|
41
42
|
|
42
43
|
@contextmanager
|
43
44
|
def lsrestclient_mock_context():
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
mocker = LsRestClientMocker()
|
46
|
+
yield mocker
|
47
|
+
mocker.unmock_all()
|
lsrestclient/response.py
CHANGED
@@ -6,7 +6,6 @@ import pydash
|
|
6
6
|
from requests import Response
|
7
7
|
from requests.structures import CaseInsensitiveDict
|
8
8
|
|
9
|
-
|
10
9
|
@dataclass
|
11
10
|
class LsRestClientResponse:
|
12
11
|
"""
|
@@ -36,9 +35,16 @@ class LsRestClientResponse:
|
|
36
35
|
"""
|
37
36
|
|
38
37
|
encoding = pydash.get(response, "encoding", None)
|
38
|
+
headers = pydash.get(response, "headers", None)
|
39
|
+
content_type = headers.get("Content-Type", None)
|
40
|
+
if content_type == 'application/pdf':
|
41
|
+
content = response.content
|
42
|
+
else:
|
43
|
+
content = response.content.decode("utf8" if encoding is None else encoding)
|
44
|
+
|
39
45
|
return cls(
|
40
46
|
status_code=response.status_code,
|
41
|
-
content=
|
47
|
+
content=content,
|
42
48
|
headers=response.headers,
|
43
49
|
)
|
44
50
|
|
@@ -1,16 +1,18 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lsrestclient
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.7.0
|
4
4
|
Summary: REST Api Client
|
5
5
|
Author: mba
|
6
6
|
Author-email: bartel@electronic-shop.lu
|
7
|
-
Requires-Python: >=3.
|
7
|
+
Requires-Python: >=3.9,<4.0
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
9
|
+
Classifier: Programming Language :: Python :: 3.9
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
9
11
|
Classifier: Programming Language :: Python :: 3.11
|
10
|
-
Requires-Dist: lsjsonclasses (>=2.0.
|
11
|
-
Requires-Dist: pydash (
|
12
|
+
Requires-Dist: lsjsonclasses (>=2.0.1,<3.0.0)
|
13
|
+
Requires-Dist: pydash (>4.0.0)
|
12
14
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
13
|
-
Requires-Dist: webexception (>=1.0.
|
15
|
+
Requires-Dist: webexception (>=1.0.5,<2.0.0)
|
14
16
|
Description-Content-Type: text/markdown
|
15
17
|
|
16
18
|
# lsrestclient
|
@@ -0,0 +1,13 @@
|
|
1
|
+
lsrestclient/__init__.py,sha256=lI62SHmG0m-iukB5UEwdN5dO4cKnDasOt-TmR1rgaWI,72
|
2
|
+
lsrestclient/auth.py,sha256=n9f5GkKDbzin2jHNv9D7QBb6ZLEjamfbkzzlGpNdjLE,468
|
3
|
+
lsrestclient/client.py,sha256=44fUG8VOKkZIZM8d5EhqVE4rMmq32vLu_9yYXZWcHNg,11159
|
4
|
+
lsrestclient/contexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
+
lsrestclient/contexts/bearer_token.py,sha256=GZZOzAI2Ng_9DvFCbhv1Wwb8wJ1AYCca3fQeNtt2NaU,753
|
6
|
+
lsrestclient/exceptions.py,sha256=IkIk9bLUHv_Ds9oJ24fbdpdP2nnoUQM5RGX25hzQSdI,2197
|
7
|
+
lsrestclient/fixtures.py,sha256=dFkAYQXL6xqTOwRofb03Nsu_cIjq1sG10Rh8dxWfz9s,239
|
8
|
+
lsrestclient/mock.py,sha256=Ya12F0t5sXHTSt-X4jDDj5ILJx6y6QaBAMXutQMsIRI,1376
|
9
|
+
lsrestclient/response.py,sha256=zVisLH4TMG5Ww9gseLSb1rVpHUESoR03DNpL0bv1GCU,2165
|
10
|
+
lsrestclient-1.7.0.dist-info/METADATA,sha256=JisXxDQLDg3Ygf9RBO8gEiVeEzty6edBYPFyybwF9BM,6748
|
11
|
+
lsrestclient-1.7.0.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
12
|
+
lsrestclient-1.7.0.dist-info/entry_points.txt,sha256=7lN1XN3lq5Jv5PlpOdIlFrLlFlwzE5MaEWSgMhKASOM,47
|
13
|
+
lsrestclient-1.7.0.dist-info/RECORD,,
|
@@ -1,13 +0,0 @@
|
|
1
|
-
lsrestclient/__init__.py,sha256=lI62SHmG0m-iukB5UEwdN5dO4cKnDasOt-TmR1rgaWI,72
|
2
|
-
lsrestclient/auth.py,sha256=n9f5GkKDbzin2jHNv9D7QBb6ZLEjamfbkzzlGpNdjLE,468
|
3
|
-
lsrestclient/client.py,sha256=BEywDmQ86XsIr8aVtrbXYmm-EBN7SN-fPrakbZ1ZpX8,11094
|
4
|
-
lsrestclient/contexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
lsrestclient/contexts/bearer_token.py,sha256=GZZOzAI2Ng_9DvFCbhv1Wwb8wJ1AYCca3fQeNtt2NaU,753
|
6
|
-
lsrestclient/exceptions.py,sha256=Ze_UZutdTxmKXq8brvciZclUIkEGpmFrybPzk6TVk4Q,2105
|
7
|
-
lsrestclient/fixtures.py,sha256=dFkAYQXL6xqTOwRofb03Nsu_cIjq1sG10Rh8dxWfz9s,239
|
8
|
-
lsrestclient/mock.py,sha256=YanA_CQdaIMd99VkHaWDv3ro59fjBJsNUTZb14rC5aE,1213
|
9
|
-
lsrestclient/response.py,sha256=Bj9X9jQT2hI0jbXrxDasjDczo3QVWAj_J6yaElBQegw,1923
|
10
|
-
lsrestclient-1.5.2.dist-info/METADATA,sha256=CQxcyIzCgbTLuvd1atsfmvGUiXz1yNx74eMsWSJCQiU,6656
|
11
|
-
lsrestclient-1.5.2.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
12
|
-
lsrestclient-1.5.2.dist-info/entry_points.txt,sha256=7lN1XN3lq5Jv5PlpOdIlFrLlFlwzE5MaEWSgMhKASOM,47
|
13
|
-
lsrestclient-1.5.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|