diff --git a/api2/urls.py b/api2/urls.py index 144bca7db3..9e5f11e440 100644 --- a/api2/urls.py +++ b/api2/urls.py @@ -14,6 +14,7 @@ urlpatterns = patterns('', url(r'^repos/(?P[-0-9a-f]{36})/$', Repo.as_view()), url(r'^repos/(?P[-0-9a-f]{36})/download-info/$', DownloadRepo.as_view()), url(r'^repos/(?P[-0-9a-f]{36})/upload-link/$', UploadLinkView.as_view()), + url(r'^repos/(?P[-0-9a-f]{36})/update-link/$', UpdateLinkView.as_view()), url(r'^repos/(?P[-0-9-a-f]{36})/file/$', FileView.as_view(), name='FileView'), url(r'^repos/(?P[-0-9-a-f]{36})/file/shared-link/$', FileSharedLinkView.as_view()), url(r'^repos/(?P[-0-9-a-f]{36})/dir/$', DirView.as_view(), name='DirView'), diff --git a/api2/views.py b/api2/views.py index 15b7674eda..79f7c00716 100644 --- a/api2/views.py +++ b/api2/views.py @@ -333,6 +333,26 @@ class DownloadRepo(APIView): return Response(info_json) class UploadLinkView(APIView): + authentication_classes = (TokenAuthentication, ) + permission_classes = (IsAuthenticated, ) + throttle_classes = (UserRateThrottle, ) + + def get(self, request, repo_id, format=None): + if check_permission(repo_id, request.user.username) != 'rw': + return api_error(status.HTTP_403_FORBIDDEN, "Can not access repo") + + if check_quota(repo_id) < 0: + return api_error(HTTP_520_OPERATION_FAILED, 'Above quota') + + token = seafserv_rpc.web_get_access_token(repo_id, + 'dummy', + 'upload', + request.user.username) + url = gen_file_upload_url(token, 'upload-api') + + return Response(url) + +class UpdateLinkView(APIView): authentication_classes = (TokenAuthentication, ) permission_classes = (IsAuthenticated, ) throttle_classes = (UserRateThrottle, ) @@ -344,19 +364,11 @@ class UploadLinkView(APIView): if check_quota(repo_id) < 0: return api_error(HTTP_520_OPERATION_FAILED, 'Above quota') - update = request.GET.get('update', None) - if update == 'true': - token = seafserv_rpc.web_get_access_token(repo_id, - 'dummy', - 'update', - request.user.username) - url = gen_file_upload_url(token, 'update-api') - else: - token = seafserv_rpc.web_get_access_token(repo_id, - 'dummy', - 'upload', - request.user.username) - url = gen_file_upload_url(token, 'upload-api') + token = seafserv_rpc.web_get_access_token(repo_id, + 'dummy', + 'update', + request.user.username) + url = gen_file_upload_url(token, 'update-api') return Response(url)