Skip to content

Commit ac1065e

Browse files
author
Aeilert
authored
Merge pull request #13 from PIP-Technical-Team/code_review
Code review
2 parents 339652f + 705cc27 commit ac1065e

File tree

10 files changed

+55
-28
lines changed

10 files changed

+55
-28
lines changed

.Rbuildignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
^_pkgdown\.yml$
77
^docs$
88
^pkgdown$
9-
TEMP/
9+
TEMP/
10+
^data-raw$

R/get_aux.R

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#' # Get countries
1818
#' df <- get_aux("countries")
1919
get_aux <- function(table = NULL, version = NULL, api_version = "v1",
20-
format = c("json", "csv", "rds"),
20+
format = c("rds", "json", "csv"),
2121
simplify = TRUE, server = NULL) {
2222

2323
# Match args
@@ -64,7 +64,7 @@ get_aux <- function(table = NULL, version = NULL, api_version = "v1",
6464
#' # Short hand to get countries
6565
#' get_countries()
6666
get_countries <- function(version = NULL, api_version = "v1",
67-
format = c("json", "csv", "rds"),
67+
format = c("rds", "json", "csv"),
6868
server = NULL) {
6969
get_aux("countries",
7070
version = version, api_version = api_version,
@@ -80,7 +80,7 @@ get_countries <- function(version = NULL, api_version = "v1",
8080
#' # Short hand to get regions
8181
#' get_regions()
8282
get_regions <- function(version = NULL, api_version = "v1",
83-
format = c("json", "csv", "rds"),
83+
format = c("rds", "json", "csv"),
8484
server = NULL) {
8585
get_aux("regions",
8686
version = version, api_version = api_version,

R/get_stats.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@ get_stats <- function(country = "all",
5858
reporting_level = c("all", "national", "urban", "rural"),
5959
version = NULL,
6060
api_version = "v1",
61-
format = c("json", "csv", "rds"),
61+
format = c("rds", "json", "csv"),
6262
simplify = TRUE,
6363
server = NULL) {
64-
64+
# browser()
6565
# Match args
6666
welfare_type <- match.arg(welfare_type)
6767
reporting_level <- match.arg(reporting_level)

R/sysdata.rda

117 Bytes
Binary file not shown.

R/utils.R

+31-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
base_url <- "https://api.worldbank.org/pip"
2-
31
#' check_internet
42
#' @noRd
53
check_internet <- function() {
@@ -40,21 +38,13 @@ check_status <- function(res, parsed) {
4038
}
4139

4240
#' build_url
43-
#' @param server Server
44-
#' @param endpoint Endpoint
41+
#' @param server character: Server
42+
#' @param endpoint character: Endpoint
43+
#' @param api_version character: API version
4544
#' @inheritParams get_stats
4645
#' @noRd
4746
build_url <- function(server, endpoint, api_version) {
48-
if (!is.null(server)) {
49-
match.arg(server, c("prod", "qa", "dev"))
50-
if (server == "qa") base_url <- Sys.getenv("PIP_QA_URL")
51-
if (server == "dev") base_url <- Sys.getenv("PIP_DEV_URL")
52-
attempt::stop_if(
53-
base_url == "",
54-
msg = sprintf("'%s' url not found. Check your .Renviron file.", server)
55-
)
56-
}
57-
if (is.null(server) || server == "prod") base_url <- base_url
47+
base_url <- select_base_url(server = server)
5848
sprintf("%s/%s/%s", base_url, api_version, endpoint)
5949
}
6050

@@ -131,3 +121,30 @@ parse_response <- function(res, simplify) {
131121
)
132122
}
133123
}
124+
125+
#' Select base URL
126+
#'
127+
#' Helper function to switch base URLs depending on PIP server being used
128+
#'
129+
#' @param server character: c("prod", "qa", "dev"). Defaults to NULL (ie. prod).
130+
#' @return character
131+
#' @noRd
132+
select_base_url <- function(server) {
133+
if (!is.null(server)) {
134+
match.arg(server, c("prod", "qa", "dev"))
135+
if (server %in% c("qa", "dev")) {
136+
if (server == "qa") base_url <- Sys.getenv("PIP_QA_URL")
137+
if (server == "dev") base_url <- Sys.getenv("PIP_DEV_URL")
138+
attempt::stop_if(
139+
base_url == "",
140+
msg = sprintf("'%s' url not found. Check your .Renviron file.", server)
141+
)
142+
}
143+
}
144+
145+
if (is.null(server) || server == "prod") {
146+
base_url <- prod_url
147+
}
148+
149+
return(base_url)
150+
}

R/zzz.R

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
cm <- cachem::cache_mem(max_size = 512 * 1024^2, evict = "lru")
44
get_stats <<- memoise::memoise(get_stats, cache = cm)
55
get_aux <<- memoise::memoise(get_aux, cache = cm)
6-
packageStartupMessage("Info: Session based caching is enabled.")
76
}
87
}
8+
9+
.onAttach <- function(libname, pkgname) {
10+
packageStartupMessage("Info: Session based caching is enabled.")
11+
}

data-raw/data.R

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## code to prepare `data` dataset goes here
2+
prod_url <- "https://api.worldbank.org/pip"
3+
4+
usethis::use_data(prod_url,
5+
internal = TRUE,
6+
overwrite = TRUE)

man/get_aux.Rd

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/get_stats.Rd

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-utils.R

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ test_that("build_url() works", {
3131

3232
# Check that url is correctly pasted together
3333
x <- build_url(server = NULL, endpoint = "pip", api_version = "v1")
34-
expect_identical(x, paste0(base_url, "/v1/pip"))
34+
expect_identical(x, paste0(prod_url, "/v1/pip"))
3535
x <- build_url("prod", "pip", api_version = "v1")
36-
expect_identical(x, paste0(base_url, "/v1/pip"))
36+
expect_identical(x, paste0(prod_url, "/v1/pip"))
3737
x <- build_url("prod", "pip-grp", api_version = "v2")
38-
expect_identical(x, paste0(base_url, "/v2/pip-grp"))
38+
expect_identical(x, paste0(prod_url, "/v2/pip-grp"))
3939

4040
# Expect error if server arg is incorrect
4141
expect_error(build_url("tmp", "pip", "v1"))

0 commit comments

Comments
 (0)