Skip to content

Commit

Permalink
Merge pull request #640 from ropensci/occ_search
Browse files Browse the repository at this point in the history
multivalue support for more args
  • Loading branch information
jhnwllr authored Mar 9, 2023
2 parents 6fdbbf5 + 6d81d84 commit 5c30aca
Show file tree
Hide file tree
Showing 84 changed files with 118 additions and 221,200 deletions.
24 changes: 12 additions & 12 deletions R/occ_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -132,30 +132,30 @@ occ_data <- function(taxonKey=NULL,
args <- rgbif_compact(
list(
hasCoordinate = hasCoordinate,
lastInterpreted = lastInterpreted,
decimalLatitude = decimalLatitude,
decimalLongitude = decimalLongitude,
hasGeospatialIssue = hasGeospatialIssue,
occurrenceStatus = occurrenceStatus,
q = search,
repatriated = repatriated,
elevation = elevation,
depth = depth,
limit = check_limit(as.integer(limit)),
eventDate = eventDate,
month = month,
year = year,
coordinateUncertaintyInMeters = coordinateUncertaintyInMeters,
organismQuantity = organismQuantity,
organismQuantityType = organismQuantityType,
relativeOrganismQuantity = relativeOrganismQuantity,
isInCluster = isInCluster,
offset = check_limit(as.integer(start))
)
)
args <- c(
args,
parse_issues(issue),
convmany(lastInterpreted),
convmany(decimalLatitude),
convmany(decimalLongitude),
convmany(elevation),
convmany(depth),
convmany(eventDate),
convmany(month),
convmany(year),
convmany(coordinateUncertaintyInMeters),
convmany(organismQuantity),
convmany(organismQuantityType),
convmany(relativeOrganismQuantity),
convmany(taxonKey),
convmany(scientificName),
convmany(country),
Expand Down
28 changes: 0 additions & 28 deletions R/occ_facet.R
Original file line number Diff line number Diff line change
Expand Up @@ -55,31 +55,3 @@ occ_facet <- function(facet, facetMincount = NULL, curlopts = list(), ...) {
}), vapply(tt$facets, function(x) to_camel(x$field), ""))
}

collargs <- function(x){
outlist <- list()
for (i in seq_along(x)) {
outlist[[i]] <- makemultiargs(x[[i]])
}
as.list(unlist(rgbif_compact(outlist)))
}

makemultiargs <- function(x){
value <- get(x, envir = parent.frame(n = 2))
if ( length(value) == 0 ) {
NULL
} else {
if ( any(sapply(value, is.na)) ) {
NULL
} else {
if ( !is.character(value) ) {
value <- as.character(value)
}
names(value) <- rep(x, length(value))
value
}
}
}

to_camel <- function(x) {
gsub("(_)([a-z])", "\\U\\2", tolower(x), perl = TRUE)
}
25 changes: 12 additions & 13 deletions R/occ_search.r
Original file line number Diff line number Diff line change
Expand Up @@ -126,23 +126,11 @@ occ_search <- function(taxonKey=NULL,
args <- rgbif_compact(
list(
hasCoordinate = hasCoordinate,
lastInterpreted = lastInterpreted,
decimalLatitude = decimalLatitude,
decimalLongitude = decimalLongitude,
hasGeospatialIssue = hasGeospatialIssue,
occurrenceStatus = occurrenceStatus,
q = search,
repatriated = repatriated,
elevation = elevation,
depth = depth,
limit = check_limit(as.integer(limit)),
eventDate = eventDate,
month = month,
year = year,
coordinateUncertaintyInMeters = coordinateUncertaintyInMeters,
organismQuantity = organismQuantity,
organismQuantityType = organismQuantityType,
relativeOrganismQuantity = relativeOrganismQuantity,
isInCluster = isInCluster,
offset = check_limit(as.integer(start))
)
Expand All @@ -153,6 +141,18 @@ occ_search <- function(taxonKey=NULL,
parse_issues(issue),
collargs("facet"),
yank_args(...),
convmany(lastInterpreted),
convmany(decimalLatitude),
convmany(decimalLongitude),
convmany(elevation),
convmany(depth),
convmany(eventDate),
convmany(month),
convmany(year),
convmany(coordinateUncertaintyInMeters),
convmany(organismQuantity),
convmany(organismQuantityType),
convmany(relativeOrganismQuantity),
convmany(taxonKey),
convmany(scientificName),
convmany(country),
Expand Down Expand Up @@ -197,7 +197,6 @@ occ_search <- function(taxonKey=NULL,
convmany(lifeStage),
convmany(distanceFromCentroidInMeters)
)

argscoll <<- args

if (limit >= 300) {
Expand Down
30 changes: 30 additions & 0 deletions R/zzz.r
Original file line number Diff line number Diff line change
Expand Up @@ -763,3 +763,33 @@ prep_output <- function(x) {
)
}

collargs <- function(x){
outlist <- list()
for (i in seq_along(x)) {
outlist[[i]] <- makemultiargs(x[[i]])
}
as.list(unlist(rgbif_compact(outlist)))
}

makemultiargs <- function(x){
value <- get(x, envir = parent.frame(n = 2))
if ( length(value) == 0 ) {
NULL
} else {
if ( any(sapply(value, is.na)) ) {
NULL
} else {
if ( !is.character(value) ) {
value <- as.character(value)
}
names(value) <- rep(x, length(value))
value
}
}
}

to_camel <- function(x) {
gsub("(_)([a-z])", "\\U\\2", tolower(x), perl = TRUE)
}


172 changes: 14 additions & 158 deletions tests/fixtures/occ_count.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ http_interactions:
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjI4MDMzNTUx
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjI4NDgyMDU2
NiwicmVzdWx0cyI6W10sImZhY2V0cyI6W119
recorded_at: 2023-03-06 15:33:29 GMT
recorded_at: 2023-03-09 14:40:20 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&offset=0
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&offset=0&facetLimit=&year=2000%2C2011&taxonKey=212
body:
encoding: ''
string: ''
Expand All @@ -43,85 +43,13 @@ http_interactions:
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjI4MDMzNTUx
NiwicmVzdWx0cyI6W10sImZhY2V0cyI6W119
recorded_at: 2023-03-06 15:33:29 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&year=2000%2C2011&offset=0&facetLimit=&taxonKey=212
body:
encoding: ''
string: ''
headers:
Accept-Encoding: gzip, deflate
Accept: application/json, text/xml, application/xml, */*
response:
status:
status_code: '200'
message: OK
explanation: Request fulfilled, document follows
headers:
status: HTTP/1.1 200 OK
content-type: application/json
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjIyNzg4MzUw
LCJyZXN1bHRzIjpbXSwiZmFjZXRzIjpbXX0=
recorded_at: 2023-03-06 15:33:29 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&year=2000%2C2011&offset=0&taxonKey=212
body:
encoding: ''
string: ''
headers:
Accept-Encoding: gzip, deflate
Accept: application/json, text/xml, application/xml, */*
response:
status:
status_code: '200'
message: OK
explanation: Request fulfilled, document follows
headers:
status: HTTP/1.1 200 OK
content-type: application/json
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjIyNzg4MzUw
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjIyODMzOTM4
LCJyZXN1bHRzIjpbXSwiZmFjZXRzIjpbXX0=
recorded_at: 2023-03-06 15:33:29 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&year=2012&offset=0&facetLimit=
body:
encoding: ''
string: ''
headers:
Accept-Encoding: gzip, deflate
Accept: application/json, text/xml, application/xml, */*
response:
status:
status_code: '200'
message: OK
explanation: Request fulfilled, document follows
headers:
status: HTTP/1.1 200 OK
content-type: application/json
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6Njc3NjkyMTUs
InJlc3VsdHMiOltdLCJmYWNldHMiOltdfQ==
recorded_at: 2023-03-06 15:33:29 GMT
recorded_at: 2023-03-09 14:40:20 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&year=2012&offset=0
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&offset=0&facetLimit=&year=2012
body:
encoding: ''
string: ''
Expand All @@ -139,9 +67,9 @@ http_interactions:
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6Njc3NjkyMTUs
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6Njc4ODY4MjMs
InJlc3VsdHMiOltdLCJmYWNldHMiOltdfQ==
recorded_at: 2023-03-06 15:33:29 GMT
recorded_at: 2023-03-09 14:40:20 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
Expand All @@ -163,37 +91,13 @@ http_interactions:
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6Mjg5OTMwNTUs
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjkwMTc3MTcs
InJlc3VsdHMiOltdLCJmYWNldHMiOltdfQ==
recorded_at: 2023-03-06 15:33:29 GMT
recorded_at: 2023-03-09 14:40:20 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=ABSENT&limit=0&offset=0
body:
encoding: ''
string: ''
headers:
Accept-Encoding: gzip, deflate
Accept: application/json, text/xml, application/xml, */*
response:
status:
status_code: '200'
message: OK
explanation: Request fulfilled, document follows
headers:
status: HTTP/1.1 200 OK
content-type: application/json
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6Mjg5OTMwNTUs
InJlc3VsdHMiOltdLCJmYWNldHMiOltdfQ==
recorded_at: 2023-03-06 15:33:29 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&organismQuantity=5&offset=0&facetLimit=&basisOfRecord=MATERIAL_SAMPLE
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&offset=0&facetLimit=&organismQuantity=5&basisOfRecord=MATERIAL_SAMPLE
body:
encoding: ''
string: ''
Expand All @@ -213,31 +117,7 @@ http_interactions:
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6OTQxNTM5LCJy
ZXN1bHRzIjpbXSwiZmFjZXRzIjpbXX0=
recorded_at: 2023-03-06 15:33:29 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&organismQuantity=5&offset=0&basisOfRecord=MATERIAL_SAMPLE
body:
encoding: ''
string: ''
headers:
Accept-Encoding: gzip, deflate
Accept: application/json, text/xml, application/xml, */*
response:
status:
status_code: '200'
message: OK
explanation: Request fulfilled, document follows
headers:
status: HTTP/1.1 200 OK
content-type: application/json
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6OTQxNTM5LCJy
ZXN1bHRzIjpbXSwiZmFjZXRzIjpbXX0=
recorded_at: 2023-03-06 15:33:29 GMT
recorded_at: 2023-03-09 14:40:20 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
Expand All @@ -259,31 +139,7 @@ http_interactions:
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjY1ODQyLCJy
ZXN1bHRzIjpbXSwiZmFjZXRzIjpbXX0=
recorded_at: 2023-03-06 15:33:29 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
- request:
method: get
uri: https://api.gbif.org/v1/occurrence/search?occurrenceStatus=PRESENT&limit=0&offset=0&verbatimScientificName=Calopteryx%20splendens&verbatimScientificName=Calopteryx%20virgo
body:
encoding: ''
string: ''
headers:
Accept-Encoding: gzip, deflate
Accept: application/json, text/xml, application/xml, */*
response:
status:
status_code: '200'
message: OK
explanation: Request fulfilled, document follows
headers:
status: HTTP/1.1 200 OK
content-type: application/json
body:
encoding: ''
file: no
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjY1ODQyLCJy
base64_string: eyJvZmZzZXQiOjAsImxpbWl0IjowLCJlbmRPZlJlY29yZHMiOmZhbHNlLCJjb3VudCI6MjY1OTA1LCJy
ZXN1bHRzIjpbXSwiZmFjZXRzIjpbXX0=
recorded_at: 2023-03-06 15:33:29 GMT
recorded_at: 2023-03-09 14:40:20 GMT
recorded_with: vcr/1.2.0, webmockr/0.8.2
Loading

0 comments on commit 5c30aca

Please sign in to comment.