import json from bottle import request, response import model def missing_attributes(attrs): for attr in attrs: if attr not in request.json: return attr else: return False def login(): missing = missing_attributes(['username', 'password']) if missing: return bad_request('Missing value for attribute ' + str(missing)) username = request.json['username'] password = request.json['password'] session_id = model.login(username, password) if session_id: return {'session_id': session_id} else: return forbidden('Invalid login data') def register(): missing = missing_attributes(['username', 'password']) if missing: return bad_request('Missing value for attribute ' + str(missing)) username = request.json['username'] password = request.json['password'] if model.user_exists(username): return forbidden('User already exists.') model.register(username, password) return {'message': "successfully registered user"} def not_found(msg=None): response.status = 404 response.content_type = 'application/json' if msg is None: return json.dumps({"error": "404: Page not found"}) else: return json.dumps({"error": "404: Page not found: " + msg}) def forbidden(msg=None): response.status = 403 response.content_type = 'application/json' if msg is None: return json.dumps({"error": "403: Forbidden"}) else: return json.dumps({"error": "403: Forbidden: " + msg}) def bad_request(msg=None): response.status = 400 response.content_type = 'application/json' if msg is None: return json.dumps({"error": "400: Bad request"}) else: return json.dumps({"error": "400: Bad request: " + msg})