From 865b21df9b939fb8f5913e298cb169534365dfaa Mon Sep 17 00:00:00 2001
From: unknown <ldecicco@usgs.gov>
Date: Mon, 15 Dec 2014 16:33:51 -0600
Subject: [PATCH] Improved error handling.

---
 R/whatNWISsites.R | 38 +++++++++++++++++---------------------
 1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/R/whatNWISsites.R b/R/whatNWISsites.R
index 6870bc15..f331a806 100644
--- a/R/whatNWISsites.R
+++ b/R/whatNWISsites.R
@@ -41,27 +41,22 @@ whatNWISsites <- function(...){
   urlCall <- paste(baseURL,
                    urlCall,sep = "")
   
-  if(url.exists(urlCall)){
+  h <- basicHeaderGatherer()
+  
+  possibleError <- tryCatch({
     h <- basicHeaderGatherer()
-    doc = tryCatch({
-      returnedDoc <- getURI(urlCall, headerfunction = h$update)
-      if(h$value()["Content-Type"] == "text/xml;charset=UTF-8"){
-        xmlTreeParse(returnedDoc, getDTD = FALSE, useInternalNodes = TRUE)
-      } else {
-        message(paste("URL caused an error:", urlCall))
-        message("Content-Type=",h$value()["Content-Type"])
-        return(NA)
-      }   
-      
-    }, 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)
-    }) 
-    
+    returnedDoc <- getURI(urlCall, headerfunction = h$update)      
+  }, warning = function(w) {
+    warning(w, "with url:", urlCall)
+  }, error = function(e) {
+    stop(e, "with url:", urlCall)
+  }) 
+  
+  headerInfo <- h$value()
+
+  if (headerInfo['status'] == "200"){
+  
+    doc <- xmlTreeParse(returnedDoc, getDTD = FALSE, useInternalNodes = TRUE)
     doc <- xmlRoot(doc)
     numChunks <- xmlSize(doc)
     for(i in 1:numChunks){
@@ -91,6 +86,7 @@ whatNWISsites <- function(...){
     
     return(retval)
   } else {
-    message("URL caused an error:", urlCall)
+    stop("Status:", headerInfo['status'], ": ", headerInfo['statusMessage'], "\nFor: ", urlCall)
   }
+  
 }
-- 
GitLab