+
+
+@require_POST
+def extract(request):
+ check_auth(request)
+
+ # TODO data validation
+ host = request.POST.get('host')
+ archive = request.POST.get('archive')
+ dst = request.POST.get('dst')
+ if not host or not archive or not dst:
+ raise SuspiciousOperation("No path or host or files or archive given!")
+
+ server = 'gsiftp://' + host
+
+ try:
+ # consume generator with command output
+ list(FTPOperation(request.session['proxy']).extract(server, archive, dst))
+ except FTPException as e:
+ return JsonResponse({'msg': e.message}, status=400)
+ else:
+ return JsonResponse({'success': True})