From 55b866079c211381f9a1fd89a45f8a2500860466 Mon Sep 17 00:00:00 2001 From: unknown <ldecicco@usgs.gov> Date: Thu, 11 Sep 2014 10:25:17 -0500 Subject: [PATCH] Improved error handling. --- R/getGeneralWQPData.R | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/R/getGeneralWQPData.R b/R/getGeneralWQPData.R index f163f623..3e7eb95f 100644 --- a/R/getGeneralWQPData.R +++ b/R/getGeneralWQPData.R @@ -31,6 +31,44 @@ getGeneralWQPData <- function(...){ urlCall, "&mimeType=tsv",sep = "") - suppressWarnings(retval <- read.delim(urlCall, header = TRUE, quote="\"", dec=".", sep='\t', colClasses=c('character'), fill = TRUE)) - return(retval) + doc = tryCatch({ + h <- basicHeaderGatherer() + doc <- getURL(urlCall, headerfunction = h$update) + + }, warning = function(w) { + message(paste("URL caused a warning:", urlCall)) + message(w) + }, error = function(e) { + message(paste("URL does not seem to exist:", urlCall)) + message(e) + return(NA) + }) + + if(h$value()["Content-Type"] == "text/tab-separated-values;charset=UTF-8"){ + + numToBeReturned <- as.numeric(h$value()["Total-Result-Count"]) + + if (!is.na(numToBeReturned) | numToBeReturned != 0){ + retval <- read.delim(textConnection(doc), header = TRUE, quote="\"", + dec=".", sep='\t', + colClasses=c('character'), + fill = TRUE) + + actualNumReturned <- nrow(retval) + + if(actualNumReturned != numToBeReturned) warning(numToBeReturned, " sample results were expected, ", actualNumReturned, " were returned") + + return(retval) + } else { + warning(paste("No data to retrieve from",urlCall)) + return(NA) + } + + } else { + message(paste("URL caused an error:", urlCall)) + message("Content-Type=",h$value()["Content-Type"]) + return(NA) + } + + } \ No newline at end of file -- GitLab