Skip to content

Commit ebafdc7

Browse files
author
Zach Moody
committed
Use response_loader in Endpoint and DetailEndpoint
1 parent af565d5 commit ebafdc7

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

pynetbox/core/endpoint.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,15 @@
1919
RESERVED_KWARGS = ("id", "pk", "limit", "offset")
2020

2121

22+
def response_loader(req, return_obj, endpoint):
23+
if isinstance(req, list):
24+
return [
25+
return_obj(i, endpoint.api, endpoint)
26+
for i in req
27+
]
28+
return return_obj(req, endpoint.api, endpoint)
29+
30+
2231
class Endpoint(object):
2332
"""Represent actions available on endpoints in the Netbox API.
2433
@@ -73,9 +82,6 @@ def _lookup_ret_obj(self, name, model):
7382
ret = Record
7483
return ret
7584

76-
def _response_loader(self, values):
77-
return self.return_obj(values, self.api, self)
78-
7985
def all(self):
8086
"""Queries the 'ListView' of a given endpoint.
8187
@@ -97,7 +103,7 @@ def all(self):
97103
threading=self.api.threading,
98104
)
99105

100-
return [self._response_loader(i) for i in req.get()]
106+
return response_loader(req.get(), self.return_obj, self)
101107

102108
def get(self, *args, **kwargs):
103109
r"""Queries the DetailsView of a given endpoint.
@@ -157,7 +163,7 @@ def get(self, *args, **kwargs):
157163
except RequestError:
158164
return None
159165

160-
return self._response_loader(req.get())
166+
return response_loader(req.get(), self.return_obj, self)
161167

162168
def filter(self, *args, **kwargs):
163169
r"""Queries the 'ListView' of a given endpoint.
@@ -223,8 +229,7 @@ def filter(self, *args, **kwargs):
223229
threading=self.api.threading,
224230
)
225231

226-
ret = [self._response_loader(i) for i in req.get()]
227-
return ret
232+
return response_loader(req.get(), self.return_obj, self)
228233

229234
def create(self, *args, **kwargs):
230235
r"""Creates an object on an endpoint.
@@ -284,10 +289,7 @@ def create(self, *args, **kwargs):
284289
http_session=self.api.http_session,
285290
).post(args[0] if args else kwargs)
286291

287-
if isinstance(req, list):
288-
return [self._response_loader(i) for i in req]
289-
290-
return self._response_loader(req)
292+
return response_loader(req, self.return_obj, self)
291293

292294
def choices(self):
293295
""" Returns all choices from the endpoint.
@@ -429,16 +431,7 @@ def list(self, **kwargs):
429431
req = Request(**self.request_kwargs).get(add_params=kwargs)
430432

431433
if self.custom_return:
432-
if isinstance(req, list):
433-
return [
434-
self.custom_return(
435-
i, self.parent_obj.api, self.parent_obj.endpoint
436-
)
437-
for i in req
438-
]
439-
return self.custom_return(
440-
req, self.parent_obj.api, self.parent_obj.endpoint
441-
)
434+
return response_loader(req, self.custom_return, self.parent_obj.endpoint)
442435
return req
443436

444437
def create(self, data=None):

0 commit comments

Comments
 (0)