def filemanager_api_view(request): try: json_request = json.loads(request.body.decode('utf-8')) except: error_dict = { "result": { "success": False, "error": traceback.format_exc() } } json_context = json.dumps(error_dict).encode('utf-8') return HttpResponseBadRequest(json_context, content_type='application/json') # lg.out(4, 'filemanagerapp.filemanager_api_view request: %s' % json_request) mode = json_request['params']['mode'] params = json_request['params'] try: if mode == 'list': result = api.files_list(params['path']) if mode == 'listall': result = api.files_list('') elif mode == 'upload': filename = unicode(params['path']) import os local_path = os.path.abspath( os.path.join(os.path.expanduser('~'), filename)) api.file_create(filename) result = api.file_upload_start(local_path, filename) else: result = api.filemanager(json_request) except: return HttpResponseBadRequest(json_context, content_type='application/json') return HttpResponse(json.dumps(result), content_type='application/json')
def file_list_v1(self, request): return api.files_list( remote_path=_request_arg(request, 'remote_path', None), key_id=_request_arg(request, 'key_id', None), recursive=bool(_request_arg(request, 'recursive', '0') in ['1', 'true', ]), all_customers=bool(_request_arg(request, 'all_customers', '0') in ['1', 'true', ]), )
def _on_key_erased(self, evt): from interface import api ret = api.files_list( remote_path='', key_id=evt.data['key_id'], recursive=True, all_customers=True, ) if ret.get('status') == 'OK': for one_file in ret['result']: api.file_delete(one_file['remote_path'])
def ftp_LIST(self, path=''): # Uh, for now, do this retarded thing. if self.dtpInstance is None or not self.dtpInstance.isConnected: return defer.fail( BadCmdSequenceError('must send PORT or PASV before RETR')) # Various clients send flags like -L or -al etc. We just ignore them. if path.lower() in ['-a', '-l', '-la', '-al']: path = '' try: segments = toSegments(self.workingDirectory, path) except InvalidPath: return defer.fail(FileNotFoundError(path)) pth = '/'.join(segments) ret = api.files_list(pth) if ret['status'] != 'OK': return defer.fail(FileNotFoundError(path)) lst = ret['result'] result = [] for itm in lst: if itm['path'] == 'index': continue # known_size = max(itm[7].size, 0) # if itm['versions']: # known_size = itm['size'] # else: # known_size = 1 known_size = max(itm['local_size'], 0) key_alias, _, _ = itm['key_id'].partition('$') result.append(( os.path.basename(itm['path']), [ # name known_size, # size True if itm['type'] == 'dir' else False, # folder or file ? filepath.Permissions(0o7777), # permissions 0, # hardlinks time.mktime( time.strptime(itm['latest'], '%Y-%m-%d %H:%M:%S')) if itm['latest'] else None, # time itm['customer'], # owner key_alias, # group ], )) d = Deferred() d.addCallback(self._dirListingResponse) d.callback(result) return d
def jsonrpc_files_list(self, remote_path=None): return api.files_list(remote_path=remote_path)
def file_list_all_v1(self, request): return api.files_list(all_customers=True)
def file_list_all_v1(self, request): return api.files_list(all_customers=True, include_uploads=True, include_downloads=True)
def file_list_v1(self, request): return api.files_list(remote_path=_request_arg(request, 'remote_path', None))