def test_filepath_id_to_rel_path(self): obs = filepath_id_to_rel_path(1) exp = 'raw_data/1_s_G1_L001_sequences.fastq.gz' self.assertEqual(obs, exp) obs = filepath_id_to_rel_path(5) exp = 'preprocessed_data/1_seqs.fna' self.assertEqual(obs, exp)
def get(self, filepath_id): fid = int(filepath_id) if not validate_filepath_access_by_user(self.current_user, fid): raise HTTPError( 403, "%s doesn't have access to " "filepath_id: %s" % (self.current_user.email, str(fid))) relpath = filepath_id_to_rel_path(fid) fp_info = get_filepath_information(fid) fname = basename(relpath) if fp_info['filepath_type'] in ('directory', 'html_summary_dir'): # This is a directory, we need to list all the files so NGINX # can download all of them to_download = self._list_dir_files_nginx(fp_info['fullpath']) self._write_nginx_file_list(to_download) fname = '%s.zip' % fname else: self._write_nginx_placeholder_file(relpath) self.set_header('Content-Type', 'application/octet-stream') self.set_header('Content-Transfer-Encoding', 'binary') self.set_header('X-Accel-Redirect', '/protected/' + relpath) self._set_nginx_headers(fname) self.finish()
def get(self, filepath_id): fid = int(filepath_id) if not validate_filepath_access_by_user(self.current_user, fid): raise HTTPError( 403, "%s doesn't have access to " "filepath_id: %s" % (self.current_user.email, str(fid))) relpath = filepath_id_to_rel_path(fid) fp_info = get_filepath_information(fid) fname = basename(relpath) if fp_info['filepath_type'] in ('directory', 'html_summary_dir'): # This is a directory, we need to list all the files so NGINX # can download all of them to_download = self._list_dir_files_nginx(fp_info['fullpath']) self._write_nginx_file_list(to_download) fname = '%s.zip' % fname else: self._write_nginx_placeholder_file(relpath) self.set_header('Content-Type', 'application/octet-stream') self.set_header('Content-Transfer-Encoding', 'binary') self.set_header('X-Accel-Redirect', '/protected/' + relpath) aid = filepath_id_to_object_id(fid) if aid is not None: fname = '%d_%s' % (aid, fname) self._set_nginx_headers(fname) self.finish()
def get(self, filepath_id): filepath_id = int(filepath_id) # Check access to file accessible_filepaths = get_accessible_filepath_ids(self.current_user) if filepath_id not in accessible_filepaths: raise QiitaPetAuthorizationError( self.current_user, 'filepath id %s' % str(filepath_id)) relpath = filepath_id_to_rel_path(filepath_id) fname = basename(relpath) # If we don't have nginx, write a file that indicates this self.write("This installation of Qiita was not equipped with nginx, " "so it is incapable of serving files. The file you " "attempted to download is located at %s" % relpath) self.set_header('Content-Description', 'File Transfer') self.set_header('Content-Type', 'application/octet-stream') self.set_header('Content-Transfer-Encoding', 'binary') self.set_header('Expires', '0') self.set_header('Cache-Control', 'no-cache') self.set_header('X-Accel-Redirect', '/protected/' + relpath) self.set_header('Content-Disposition', 'attachment; filename=%s' % fname) self.finish()
def get(self, filepath_id): fid = int(filepath_id) if not validate_filepath_access_by_user(self.current_user, fid): raise HTTPError( 403, "%s doesn't have access to " "filepath_id: %s" % (self.current_user.email, str(fid))) relpath = filepath_id_to_rel_path(fid) fname = basename(relpath) # If we don't have nginx, write a file that indicates this self.write("This installation of Qiita was not equipped with nginx, " "so it is incapable of serving files. The file you " "attempted to download is located at %s" % relpath) self.set_header('Content-Description', 'File Transfer') self.set_header('Content-Type', 'application/octet-stream') self.set_header('Content-Transfer-Encoding', 'binary') self.set_header('Expires', '0') self.set_header('Cache-Control', 'no-cache') self.set_header('X-Accel-Redirect', '/protected/' + relpath) self.set_header('Content-Disposition', 'attachment; filename=%s' % fname) self.finish()