Skip to content

Commit

Permalink
feat: support date inputs
Browse files Browse the repository at this point in the history
  • Loading branch information
m-muecke committed Jan 18, 2024
1 parent f9f86be commit f774179
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 12 deletions.
41 changes: 29 additions & 12 deletions R/feed.R
Original file line number Diff line number Diff line change
@@ -1,52 +1,69 @@
#' Return the daily treasury par yield curve rates
#'
#' @param date `character(1)` or `numeric(1)` date in format yyyy or yyyymm.
#' If `NULL`, all data is returned. Default `NULL`.
#' @references <https://home.treasury.gov/treasury-daily-interest-rate-xml-feed>
#' @export
tr_yield_curve <- function(date = NULL) {
date <- date %||% "all"
treasury("daily_treasury_yield_curve", field_tdr_date_value = date)
treasury("daily_treasury_yield_curve", date)
}

#' Return the daily treasury bill rates
#'
#' @param date `character(1)` or `numeric(1)` date in format yyyy or yyyymm.
#' If `NULL`, all data is returned. Default `NULL`.
#' @references <https://home.treasury.gov/treasury-daily-interest-rate-xml-feed>
#' @export
tr_bill_rates <- function(date = NULL) {
date <- date %||% "all"
treasury("daily_treasury_bill_rates", field_tdr_date_value = date)
treasury("daily_treasury_bill_rates", date)
}

#' Return the daily treasury long-term rates
#'
#' @param date `character(1)` or `numeric(1)` date in format yyyy or yyyymm.
#' If `NULL`, all data is returned. Default `NULL`.
#' @references <https://home.treasury.gov/treasury-daily-interest-rate-xml-feed>
#' @export
tr_long_term_rate <- function(date = NULL) {
date <- date %||% "all"
treasury("daily_treasury_long_term_rate", field_tdr_date_value = date)
treasury("daily_treasury_long_term_rate", date)
}

#' Return the daily treasury par real yield curve rates
#'
#' @param date `character(1)` or `numeric(1)` date in format yyyy or yyyymm.
#' If `NULL`, all data is returned. Default `NULL`.
#' @references <https://home.treasury.gov/treasury-daily-interest-rate-xml-feed>
#' @export
tr_real_yield_curve <- function(date = NULL) {
date <- date %||% "all"
treasury("daily_treasury_real_yield_curve", field_tdr_date_value = date)
treasury("daily_treasury_real_yield_curve", date)
}

#' Return the daily treasury real long-term rates
#'
#' @param date `character(1)` or `numeric(1)` date in format yyyy or yyyymm.
#' If `NULL`, all data is returned. Default `NULL`.
#' @references <https://home.treasury.gov/treasury-daily-interest-rate-xml-feed>
#' @export
tr_real_long_term <- function(date = NULL) {
date <- date %||% "all"
treasury("daily_treasury_real_long_term", field_tdr_date_value = date)
treasury("daily_treasury_real_long_term", date)
}

treasury <- function(data, ...) {
treasury <- function(data, date = NULL) {
stopifnot(is.character(data), length(data) == 1L)
stopifnot(
is.null(date) ||
is.character(date) || is.numeric(date) && length(date) == 1L
)
date <- date %||% "all"
date <- as.character(date)
nm <- if (grepl("[0-9]{6}", date)) {
"field_tdr_date_value_month"
} else {
"field_tdr_date_value"
}
request("https://home.treasury.gov/resource-center/data-chart-center/interest-rates/pages/xml") |>
req_user_agent("treasury (https://m-muecke.github.io/treasury)") |>
req_url_query(data = data, ...) |>
req_url_query(data = data, "{nm}" := date) |>
req_perform() |>
resp_body_xml()
}
4 changes: 4 additions & 0 deletions man/tr_bill_rates.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions man/tr_long_term_rate.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions man/tr_real_long_term.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions man/tr_real_yield_curve.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions man/tr_yield_curve.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f774179

Please sign in to comment.