1111# '\code{"batch"}: one file for each batch, \code{"all"}: one file altogether.
1212# '@param gzip logical; Download the result as a gzip file.
1313# '@param set logical; ???
14+ # '@param include_links logical; ???
1415# '@param range character; ???
1516# '@param complement logical; ???
1617# '@param batch_size integer; Number of accessions to query in a single request.
@@ -34,6 +35,7 @@ ena_query <- function(
3435 destfile_by = " all" ,
3536 gzip = FALSE ,
3637 set = FALSE ,
38+ include_links = FALSE ,
3739 range = NULL ,
3840 complement = FALSE ,
3941 batch_size = 0 ,
@@ -45,6 +47,7 @@ ena_query <- function(
4547 stopifnot(length(download ) == 1 && is.logical(download ))
4648 stopifnot(length(gzip ) == 1 && is.logical(gzip ))
4749 stopifnot(length(set ) == 1 && is.logical(set ))
50+ stopifnot(length(include_links ) == 1 && is.logical(include_links ))
4851 # stopifnot(length(range) == 1 && is.character(range))
4952 stopifnot(length(complement ) == 1 && is.logical(complement ))
5053 stopifnot(length(verbose ) == 1 && is.logical(verbose ))
@@ -77,16 +80,7 @@ ena_query <- function(
7780 } else {
7881 destfile <- paste0(x , " ." , mode , ifelse(gzip == " true" , " .gz" , " " ))
7982 }
80- url <- paste0(
81- " https://www.ebi.ac.uk/ena/browser/api/" , mode , " ?" ,
82- " accessions=" , x ,
83- " &expanded=" , expanded ,
84- " &annotationOnly=" , annotation_only ,
85- " &download=" , download ,
86- " &gzip=" , gzip ,
87- " &set=" , set ,
88- " &complement=" , complement
89- )
83+ url <- paste0(" https://www.ebi.ac.uk/ena/browser/api/" , mode )
9084 if (download == " true" ) {
9185 # TODO: finalise dev code
9286 # variations based on number of accessions, batch_size, download_by, gzip
@@ -100,7 +94,28 @@ ena_query <- function(
10094 mode = mode
10195 )
10296 } else {
103- res <- try_url(" POST" , url )
97+ headers <- c(Accept = " text/plain" , `Content-Type` = " application/json" )
98+ body <- list (
99+ " accessions" = list (x ),
100+ " expanded" = expanded ,
101+ " annotationOnly" = annotation_only ,
102+ " lineLimit" = 0 ,
103+ " download" = download ,
104+ " gzip" = gzip ,
105+ " set" = set ,
106+ " includeLinks" = include_links ,
107+ " range" = range ,
108+ " complement" = complement
109+ )
110+ res <- try(httr :: RETRY(
111+ " POST" ,
112+ url ,
113+ httr :: user_agent(package_url()),
114+ httr :: add_headers(.headers = headers ),
115+ body = body ,
116+ encode = " json" ,
117+ terminate_on = 404 ,
118+ quiet = TRUE ), silent = TRUE )
104119 seqs <- ena_parse(res , mode = mode )
105120 return (seqs )
106121 }
0 commit comments