@@ -25,6 +25,8 @@ import {
2525import { UcscTrack } from "../ucsc-tracks-api/entities" ;
2626
2727const DOCKSTORE_API_URL = "https://dockstore.org/api/ga4gh/trs/v2/tools" ;
28+ const FTP_HOST = "ftp.sra.ebi.ac.uk" ;
29+ const ASCP_HOST = "fasp.sra.ebi.ac.uk" ;
2830
2931const galaxyInstanceUrl = process . env . NEXT_PUBLIC_GALAXY_INSTANCE_URL ;
3032
@@ -444,7 +446,7 @@ function getRunUrlsInfo(
444446 if ( splitUrls . length === 1 ) {
445447 // Single read case
446448 return {
447- forward : { md5 : splitMd5Hashes [ 0 ] , url : `ftp:// ${ splitUrls [ 0 ] } ` } ,
449+ forward : { md5 : splitMd5Hashes [ 0 ] , url : ftpToAscp ( splitUrls [ 0 ] ) } ,
448450 reverse : null ,
449451 } ;
450452 }
@@ -457,7 +459,7 @@ function getRunUrlsInfo(
457459 const [ , , readIndex ] = urlMatch ;
458460 const fileInfo : EnaFileInfo = {
459461 md5 : splitMd5Hashes [ i ] ,
460- url : `ftp:// ${ url } ` ,
462+ url : ftpToAscp ( url ) ,
461463 } ;
462464 if ( readIndex === "1" ) forward = fileInfo ;
463465 else reverse = fileInfo ;
@@ -466,6 +468,11 @@ function getRunUrlsInfo(
466468 return { forward, reverse } ;
467469}
468470
471+ function ftpToAscp ( ftpUrl : string ) : string {
472+ // should be more reliable than FTP download
473+ return `ascp://${ ftpUrl . replace ( FTP_HOST , ASCP_HOST ) } ` ;
474+ }
475+
469476function buildUcscTracksRequestValues (
470477 tracks : UcscTrack [ ] | null
471478) : GalaxyUrlData [ ] {
0 commit comments