From faeffcbf891e108c2597a9123f559388245856e4 Mon Sep 17 00:00:00 2001
From: unknown <ldecicco@usgs.gov>
Date: Wed, 31 Dec 2014 11:08:11 -0600
Subject: [PATCH] Added a date checker and allowed for user to use vector of
 numbers for bBox.

---
 R/readWQPdata.R | 41 +++++++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 10 deletions(-)

diff --git a/R/readWQPdata.R b/R/readWQPdata.R
index 5ba8c682..cf5e7b81 100644
--- a/R/readWQPdata.R
+++ b/R/readWQPdata.R
@@ -90,22 +90,43 @@
 #' nameToUse <- "pH"
 #' pHData <- readWQPdata(siteid="USGS-04024315",characteristicName=nameToUse)
 #' pHDataExpanded <- readWQPdata(bBox="-90.10,42.67,-88.64,43.35",characteristicName=nameToUse)
+#' pHDataExpanded2 <- readWQPdata(bBox=c(-90.10,42.67,-88.64,43.35),characteristicName=nameToUse)
+#' startDate <- as.Date("2008-01-01")
+#' nutrientPysical <- readWQPdata(statecode="US:55",siteType="Stream",
+#'                         samplMedia="Water",startDateLo=startDate,
+#'                         characteristicType=c("Nutrient","Physical))
 #' }
 readWQPdata <- function(...){
   
   matchReturn <- list(...)
-  
-  # WQP does a better job of this in the header return:
-#   options <- c("bBox","lat","long","within","countrycode","statecode","countycode","siteType","organization",
-#                "siteid","huc","sampleMedia","characteristicType","characteristicName","pCode","activityId",
-#                "startDateLo","startDateHi","mimeType","Zip","providers")
-#   
-#   if(!all(names(matchReturn) %in% options)) warning(names(matchReturn)[!(names(matchReturn) %in% options)]," is not a valid query parameter to the Water Quality Portal")
-  
-  values <- sapply(matchReturn, function(x) URLencode(as.character(paste(eval(x),collapse="",sep=""))))
+
+  values <- sapply(matchReturn, function(x) URLencode(as.character(paste(eval(x),collapse=";",sep=""))))
   
   values <- gsub(",","%2C",values)
   values <- gsub("%20","+",values)
+  values <- gsub(":","%3A",values)
+
+  if("bBox" %in% names(values)){
+    values['bBox'] <- gsub(pattern = ";", replacement = ",", x = values['bBox'])
+  }
+
+  dateNames <- c("startDateLo","startDateHi","startDate","endDate")
+
+  if(any(names(values) %in% dateNames)){
+    index <- which(names(values) %in% dateNames)
+    # If a valid R date was put in, the format needs to be changed to mm-dd-yyyy for the WQP:
+    if(all(is.Date(as.Date(values[index])))){  
+      dates <- as.Date(values[index])
+      dates <- format(as.Date(dates), format="%m-%d-%Y")
+      values[index] <- dates
+    } else if (!all(is.Date(as.Date(values[index],format="%m-%d-%Y")))){
+      warning("Please check the date format for the arguments: ", paste(names(values)[index], collapse=", "))
+    }
+    
+    names(values)[names(values) == 'beginDate'] <- 'startDateLo'
+    names(values)[names(values) == 'endDate'] <- 'startDateHi'
+    
+  }
   
   urlCall <- paste(paste(names(values),values,sep="="),collapse="&")
   
@@ -114,7 +135,7 @@ readWQPdata <- function(...){
   urlCall <- paste0(baseURL,
                    urlCall,
                    "&mimeType=tsv")
-
+  
   retval <- importWQP(urlCall,FALSE)
   
   if(!all(is.na(retval))){
-- 
GitLab