Nothing
#' Add an api call to a pxweb_api_s3 object
#'
#' @description
#' The pxweb_add_call function add a call the the api in the call stack, then compute
#'
#' Promise:
#' The stored rda api object will always have the latest calls
#' This is not thread safe so only one session at a time should call the api.
#'
#' @param obj a \code{pxweb_api_s3} object
#'
#' @keywords internal
pxweb_add_call <- function(obj, time_stamp = Sys.time()){
assert_pxweb_calls(obj)
assert_pxweb_config(obj)
checkmate::assert_class(time_stamp, "POSIXct")
checkmate::assert_number(as.numeric(time_stamp))
if(file.exists(obj$paths$rda_file_path)){
obj$calls <- load_pxweb_calls(obj)
}
# Add call to stack
obj$calls$time_stamps <- c(list(time_stamp), obj$calls$time_stamps)
# This compute
if(length(obj$calls$time_stamps) >= obj$config$calls_per_period){
second_between_first_and_last_call <- as.numeric(obj$calls$time_stamps[[1]], units="secs") - as.numeric(obj$calls$time_stamps[[length(obj$calls$time_stamps)]], units="secs")
obj$calls$time_stamps[[length(obj$calls$time_stamps)]] <- NULL
if(is.pxweb(obj)) save_pxweb(obj)
# cat(second_between_first_and_last_call, ":", obj$config$calls_per_period, ": Sleep:", max(obj$config$calls_per_period - second_between_first_and_last_call,0))
# print(obj$calls$time_stamps[c(1,length(obj$calls$time_stamps))])
Sys.sleep(time=max(obj$config$calls_per_period - second_between_first_and_last_call,0))
} else {
if(is.pxweb(obj)) save_pxweb(obj)
}
obj
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.