Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion doc/source/customization.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ b) what functionality you need to maintain.
class Meta:
request_handler = MyRequestHandler

def some_custom_function(self, params={}):
def some_custom_function(self, params=None):
if params is None:
params = {}
# do some kind of custom api call
return self.request('GET', '/users/some_custom_function', params)

Expand Down
8 changes: 6 additions & 2 deletions drest/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,11 @@ def auth(self, user, password, **kw):
"""
self.request.set_auth_credentials(user, password)

def make_request(self, method, path, params={}, headers={}):
def make_request(self, method, path, params=None, headers=None):
if params is None:
params = {}
if headers is None:
headers = {}
url = "%s/%s/" % (self.baseurl.strip('/'), path.strip('/'))
return self.request.make_request(method, url, params, headers)

Expand Down Expand Up @@ -431,4 +435,4 @@ def find_resources(self):
for resource in list(response.data.keys()):
if resource not in self._resources:
self.add_resource(resource)


17 changes: 12 additions & 5 deletions drest/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def add_header(key, value):

"""

def make_request(method, path, params={}, headers={}):
def make_request(method, path, params=None, headers=None):
"""
Make a request with the upstream API.

Expand All @@ -115,11 +115,11 @@ def make_request(method, path, params={}, headers={}):
Optional Arguments:

params
Parameters to pass with the request. These will be serialized
Dictionary of parameters to pass with the request. These will be serialized
if configured to serialize.

headers
Headers to pass to the request.
Dictionary of headers to pass to the request.

"""

Expand Down Expand Up @@ -308,7 +308,7 @@ def _get_http(self):
def _clear_http(self):
self._http = None

def _make_request(self, url, method, payload={}, headers={}):
def _make_request(self, url, method, payload="", headers=None):
"""
A wrapper around httplib2.Http.request.

Expand All @@ -329,6 +329,9 @@ def _make_request(self, url, method, payload={}, headers={}):
Additional headers of the request.

"""
if headers is None:
headers = {}

try:
http = self._get_http()
return http.request(url, method, payload, headers=headers)
Expand Down Expand Up @@ -358,7 +361,7 @@ def _get_complete_url(self, method, url, params):

return url

def make_request(self, method, url, params={}, headers={}):
def make_request(self, method, url, params=None, headers=None):
"""
Make a call to a resource based on path, and parameters.

Expand All @@ -382,6 +385,10 @@ def make_request(self, method, url, params={}, headers={}):
Dictionary of additional (one-time) headers of the request.

"""
if params is None:
params = {}
if headers is None:
headers = {}
params = dict(self._extra_params, **params)
headers = dict(self._extra_headers, **headers)
url = self._get_complete_url(method, url, params)
Expand Down
35 changes: 27 additions & 8 deletions drest/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class Meta:
def __init__(self, api_obj, name, path, **kw):
super(RESTResourceHandler, self).__init__(api_obj, name, path, **kw)

def get(self, resource_id=None, params={}):
def get(self, resource_id=None, params=None):
"""
Get all records for a resource, or a single resource record.

Expand All @@ -102,6 +102,8 @@ def get(self, resource_id=None, params={}):
Additional request parameters to pass along.

"""
if params is None:
params = {}
if resource_id:
path = '/%s/%s' % (self.path, resource_id)
else:
Expand All @@ -117,11 +119,14 @@ def get(self, resource_id=None, params={}):

return response

def create(self, params={}):
def create(self, params=None):
"""A synonym for self.post()."""
if params is None:
params = {}

return self.post(params)

def post(self, params={}):
def post(self, params=None):
"""
Create a new resource.

Expand All @@ -131,6 +136,9 @@ def post(self, params={}):
A dictionary of parameters (different for every resource).

"""
if params is None:
params = {}

params = self.filter(params)
path = '/%s' % self.path

Expand All @@ -142,11 +150,14 @@ def post(self, params={}):

return response

def update(self, resource_id, params={}):
def update(self, resource_id, params=None):
"""A synonym for self.put()."""
if params is None:
params = {}

return self.put(resource_id, params)

def put(self, resource_id, params={}):
def put(self, resource_id, params=None):
"""
Update an existing resource.

Expand All @@ -159,6 +170,8 @@ def put(self, resource_id, params={}):
A dictionary of parameters (different for every resource).

"""
if params is None:
params = {}

params = self.filter(params)
path = '/%s/%s' % (self.path, resource_id)
Expand All @@ -172,7 +185,7 @@ def put(self, resource_id, params={}):

return response

def patch(self, resource_id, params={}):
def patch(self, resource_id, params=None):
"""
Update only specific items of an existing resource.

Expand All @@ -185,6 +198,8 @@ def patch(self, resource_id, params={}):
A dictionary of parameters (different for every resource).

"""
if params is None:
params = {}

params = self.filter(params)
path = '/%s/%s' % (self.path, resource_id)
Expand All @@ -198,7 +213,7 @@ def patch(self, resource_id, params={}):

return response

def delete(self, resource_id, params={}):
def delete(self, resource_id, params=None):
"""
Delete resource record.

Expand All @@ -216,6 +231,8 @@ def delete(self, resource_id, params={}):
(normally deletion only sets the status to 'Deleted').

"""
if params is None:
params = {}
path = '/%s/%s' % (self.path, resource_id)
try:
response = self.api.make_request('DELETE', path, params)
Expand Down Expand Up @@ -249,7 +266,7 @@ def __init__(self, api_obj, name, path, **kw):
super(TastyPieResourceHandler, self).__init__(api_obj, name, path, **kw)
self._schema = None

def get_by_uri(self, resource_uri, params={}):
def get_by_uri(self, resource_uri, params=None):
"""
A wrapper around self.get() that accepts a TastyPie 'resource_uri'
rather than a 'pk' (primary key).
Expand All @@ -269,6 +286,8 @@ def get_by_uri(self, resource_uri, params={}):
response = api.users.get_by_uri('/api/v1/users/234/')

"""
if params is None:
params = {}
resource_uri = resource_uri.rstrip('/')
pk = resource_uri.split('/')[-1]
return self.get(pk, params)
Expand Down