From 0089686ab91bf2113abff1e8c52d12a248ee6c5a Mon Sep 17 00:00:00 2001
From: unknown <ldecicco@usgs.gov>
Date: Wed, 10 Sep 2014 16:57:33 -0500
Subject: [PATCH] Added better error handling.

---
 R/getWQPSites.R | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/R/getWQPSites.R b/R/getWQPSites.R
index 2cf54c6d..bbaf5b3a 100644
--- a/R/getWQPSites.R
+++ b/R/getWQPSites.R
@@ -30,6 +30,36 @@ getWQPSites <- function(...){
                urlCall,
                "&mimeType=tsv",sep = "")
   
-  retval <- suppressWarnings(read.delim(urlCall, header = TRUE, quote="\"", dec=".", sep='\t', colClasses=c('character'), fill = TRUE))
-  return(retval)
+  retval = 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)
+  })   
+  
+  numToBeReturned <- as.numeric(h$value()["Total-Site-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("No data to retrieve")
+    return(NA)
+  }
+
 }
-- 
GitLab