Newer
Older
#' Api class to make appropriate request based on parameters
#'
#' @field api_type character. The name of the api to call (see url_mapping)
#' @field export_format character (default = "JSON"). The export's format
#' Available are CSV, XLSX, SDMX-ML and JSON
#' @field parameters character. Additional request parameters
#' @field id character. The identifier or id of the request's object
#' @field language character (default = "en"). Language of the response data.
#' Available are 'fr', 'de', 'it', 'en'
#' @field version_format numeric (default = 2.1). The export format's version
#' (for 'codelist')
#' @field api_url character. The url to make the request to.
api_type = "character",
export_format = "character",
parameters = "character",
id = "character",
language = "character",
api_url = "character"
),
methods = list(
initialize = function(...,
export_format = "JSON",
parameters = "",
id = "",
language = "en",
...,
export_format = export_format,
parameters = parameters,
id = id,
language = language,
get_url(id, export_format, version_format, language)
request_function <- REQUEST_FUNCTION_MAPPING[[export_format]]
url <- glue::glue("{BASE_URL}/api/{api_url}")
url <- glue::glue("{BASE_URL}/api/{api_url}?{parameters}")
get_url = function(id, export_format, version_format, language) {
url_mapping <- hash::hash(
"codelist" =
glue::glue("CodeLists/{id}/exports/{export_format}/{version_format}"),
"dcat_data_structure" =
glue::glue("DataStructures/{id}/{language}"),
"nomenclature_one_level" =
glue::glue("Nomenclatures/{id}/levelexport/CSV"),
"nomenclature_multiple_levels" =
glue::glue("Nomenclatures/{id}/multiplelevels/CSV")
)
api_url <<- url_mapping[[api_type]]
}
)
)