diff options
| author | Maksim A. Boyko <maksim.a.boyko@gmail.com> | 2012-07-02 15:25:01 -0400 |
|---|---|---|
| committer | Maksim A. Boyko <maksim.a.boyko@gmail.com> | 2012-07-02 15:25:01 -0400 |
| commit | c2ef693b393396ebf210d17ba70e9bc81f4ac4e2 (patch) | |
| tree | 07e85095b503b0b80413dadb85a85de831d30795 /backend/views.py | |
| parent | d69176016b18212b03bcd18b4b42629e0816de0f (diff) | |
Backend:
Update check_form_field
Add api_ok_headers
Implement api_auth_available
Diffstat (limited to 'backend/views.py')
| -rw-r--r-- | backend/views.py | 147 |
1 files changed, 140 insertions, 7 deletions
diff --git a/backend/views.py b/backend/views.py index 110aa7b..73dcd17 100644 --- a/backend/views.py +++ b/backend/views.py @@ -11,14 +11,55 @@ from django.conf import settings from datetime import datetime -API_HEADER = '#@scanjam 0.2\n' +from backend.models import SJUserProfile -def add_cors_headers(response): +API_HEADER = '#@scanjam 0.3b\n' + +# +# Common funtions +# + +def set_cors_headers(response): """ Setup additional headers for response """ response['Access-Control-Allow-Origin'] = '*' response['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' response['Access-Control-Allow-Headers'] = 'x-requested-with' response['Access-Control-Max-Age'] = '3628800' + response['Content-type'] = 'text/plain; charset=UTF-8' + +def api_error(error, response=None): + """ Add API error name to response """ + if not response: + response = HttpResponse() + response.write(API_HEADER) + response.write('0\t%s\n' % error) + return response + +def api_error_headers(error, response=None): + """ Add API error name with setup headers to response """ + if not response: + response = HttpResponse() + set_cors_headers(response) + return api_error(error, response) + +def api_ok_headers(response=None): + """ Add API OK with setup headers to response """ + if not response: + response = HttpResponse() + set_cors_headers(response) + response.write(API_HEADER) + response.write('OK\n') + return response + +def check_form_fields(request, form_fields): + """ Check form fields presence """ + for field, value in request.POST.iteritems(): + print field, '= "%s"' % value + for field in form_fields: + if field not in request.POST: + return api_error_headers('incomplete form') + if not request.POST[field]: + return api_error_headers('no %s' % field) # # AUTH API @@ -28,6 +69,9 @@ def add_cors_headers(response): def api_auth_login(request): """""" form_fields = ['username', 'password'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST @@ -39,19 +83,51 @@ def api_auth_logout(request): def api_auth_sneakin(request): """""" form_fields = ['userid', 'username'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_auth_register(request): - """""" + """ Register new user """ form_fields = ['username', 'password'] - return HttpResponse('Not implemented yet!\n') + response = check_form_fields(request, form_fields) + if response: + return response + if auth.models.User.objects.filter(username=request.POST['username']): + return api_error_headers('user exists') + user = auth.models.User.objects.create_user(username=request.POST['username'], + email='default@noemail.com', + password=request.POST['password']) + user.is_active = True + try: + user.save() + except: + return api_error_headers('problem storing user') + user_profile = SJUserProfile(user=user, + username=request.POST['username'], + password=request.POST['password'], + joindate=user.date_joined, + seendate=user.date_joined) + try: + user_profile.save() + except: + return api_error_headers('problem storing user profile') + response = api_ok_headers() + response.write('%d\t%s\t%d' % (user.id, user.username, user_profile.access)) + return response @require_POST def api_auth_available(request): - """""" + """ Check if user exists""" form_fields = ['username'] - return HttpResponse('Not implemented yet!\n') + response = check_form_fields(request, form_fields) + if response: + return response + if auth.models.User.objects.filter(username=request.POST['username']): + return api_error_headers('user exists') + return api_ok_headers() @require_POST def api_auth_checkin(request): @@ -62,6 +138,9 @@ def api_auth_checkin(request): def api_auth_password(request): """""" form_fields = ['username', 'password'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # @@ -72,24 +151,36 @@ def api_auth_password(request): def api_user_videos(request): """""" form_fields = ['user', 'start'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_likes(request): """""" form_fields = ['user', 'start'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_top(request): """""" form_fields = ['user'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_settings(request): """""" form_fields = ['user', 'bio', 'settings'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # @@ -100,6 +191,9 @@ def api_user_settings(request): def api_room_watch(request): """""" form_fields = ['room', 'last'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST @@ -111,42 +205,63 @@ def api_room_list(request): def api_room_view(request): """""" form_fields = ['room', 'last'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_join(request): """""" form_fields = ['room', 'enqueue'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_read(request): """""" form_fields = ['room', 'enqueue'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_poll(request): """""" form_fields = ['room', 'last', 'cam'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_settings(request): """""" form_fields = ['room', 'settings'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_say(request): """""" form_fields = ['room', 'msg'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_video(request): """""" form_fields = ['room', 'msg'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # @@ -157,40 +272,58 @@ def api_room_video(request): def api_video_date(request): """""" form_fields = ['day', 'month', 'year'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_view(request): """""" form_fields = ['video'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_like(request): """""" form_fields = ['video'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_unlike(request): """""" form_fields = ['video'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_remove(request): """""" form_fields = ['video', 'room'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_search(request): """""" form_fields = ['q', 'start', 'limit'] + response = check_form_fields(request, form_fields) + if response: + return response return HttpResponse('Not implemented yet!\n') # -# +# Common views # def stats(request): |
