Skip to content

Commit 7a9baa2

Browse files
committed
ENH: implementation of 'version_get' API
1 parent 214050b commit 7a9baa2

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

src/save_and_restore_api/_api_async.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ async def info_get(self):
4848
method, url = self._prepare_info_get()
4949
return await self.send_request(method, url)
5050

51+
async def version_get(self):
52+
"""
53+
Returns current version of Save and Restore service.
54+
55+
API: GET /verson
56+
"""
57+
method, url = self._prepare_version_get()
58+
return await self.send_request(method, url)
59+
5160
# =============================================================================================
5261
# AUTHENTICATION-CONTROLLER API METHODS
5362
# =============================================================================================

src/save_and_restore_api/_api_base.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,12 @@ def auth_clear(self):
100100

101101
def _process_response(self, *, client_response):
102102
client_response.raise_for_status()
103-
response = client_response.json() if client_response.content else ""
103+
response = ""
104+
if client_response.content:
105+
try:
106+
response = client_response.json()
107+
except json.JSONDecodeError:
108+
response = client_response.text
104109
return response
105110

106111
def _process_comm_exception(self, *, method, params, client_response):
@@ -167,6 +172,10 @@ def _prepare_info_get(self):
167172
method, url = "GET", "/"
168173
return method, url
169174

175+
def _prepare_version_get(self):
176+
method, url = "GET", "/version"
177+
return method, url
178+
170179
# =============================================================================================
171180
# AUTHENTICATION-CONTROLLER API METHODS
172181
# =============================================================================================

src/save_and_restore_api/_api_threads.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ def info_get(self):
5252
method, url = self._prepare_info_get()
5353
return self.send_request(method, url)
5454

55+
def version_get(self):
56+
"""
57+
Returns information on the name and current version of the service.
58+
59+
API: GET /verson
60+
"""
61+
method, url = self._prepare_version_get()
62+
return self.send_request(method, url)
63+
5564
# =============================================================================================
5665
# AUTHENTICATION-CONTROLLER API METHODS
5766
# =============================================================================================

tests/test_misc.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,33 @@ async def testing():
9292

9393
asyncio.run(testing())
9494

95+
# fmt: off
96+
@pytest.mark.parametrize("library", ["THREADS", "ASYNC"])
97+
# fmt: on
98+
def test_version_get_01(library):
99+
"""
100+
Tests for the 'version_get' API.
101+
"""
102+
if not _is_async(library):
103+
with SaveRestoreAPI_Threads(base_url=base_url, timeout=2) as SR:
104+
105+
info = SR.version_get()
106+
isinstance(info, str)
107+
assert "service-save-and-restore" in info
108+
assert "version" in info
109+
110+
else:
111+
async def testing():
112+
async with SaveRestoreAPI_Async(base_url=base_url, timeout=2) as SR:
113+
114+
info = await SR.version_get()
115+
isinstance(info, str)
116+
assert "service-save-and-restore" in info
117+
assert "version" in info
118+
119+
asyncio.run(testing())
120+
121+
95122
# =============================================================================================
96123
# TESTS FOR AUTHENTICATION-CONTROLLER API METHODS
97124
# =============================================================================================

0 commit comments

Comments
 (0)