|
| 1 | +from flask import Response |
| 2 | +import json |
| 3 | + |
| 4 | +def response(status_code, message=None, data=None): |
| 5 | + """Response data helper |
| 6 | +
|
| 7 | + Arguments: |
| 8 | + status_code {int} -- http status code |
| 9 | +
|
| 10 | + Keyword Arguments: |
| 11 | + message {string} -- response message (default: {None}) |
| 12 | + data {dict} -- data to be appended to response (default: {None}) |
| 13 | +
|
| 14 | + Returns: |
| 15 | + dict -- response data |
| 16 | + """ |
| 17 | + success_status = { |
| 18 | + 200: 'Operation succeeded', |
| 19 | + 201: 'Created', |
| 20 | + 202: 'Accepted', |
| 21 | + 204: 'Reply does not contain additional content', |
| 22 | + 304: 'Not modified' |
| 23 | + } |
| 24 | + |
| 25 | + failure_status = { |
| 26 | + 400: 'Internal error occurred - unexpected error caused by request data', |
| 27 | + 401: 'Unauthorized operation', |
| 28 | + 403: 'Forbidden operation', |
| 29 | + 404: 'Specified object not found', |
| 30 | + 405: 'Method Not Allowed, for example, resource doesn\'t support DELETE method', |
| 31 | + 406: 'Method Not Acceptable', |
| 32 | + 409: 'Conflict', |
| 33 | + 423: 'Locked', |
| 34 | + 426: 'Upgrade Required', |
| 35 | + 500: 'Internal Server Error - unexpected server-side error', |
| 36 | + 501: 'Not Implemented - functionality is not implemented on the server side', |
| 37 | + 503: 'Service is unavailable' |
| 38 | + } |
| 39 | + |
| 40 | + status = {} |
| 41 | + status['code'] = status_code |
| 42 | + |
| 43 | + if status_code in success_status: |
| 44 | + status['count'] = len(data) if data else 0 |
| 45 | + status['data'] = data if data else None |
| 46 | + status['status'] = 'success' |
| 47 | + status['message'] = message if message else success_status[status_code] |
| 48 | + elif status_code in failure_status: |
| 49 | + status['status'] = 'error' |
| 50 | + status['message'] = message if message else failure_status[status_code] |
| 51 | + else: |
| 52 | + status['status'] = 'error' |
| 53 | + status['message'] = message if message else failure_status[400] |
| 54 | + |
| 55 | + response = Response( |
| 56 | + response=json.dumps(status), |
| 57 | + status=status_code, mimetype='application/json') |
| 58 | + |
| 59 | + return response |
0 commit comments