From b75d042f211b80ec9083a727a267a28cc26bdb34 Mon Sep 17 00:00:00 2001
From: sschoorens <stephane.schoorens@ubicast.eu>
Date: Mon, 20 Jan 2020 11:40:38 +0100
Subject: [PATCH] add resource id support refs #29848

---
 pod_client/Resource.py   | 24 +++++++++++++-----------
 tests/test_pod_client.py |  2 ++
 tests/test_resource.py   |  4 ++++
 3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/pod_client/Resource.py b/pod_client/Resource.py
index 749a1ae..4a6e47d 100644
--- a/pod_client/Resource.py
+++ b/pod_client/Resource.py
@@ -48,8 +48,10 @@ class Resource:
         if not API_URLS.get(self.name):
             raise Exception('Resource url not supported')
 
-    def _request(self, method='GET', headers={}, params={}, data={}, **request_params):
+    def _request(self, method='GET', resource_id=None, headers={}, params={}, data={}, **request_params):
         url = '%s/%s' % (self.host_url, API_URLS[self.name])
+        if resource_id:
+            url = '%s/%s' % (url, resource_id)
         headers['Authorization'] = 'Token %s' % self.api_key
         try:
             response = requests.request(method, url, headers=headers, params=params, data=data, **request_params)
@@ -61,17 +63,17 @@ class Resource:
             return
         return response
 
-    def get(self, data=None, **request_params):
-        return self._request('GET', params=data, **request_params)
+    def get(self, resource_id=None, data=None, **request_params):
+        return self._request('GET', resource_id=resource_id, params=data, **request_params)
 
-    def post(self, data=None, **request_params):
-        return self._request('POST', data=data, **request_params)
+    def post(self, resource_id=None, data=None, **request_params):
+        return self._request('POST', resource_id=resource_id, data=data, **request_params)
 
-    def put(self, data=None, **request_params):
-        return self._request('PUT', data=data, **request_params)
+    def put(self, resource_id=None, data=None, **request_params):
+        return self._request('PUT', resource_id=resource_id, data=data, **request_params)
 
-    def patch(self, data=None, **request_params):
-        return self._request('PATCH', data=data, **request_params)
+    def patch(self, resource_id=None, data=None, **request_params):
+        return self._request('PATCH', resource_id=resource_id, data=data, **request_params)
 
-    def delete(self, data=None, **request_params):
-        return self._request('DELETE', data=data, **request_params)
+    def delete(self, resource_id=None, data=None, **request_params):
+        return self._request('DELETE', resource_id=resource_id, data=data, **request_params)
diff --git a/tests/test_pod_client.py b/tests/test_pod_client.py
index 2f97de7..3f5bb4e 100644
--- a/tests/test_pod_client.py
+++ b/tests/test_pod_client.py
@@ -38,3 +38,5 @@ class PodClientTest(TestCase):
         except Exception:
             success = False
         self.assertFalse(success)
+
+        self.assertTrue(pod_client.videos.get())
diff --git a/tests/test_resource.py b/tests/test_resource.py
index 0e10746..f5dd7d5 100644
--- a/tests/test_resource.py
+++ b/tests/test_resource.py
@@ -46,6 +46,10 @@ class ResourceTest(TestCase):
         resource = Resource(HOST, API_KEY, 'videos')
         response = resource.get()
         self.assertEqual(response.status_code, 200, response.text)
+        first_id = response.json().get('results', [])[0].get('id')
+        self.assertTrue(first_id)
+        response = resource.get(resource_id=first_id)
+        self.assertEqual(response.status_code, 200, response.text)
 
     def test_post(self):
         pass
-- 
GitLab