Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def build_response(self, data, status=OK):
if status == NO_CONTENT:
# Avoid crashing the client when it tries to parse nonexisting JSON.
content_type = 'text/plain'
else:
content_type = 'application/json'
return make_response(data, status, {
'Content-Type': content_type,
})
* ``create_detail`` (requires authentication)
* ``update_list`` (requires authentication)
* ``delete_list`` (requires authentication)
Users may also wish to define a ``fields`` attribute on the class. By
providing a dictionary of output names mapped to a dotted lookup path, you
can control the serialized output.
Users may also choose to override the ``status_map`` and/or ``http_methods``
on the class. These respectively control the HTTP status codes returned by
the views and the way views are looked up (based on HTTP method & endpoint).
"""
status_map = {
'list': OK,
'detail': OK,
'create': CREATED,
'update': ACCEPTED,
'delete': NO_CONTENT,
'update_list': ACCEPTED,
'create_detail': CREATED,
'delete_list': NO_CONTENT,
}
http_methods = {
'list': {
'GET': 'list',
'POST': 'create',
'PUT': 'update_list',
'DELETE': 'delete_list',
},
'detail': {
'GET': 'detail',
def build_response(self, data, status=OK):
if status == NO_CONTENT:
# Avoid crashing the client when it tries to parse nonexisting JSON.
content_type = 'text/plain'
else:
content_type = 'application/json'
self.ref_rh.set_header("Content-Type", "{}; charset=UTF-8"
.format(content_type))
self.ref_rh.set_status(status)
self.ref_rh.finish(data)
def build_response(self, data, status=OK):
if status == NO_CONTENT:
# Avoid crashing the client when it tries to parse nonexisting JSON.
content_type = 'text/plain'
else:
content_type = 'application/json'
resp = Response(data, status_code=status, content_type=content_type)
return resp
)
if not self.is_authenticated():
raise Unauthorized()
self.data = self.deserialize(method, endpoint, self.request_body())
view_method = getattr(self, self.http_methods[endpoint][method])
data = view_method(*args, **kwargs)
if is_future(data):
# need to check if the view_method is a generator or not
data = yield data
serialized = self.serialize(method, endpoint, data)
except Exception as err:
raise gen.Return(self.handle_error(err))
status = self.status_map.get(self.http_methods[endpoint][method], OK)
raise gen.Return(self.build_response(serialized, status=status))
def build_response(self, data, status=OK):
resp = super(DepartmentUserResource, self).build_response(data, status)
# Require a short caching expiry for certain request types (if defined).
if settings.API_RESPONSE_CACHE_SECONDS:
if any(k in self.request.GET for k in ['email', 'compact', 'minimal']):
resp['Cache-Control'] = 'max-age={}, public'.format(settings.API_RESPONSE_CACHE_SECONDS)
return resp
def build_response(self, data, status=OK):
if status == NO_CONTENT:
# Avoid crashing the client when it tries to parse nonexisting JSON.
content_type = 'text/plain'
else:
content_type = 'application/json'
resp = HttpResponse(data, content_type=content_type, status=status)
return resp
Additionally, the user may choose to implement:
* ``create_detail`` (requires authentication)
* ``update_list`` (requires authentication)
* ``delete_list`` (requires authentication)
Users may also wish to define a ``fields`` attribute on the class. By
providing a dictionary of output names mapped to a dotted lookup path, you
can control the serialized output.
Users may also choose to override the ``status_map`` and/or ``http_methods``
on the class. These respectively control the HTTP status codes returned by
the views and the way views are looked up (based on HTTP method & endpoint).
"""
status_map = {
'list': OK,
'detail': OK,
'create': CREATED,
'update': ACCEPTED,
'delete': NO_CONTENT,
'update_list': ACCEPTED,
'create_detail': CREATED,
'delete_list': NO_CONTENT,
}
http_methods = {
'list': {
'GET': 'list',
'POST': 'create',
'PUT': 'update_list',
'DELETE': 'delete_list',
},
'detail': {