library(hash) library(methods) library(glue) api_class <- setRefClass( "Api", fields = list( api_type = "character", export_format = "character", root_url = "character", parameters = "character", id = "character", language = "character", version_format="numeric", path = "character", api_url = "character" ), methods = list( initialize = function( ..., export_format = "JSON", root_url = BASE_URL, parameters = "", id = "", language = "en", version_format=2.1, path = "." ){ callSuper( ..., export_format = export_format, root_url = root_url, parameters = parameters, id = id, language = language, version_format=version_format, path = path ) get_url() }, get_response = function(){ request_function <- REQUEST_FUNCTION_MAPPING[[export_format]] print(request_function) if(parameters==""){ url = glue("{root_url}/api/{api_url}") } else { url = glue("{root_url}/api/{api_url}?{parameters}") } print(url) request_function(url) }, get_url = function() { url_mapping <- hash( # i14y 'codelist'= glue('CodeLists/{id}/exports/{export_format}/{version_format}'), 'content_configuration' = glue('ContentConfigurations'), 'content_configuration_identifier' = glue('ContentConfigurations/{id}'), 'dcat_data_structure' = glue('DataStructures/{id}/{language}'), 'dcat_dataset_description' = glue('Datasets/{id}/{language}/description'), 'dcat_dataset_information' = glue('Datasets/{id}/{language}/distributions'), 'nomenclature_path_nodes' = glue('Nomenclatures/Childnodes/{id}/{language}/{path}'), 'nomenclature_one_level' = glue('Nomenclatures/{id}/levelexport/CSV'), 'nomenclature_multiple_levels' = glue('Nomenclatures/{id}/multiplelevels/CSV'), 'nomenclature_search' = glue('Nomenclatures/{id}/search'), # dcat 'agents_list' = glue('Agent'), 'agent_id' = glue('Agent/{id}'), 'dataset_list' = glue('Dataset'), 'dataset_id_distributions' = glue('Dataset/{id}/distributions'), 'dataset_id' = glue('Dataset/{id}'), 'dataset_identifier' = glue('Datataset/identifier/{id}'), 'dataset_identifier_distributions' = glue('Datataset/identifier/{id}/distributions'), 'distributions_list' = glue('Distribution'), 'distribution_id' = glue('Distribution/{id}') ) api_url <<- url_mapping[[api_type]] } ) )