mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-18 16:36:15 +00:00
[api2] generate url for each block for downloading blocks
This commit is contained in:
@@ -33,6 +33,7 @@ urlpatterns = patterns('',
|
||||
url(r'^repos/(?P<repo_id>[-0-9a-f]{36})/upload-blks-link/$', UploadBlksLinkView.as_view()),
|
||||
url(r'^repos/(?P<repo_id>[-0-9a-f]{36})/update-blks-link/$', UpdateBlksLinkView.as_view()),
|
||||
url(r'^repos/(?P<repo_id>[-0-9-a-f]{36})/file/$', FileView.as_view(), name='FileView'),
|
||||
url(r'^repos/(?P<repo_id>[-0-9a-f]{36})/files/(?P<file_id>[0-9a-f]{40})/blks/(?P<block_id>[0-9a-f]{40})/download-link/$', FileBlockDownloadLinkView.as_view()),
|
||||
url(r'^repos/(?P<repo_id>[-0-9-a-f]{36})/file/detail/$', FileDetailView.as_view()),
|
||||
url(r'^repos/(?P<repo_id>[-0-9-a-f]{36})/file/history/$', FileHistory.as_view()),
|
||||
url(r'^repos/(?P<repo_id>[-0-9-a-f]{36})/file/revision/$', FileRevision.as_view()),
|
||||
|
@@ -1098,6 +1098,25 @@ class RepoOwner(APIView):
|
||||
content_type=json_content_type)
|
||||
|
||||
########## File related
|
||||
class FileBlockDownloadLinkView(APIView):
|
||||
authentication_classes = (TokenAuthentication, )
|
||||
permission_classes = (IsAuthenticated, )
|
||||
throttle_classes = (UserRateThrottle, )
|
||||
|
||||
def get(self, request, repo_id, file_id, block_id, format=None):
|
||||
parent_dir = request.GET.get('p', '/')
|
||||
if check_folder_permission(request, repo_id, parent_dir) is None:
|
||||
return api_error(status.HTTP_403_FORBIDDEN,
|
||||
'You do not have permission to access this repo.')
|
||||
|
||||
if check_quota(repo_id) < 0:
|
||||
return api_error(HTTP_520_OPERATION_FAILED, 'Above quota')
|
||||
|
||||
token = seafile_api.get_fileserver_access_token(
|
||||
repo_id, file_id, 'downloadblks', request.user.username)
|
||||
url = gen_block_get_url(token, block_id)
|
||||
return Response(url)
|
||||
|
||||
class UploadLinkView(APIView):
|
||||
authentication_classes = (TokenAuthentication, )
|
||||
permission_classes = (IsAuthenticated, )
|
||||
@@ -1151,7 +1170,7 @@ class UploadBlksLinkView(APIView):
|
||||
return api_error(HTTP_520_OPERATION_FAILED, 'Above quota')
|
||||
|
||||
token = seafile_api.get_fileserver_access_token(
|
||||
repo_id, 'dummy', 'upload-blks', request.user.username, use_onetime = False)
|
||||
repo_id, 'dummy', 'upload-blks-api', request.user.username, use_onetime = False)
|
||||
url = gen_file_upload_url(token, 'upload-blks-api')
|
||||
return Response(url)
|
||||
|
||||
@@ -1170,7 +1189,7 @@ class UpdateBlksLinkView(APIView):
|
||||
return api_error(HTTP_520_OPERATION_FAILED, 'Above quota')
|
||||
|
||||
token = seafile_api.get_fileserver_access_token(
|
||||
repo_id, 'dummy', 'update-blks', request.user.username)
|
||||
repo_id, 'dummy', 'update-blks-api', request.user.username)
|
||||
url = gen_file_upload_url(token, 'update-blks-api')
|
||||
return Response(url)
|
||||
|
||||
@@ -1315,13 +1334,11 @@ def get_repo_file(request, repo_id, file_id, file_name, op, use_onetime=True):
|
||||
repo = get_repo(repo_id)
|
||||
encrypted = repo.encrypted
|
||||
enc_version = repo.enc_version
|
||||
token = seafile_api.get_fileserver_access_token(
|
||||
repo_id, file_id, op, request.user.username)
|
||||
url = gen_block_get_url(token, None)
|
||||
|
||||
res = {
|
||||
'blklist':blklist,
|
||||
'url':url,
|
||||
'encrypted':encrypted,
|
||||
'file_id': file_id,
|
||||
'blklist': blklist,
|
||||
'encrypted': encrypted,
|
||||
'enc_version': enc_version,
|
||||
}
|
||||
response = HttpResponse(json.dumps(res), status=200,
|
||||
|
Reference in New Issue
Block a user