@@ -35,22 +35,27 @@ whatWQPsamples <- function(...,
3535 } else {
3636 baseURL <- httr2 :: request(pkg.env [[" ActivityWQX3" ]])
3737 }
38-
38+ POST = FALSE
3939 if (! legacy ){
4040 baseURL <- httr2 :: req_url_query(baseURL , !!! values ,
4141 .multi = " explode" )
4242 } else {
4343 if (" siteid" %in% names(values )){
4444 if (length(values [[" siteid" ]]) > 1 ){
4545 sites <- values [[" siteid" ]]
46- baseURL <- httr2 :: req_url_query(baseURL ,
47- siteid = sites ,
48- .multi = function (x ) paste0(x , collapse = " ;" ))
46+ POST = nchar(paste0(sites , collapse = " " )) > 2048
47+
48+ baseURL <- get_or_post(baseURL , POST = POST ,
49+ siteid = sites ,
50+ .multi = function (x ) paste0(x , collapse = " ;" ))
51+
4952 values <- values [names(values ) != " siteid" ]
5053 }
5154 }
52- baseURL <- httr2 :: req_url_query(baseURL , !!! values ,
53- .multi = " explode" )
55+ baseURL <- get_or_post(baseURL ,
56+ POST = POST ,
57+ !!! values ,
58+ .multi = " explode" )
5459 }
5560
5661 retval <- importWQP(baseURL ,
@@ -97,21 +102,27 @@ whatWQPmetrics <- function(...,
97102 if (" service" %in% names(values )) {
98103 values <- values [! (names(values ) %in% " service" )]
99104 }
100-
105+ POST = FALSE
101106 baseURL <- httr2 :: request(pkg.env [[" ActivityMetric" ]])
102107
103108 if (" siteid" %in% names(values )){
104109 if (length(values [[" siteid" ]]) > 1 ){
105110 sites <- values [[" siteid" ]]
106- baseURL <- httr2 :: req_url_query(baseURL ,
107- siteid = sites ,
108- .multi = function (x ) paste0(x , collapse = " ;" ))
111+ POST = nchar(paste0(sites , collapse = " " )) > 2048
112+
113+ baseURL <- get_or_post(baseURL , POST = POST ,
114+ siteid = sites ,
115+ .multi = function (x ) paste0(x , collapse = " ;" ))
116+
109117 values <- values [names(values ) != " siteid" ]
110118 }
111119 }
112- baseURL <- httr2 :: req_url_query(baseURL , !!! values ,
113- .multi = " explode" )
114120
121+ baseURL <- get_or_post(baseURL ,
122+ POST = POST ,
123+ !!! values ,
124+ .multi = " explode" )
125+
115126 withCallingHandlers(
116127 {
117128 retval <- importWQP(baseURL ,
@@ -124,6 +135,7 @@ whatWQPmetrics <- function(...,
124135 }
125136 }
126137 )
138+
127139 if (is.null(retval )){
128140 return (NULL )
129141 } else {
@@ -200,40 +212,31 @@ whatWQPdata <- function(...,
200212 values <- values [! (names(values ) %in% c(" tz" , " service" , " mimeType" ))]
201213 }
202214 POST = FALSE
215+
203216 baseURL <- httr2 :: request(pkg.env [[" Station" ]])
204217
205218 if (" siteid" %in% names(values )){
206219 if (length(values [[" siteid" ]]) > 1 ){
207220 sites <- values [[" siteid" ]]
208- if (nchar(paste0(sites , collapse = " " )) > 2048 ){
209- POST = TRUE
210- baseURL <- httr2 :: req_body_form(baseURL ,
211- siteid = sites ,
212- .multi = function (x ) paste0(x , collapse = " ;" ))
213- } else {
214- baseURL <- httr2 :: req_url_query(baseURL ,
215- siteid = sites ,
216- .multi = function (x ) paste0(x , collapse = " ;" ))
217- }
221+
222+ POST = nchar(paste0(sites , collapse = " " )) > 2048
223+
224+ baseURL <- get_or_post(baseURL , POST = POST ,
225+ siteid = sites ,
226+ .multi = function (x ) paste0(x , collapse = " ;" ))
227+
218228 values <- values [names(values ) != " siteid" ]
219229 }
220230 }
231+
232+ baseURL <- get_or_post(req = baseURL ,
233+ POST = POST ,
234+ !!! values ,
235+ .multi = " explode" )
221236
222-
223-
224- if (POST ){
225- baseURL <- httr2 :: req_body_form(baseURL ,
226- !!! values ,
227- .multi = " explode" )
228- baseURL <- httr2 :: req_body_form(baseURL ,
229- mimeType = " geojson" )
230- } else {
231- baseURL <- httr2 :: req_url_query(baseURL ,
232- !!! values ,
233- .multi = " explode" )
234- baseURL <- httr2 :: req_url_query(baseURL ,
235- mimeType = " geojson" )
236- }
237+ baseURL <- get_or_post(baseURL ,
238+ POST = POST ,
239+ mimeType = " geojson" )
237240
238241 # Not sure if there's a geojson option with WQX3
239242 wqp_message()
@@ -313,3 +316,15 @@ whatWQPdata <- function(...,
313316 attr(y , " url" ) <- baseURL
314317 return (y )
315318}
319+
320+ get_or_post <- function (req , POST = FALSE , ... ){
321+
322+ if (POST ){
323+ req <- httr2 :: req_body_form(req , ... )
324+
325+ } else {
326+ req <- httr2 :: req_url_query(req , ... )
327+ }
328+ return (req )
329+ }
330+
0 commit comments