From 50451cd9334bd4200d8a843b0ba9fc2f7964dea1 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 23 Nov 2018 11:05:18 +0100 Subject: [PATCH 1/3] Added `Resource.request_params` --- restless/resources.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/restless/resources.py b/restless/resources.py index 644319d..46034a1 100644 --- a/restless/resources.py +++ b/restless/resources.py @@ -77,6 +77,7 @@ def __init__(self, *args, **kwargs): self.init_args = args self.init_kwargs = kwargs self.request = None + self.params = None self.data = None self.endpoint = None self.status = 200 @@ -171,6 +172,21 @@ def request_body(self): # By default, Django-esque. return self.request.body + def request_params(self): + """ + Returns the current request URL parameters. + + Useful for providing custom options on your resources. + + If you're integrating with a new web framework, you might need to + override this method within your subclass. + + :returns: The request parameters, parsed as a mapping + :rtype: dict + """ + # By default, Django-esque. + return self.request.GET + def build_response(self, data, status=200): """ Given some data, generates an HTTP response. @@ -281,6 +297,7 @@ def handle(self, endpoint, *args, **kwargs): if not self.is_authenticated(): raise Unauthorized() + self.params = self.request_params() self.data = self.deserialize(method, endpoint, self.request_body()) view_method = getattr(self, self.http_methods[endpoint][method]) data = view_method(*args, **kwargs) From 974550686001df1b6b2898f290bcb02693b82ee5 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 23 Nov 2018 11:13:14 +0100 Subject: [PATCH 2/3] Renamed `Request.request_params` to `request_parameters` --- restless/resources.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/restless/resources.py b/restless/resources.py index 46034a1..41198a2 100644 --- a/restless/resources.py +++ b/restless/resources.py @@ -172,7 +172,7 @@ def request_body(self): # By default, Django-esque. return self.request.body - def request_params(self): + def request_parameters(self): """ Returns the current request URL parameters. @@ -297,7 +297,7 @@ def handle(self, endpoint, *args, **kwargs): if not self.is_authenticated(): raise Unauthorized() - self.params = self.request_params() + self.params = self.request_parameters() self.data = self.deserialize(method, endpoint, self.request_body()) view_method = getattr(self, self.http_methods[endpoint][method]) data = view_method(*args, **kwargs) From 4597c5c0d9c70b1e0de4bc51547cb2feee62e990 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Fri, 23 Nov 2018 11:15:07 +0100 Subject: [PATCH 3/3] Added backend specific `request_parameters` implementation --- restless/fl.py | 3 +++ restless/tnd.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/restless/fl.py b/restless/fl.py index ea34c06..861dba7 100644 --- a/restless/fl.py +++ b/restless/fl.py @@ -41,6 +41,9 @@ def _wrapper(*args, **kwargs): def request_body(self): return self.request.data + def request_parameters(self): + return self.request.args + def is_debug(self): from flask import current_app return current_app.debug diff --git a/restless/tnd.py b/restless/tnd.py index 8231d39..2bd729a 100644 --- a/restless/tnd.py +++ b/restless/tnd.py @@ -128,6 +128,9 @@ def request_method(self): def request_body(self): return self.request.body + def request_parameters(self): + return self.request.query_arguments + def build_response(self, data, status=OK): if status == NO_CONTENT: # Avoid crashing the client when it tries to parse nonexisting JSON.