diff --git a/DESCRIPTION b/DESCRIPTION index 6780142..f376aab 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: inseeLocalData Title: Accès aux données locales de l'Insee via le catalogue des API -Version: 0.0.0.9000 +Version: 0.0.2 Authors@R: c(person(given = "Marie-Emmanuelle", family = "FAURE", @@ -13,14 +13,13 @@ License: GPL-3 Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) -RoxygenNote: 7.1.1 +RoxygenNote: 7.3.1 Language: fr Suggests: rstudioapi, testthat, vcr -Imports: - dplyr, +Imports: httr, stringr, jsonlite, diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..3a10de5 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,7 @@ +# inseeLocalData 0.0.2 +- Prise en compte des impacts dus au changement de portail des API : + - Changement d'URL (plus de V0.1) + - Plus besoin de token + - Structure du retour JSON légèrement différent + +# inseeLocalData 0.0.1 diff --git a/R/get_dataset.R b/R/get_dataset.R index 6b771ae..007e03a 100644 --- a/R/get_dataset.R +++ b/R/get_dataset.R @@ -1,6 +1,5 @@ #' Fonction permettant d'importer les données de l'API 'données locales' pour un couple de paramètre #' -#' @param jeton Access token (jeton) généré sur le catalogue des API de l'Insee #' @param jeu_donnees code jeu de données se composant du nom de la source, du millésime des données et parfois du millésime géographique de diffusion #' @param croisement sélection de variables (composée d'une variable ou de plusieurs) #' @param modalite modalités souhaitées pour les variables (dans le même ordre) @@ -18,36 +17,7 @@ #' #' @examples #' \donttest{ -#' # Remplace jeton par la valeur du jeton genere sur le catalogue des API : -#' if (exists("jeton")) { -#' get_dataset(jeton, -#' "GEO2017REE2017", -#' "NA5_B-ENTR_INDIVIDUELLE", -#' "all.all", -#' "COM", -#' "51108") -#' } -#' -#' # Genere une fenetre dans laquelle vous pouvez renseigner le jeton genere sur le catalogue des API -#' # Permet de ne pas stocker le jeton en clair dans le programme -#' if (interactive() && identical(Sys.getenv("RSTUDIO"), "1")) { -#' get_dataset(rstudioapi::askForPassword("jeton:"), -#' "GEO2017REE2017", -#' "NA5_B-ENTR_INDIVIDUELLE", -#' "all.all", -#' "COM", -#' "51108") -#' } -#' -#' # Necessite la modification du fichier .Renviron en ajoutant -#' # une ligne jeton = "la valeur du jeton genere sur le catalogue des API" -#' # Pour acceder facilement au fichier .Renviron, vous pouvez -#' # utiliser la commande usethis::edit_r_environ("user") -#' # Necessite de redemarer R après avoir fait la modification -#' # Ce parametre doit etre mis a jour à chaque fois qu'un nouveau jeton est genere -#' if (!is.na(Sys.getenv("jeton", NA))) { -#' get_dataset(Sys.getenv("jeton"), -#' "GEO2017REE2017", +#' get_dataset("GEO2017REE2017", #' "NA5_B-ENTR_INDIVIDUELLE", #' "all.all", #' "COM", @@ -56,25 +26,20 @@ -get_dataset <- function(jeton, jeu_donnees, croisement, modalite, nivgeo, codgeo, temporisation = NA){ +get_dataset <- function(jeu_donnees, croisement, modalite, nivgeo, codgeo, temporisation = NA){ modalite <- stringr::str_replace_all(modalite, '\\+', '%2B') - auth_header <- httr::add_headers('Authorization'= paste('Bearer',jeton)) + req <- paste0("https://api.insee.fr/donnees-locales/donnees/geo-", + croisement, "@", jeu_donnees, "/", nivgeo, "-", codgeo, ".", modalite) - res <- httr::content(httr::GET(paste0("https://api.insee.fr/donnees-locales/V0.1/donnees/geo-", - croisement, "@", jeu_donnees, "/", nivgeo, "-", codgeo, ".", modalite), - auth_header), + message(req) + + res <- httr::content(httr::GET(req), as="text", httr::content_type_json(), encoding='UTF-8') - if (stringr::str_detect(res, "Invalid Credentials. Make sure you have given the correct access token")){ - print('Erreur - Jeton invalide') - } else if (stringr::str_detect(res, "Aucune cellule ne correspond a la requ\u00eate")){ + if (stringr::str_detect(res, "Aucune cellule ne correspond a la requ\u00eate")){ print('Erreur - Param\u00e8tre(s) de la requ\u00eate incorrect(s)') - } else if (stringr::str_detect(res, "Resource forbidden ")){ - print("Erreur - Scouscription a l API donn\u00e9es locales non r\u00e9alis\u00e9e") - } else if (stringr::str_detect(res, "quota")==T){ - print("Erreur- Trop de requ\u00eates, faire une pause") } else{ res <- jsonlite::fromJSON(res) @@ -86,46 +51,46 @@ get_dataset <- function(jeton, jeu_donnees, croisement, modalite, nivgeo, codgeo nb_var <- stringr::str_count(croisement, "-") + 1 zone <- res$Zone - info_zone <- as.data.frame(cbind(zone$'@codgeo',zone$'@nivgeo',do.call("cbind", zone$Millesime)), stringsAsFactors = FALSE) - colnames(info_zone) <- c("codgeo","libgeo","millesime_geo","libelle_sans_article","code_article") + info_zone <- as.data.frame(cbind(zone$'codgeo',zone$'nivgeo', stringsAsFactors = FALSE)) + colnames(info_zone) <- c("codgeo","libgeo") croisement <- res$Croisement source <- as.data.frame(do.call("cbind", croisement$JeuDonnees), stringsAsFactors = FALSE) - colnames(source) <- c("jeu_donnees", "millesime_donnees", "lib_jeu_donnees","lib_source") - - source <- cbind(source, info_zone$millesime_geo) - colnames(source)[colnames(source) =="info_zone$millesime_geo"] <- "millesime_geo" - source$source <- paste0("Insee, ", source$lib_source, " ", source$millesime_donnees, - ", g\u00e9ographie au 01/01/", source$millesime_geo) + colnames(source) <- c("code", "Libelle", "Annee","Source") variable <- res$Variable temp <- variable$Modalite - info_modalite <- as.data.frame(cbind(variable$'@code',variable$Libelle), stringsAsFactors = FALSE) + info_modalite <- as.data.frame(cbind(variable$'code',variable$Libelle), stringsAsFactors = FALSE) liste_code <- NULL if (nb_var > 1) { for (i in 1:length(temp)) { if (dim(as.data.frame(temp[[i]]))[1]>1){ - liste_code_temp <- data.frame(info_modalite[i,]$V1, info_modalite[i,]$V2, temp[[i]][,'@code'], temp[[i]][,'Libelle'], + liste_code_temp <- data.frame(info_modalite[i,]$V1, + info_modalite[i,]$V2, + temp[[i]][,'code'], stringsAsFactors = FALSE) - colnames(liste_code_temp) <- c("variable", "lib_varible", "modalite", "lib_modalite") + colnames(liste_code_temp) <- c("variable", "lib_variable", "modalite") } else { - liste_code_temp <- data.frame(info_modalite[i,]$V1, info_modalite[i,]$V2,temp[[i]]['@code'],temp[[i]]['Libelle'],stringsAsFactors = FALSE) - colnames(liste_code_temp) <- c("variable", "lib_varible", "modalite", "lib_modalite") + liste_code_temp <- data.frame(info_modalite[i,]$V1, + info_modalite[i,]$V2, + temp[[i]]['code'], + stringsAsFactors = FALSE) + colnames(liste_code_temp) <- c("variable", "lib_variable", "modalite") } liste_code <- rbind(liste_code_temp, liste_code) } } else { if (dim(as.data.frame(temp))[1]>1){ - liste_code <- data.frame(cbind(info_modalite,temp[,'@code'], temp[,'Libelle']), + liste_code <- data.frame(cbind(info_modalite,temp[,'code']), stringsAsFactors = FALSE) } else { - liste_code <- data.frame(cbind(info_modalite,temp['@code'], temp['Libelle']), + liste_code <- data.frame(cbind(info_modalite,as.data.frame(temp)$code), stringsAsFactors = FALSE) } - colnames(liste_code) <- c("variable", "lib_varible", "modalite", "lib_modalite") + colnames(liste_code) <- c("variable", "lib_variable", "modalite") } cellule <- as.data.frame(res$Cellule) @@ -138,24 +103,22 @@ get_dataset <- function(jeton, jeu_donnees, croisement, modalite, nivgeo, codgeo } colnames(var_tot) <- c(t(var[[1]][2])) - donnees <- cbind(cellule$Zone, cellule$Mesure, var_tot, cellule$Valeur) - colnames(donnees) <- c("codgeo", "nivgeo", "mesure", "lib_mesure", c(t(var[[1]][2])), "valeur") + donnees <- cbind(cellule$Zone$codgeo, cellule$Zone$nivgeo, var_tot, cellule$Valeur) + colnames(donnees) <- c("codgeo", "nivgeo", c(t(var[[1]][2])), "valeur") donnees <- as.data.frame(donnees) } else { if (dim(as.data.frame(cellule))[1]>1){ donnees <- do.call("cbind",cellule) - donnees <- data.frame(donnees[,'Zone.@codgeo'], donnees[,'Zone.@nivgeo'], - donnees[,'Mesure.@code'], donnees[,'Mesure.$'], - donnees[,'Modalite.@code'], donnees[,'Valeur'], stringsAsFactors = FALSE) - colnames(donnees) <- c("codgeo", "nivgeo", "mesure", "lib_mesure", var[[2]][2], "valeur") + donnees <- data.frame(donnees[,'Zone.codgeo'], donnees[,'Zone.nivgeo'], + donnees[,'Modalite.code'], donnees[,'Valeur'], stringsAsFactors = FALSE) + colnames(donnees) <- c("codgeo", "nivgeo", var[[2]][2], "valeur") } else { var <- as.character(cellule[,'Modalite..variable']) donnees <- data.frame(cellule['Zone..codgeo'], cellule[,'Zone..nivgeo'], - cellule[,'Mesure..code'], cellule[,'Mesure..'], cellule[,'Modalite..code'], cellule[,'Valeur'], stringsAsFactors = FALSE) - colnames(donnees) <- c("codgeo", "nivgeo", "mesure", "lib_mesure", var, "valeur") + colnames(donnees) <- c("codgeo", "nivgeo", var, "valeur") } } diff --git a/README.md b/README.md index 58b6e3c..aeb9873 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,7 @@ - - # inseeLocalData - - -[![R-CMD-check](https://github.com/InseeFrLab/inseeLocalData/workflows/R-CMD-check/badge.svg)](https://github.com/InseeFrLab/inseeLocalData/actions) -[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://www.tidyverse.org/lifecycle/#experimental) -[![CRAN status](https://www.r-pkg.org/badges/version/inseeLocalData)](https://cran.r-project.org/package=inseeLocalData) - - L’[API ‘Données -locales’](https://api.insee.fr/catalogue/site/themes/wso2/subthemes/insee/pages/item-info.jag?name=DonneesLocales&version=V0.1&provider=insee) +locales’](https://portail-api.insee.fr/catalog/api/3d577cf9-d081-4054-977c-f9d081b054b2?aq=ALL) permet d’accéder aux données localisées à la commune, diffusées sur insee.fr dans la rubrique ‘chiffres détaillés’, sous forme de cubes prédéfinis. @@ -48,22 +39,6 @@ remotes::install_github("inseefrlab/inseeLocalData") ``` ## Utilisation - -Dans les différents exemples, il est nécessaire d’avoir généré -préalablement un jeton sur le catalogue des API. Ensuite plusieurs -possibilités s’offrent à vous : - - - Remplacer jeton par la valeur du jeton généré sur le catalogue des - API ; - - Générer une fenêtre dans laquelle vous pouvez renseigner le jeton - généré sur le catalogue des API (.rs.askForPassword(“jeton:”) ; - - Modifier le fichier .Renviron en ajoutant une ligne jeton = “la - valeur du jeton genere sur le catalogue des API”. Pour accéder - facilement au fichier .Renviron, vous pouvez utiliser la commande - usethis::edit\_r\_environ(“user”). Il est nécessaire de redémarer R - après avoir fait la modification. Attention, ce paramètre doit être - mis a jour à chaque fois qu’un nouveau jeton est généré. - ### Exemple d’utilisation simple : Cet exemple permet d’utiliser l’API pour un croisement et un code @@ -78,7 +53,7 @@ nivgeo <- "COM" codgeo <- "51108" modalite <- "all.all" -donneesAPI <- get_dataset(jeton, jeu_donnees, croisement, modalite, nivgeo, codgeo) +donneesAPI <- get_dataset(jeu_donnees, croisement, modalite, nivgeo, codgeo) donnees <- donneesAPI$donnees # pour accéder aux données liste_code <- donneesAPI$liste_code # pour accéder aux nomenclatures @@ -100,7 +75,7 @@ jeu_donnees <- "GEO2017REE2017" modalite <- "all.all" sortie <- mapply(get_dataset, - jeton, jeu_donnees, croisement, + jeu_donnees, croisement, modalite, liste_code$nivgeo, liste_code$codgeo,USE.NAMES = TRUE) donnees <- NULL @@ -122,12 +97,12 @@ différente). Les paramètres sont renseignés au préalable dans un data.frame ‘fichier’, ayant pour variables jeu\_donnees, croisement, modalite, nivgeo et codgeo. Le paramètre temporisation est utilisé pour faire une pause de 2 secondes entre chaque requêtes afin de ne pas -dépasser le quota de 30 requêtes par minute. +dépasser le quota de requêtes par minute du portail des API de l'Insee. ``` r fichier <- 'mon fichier' sortie <- mapply(get_dataset, - jeton, fichier$jeu_donnees, fichier$croisement, + fichier$jeu_donnees, fichier$croisement, fichier$modalite, fichier$nivgeo, fichier$codgeo,2,USE.NAMES = TRUE) # pour le 1er croisement renseigné dans le fichier en entrée diff --git a/man/get_dataset.Rd b/man/get_dataset.Rd index ad61501..8974318 100644 --- a/man/get_dataset.Rd +++ b/man/get_dataset.Rd @@ -6,7 +6,6 @@ \title{Fonction permettant d'importer les données de l'API 'données locales' pour un couple de paramètre} \usage{ get_dataset( - jeton, jeu_donnees, croisement, modalite, @@ -16,8 +15,6 @@ get_dataset( ) } \arguments{ -\item{jeton}{Access token (jeton) généré sur le catalogue des API de l'Insee} - \item{jeu_donnees}{code jeu de données se composant du nom de la source, du millésime des données et parfois du millésime géographique de diffusion} \item{croisement}{sélection de variables (composée d'une variable ou de plusieurs)} @@ -38,40 +35,10 @@ Fonction permettant d'importer les données de l'API 'données locales' pour un } \examples{ \donttest{ -# Remplace jeton par la valeur du jeton genere sur le catalogue des API : -if (exists("jeton")) { - get_dataset(jeton, - "GEO2017REE2017", - "NA5_B-ENTR_INDIVIDUELLE", - "all.all", - "COM", - "51108") -} - -# Genere une fenetre dans laquelle vous pouvez renseigner le jeton genere sur le catalogue des API -# Permet de ne pas stocker le jeton en clair dans le programme -if (interactive() && identical(Sys.getenv("RSTUDIO"), "1")) { - get_dataset(rstudioapi::askForPassword("jeton:"), - "GEO2017REE2017", + get_dataset("GEO2017REE2017", "NA5_B-ENTR_INDIVIDUELLE", "all.all", "COM", "51108") } - -# Necessite la modification du fichier .Renviron en ajoutant -# une ligne jeton = "la valeur du jeton genere sur le catalogue des API" -# Pour acceder facilement au fichier .Renviron, vous pouvez -# utiliser la commande usethis::edit_r_environ("user") -# Necessite de redemarer R après avoir fait la modification -# Ce parametre doit etre mis a jour à chaque fois qu'un nouveau jeton est genere -if (!is.na(Sys.getenv("jeton", NA))) { - get_dataset(Sys.getenv("jeton"), - "GEO2017REE2017", - "NA5_B-ENTR_INDIVIDUELLE", - "all.all", - "COM", - "51108") -} -} } diff --git a/tests/fixtures/na5_b-entr_individuelle-geo2017REE2017-com-44115.yml b/tests/fixtures/na5_b-entr_individuelle-geo2017REE2017-com-44115.yml index 57ce122..d685113 100644 --- a/tests/fixtures/na5_b-entr_individuelle-geo2017REE2017-com-44115.yml +++ b/tests/fixtures/na5_b-entr_individuelle-geo2017REE2017-com-44115.yml @@ -1,13 +1,12 @@ http_interactions: - request: method: get - uri: https://geo2017ree2017/COM-44115.all.all + uri: https://api.insee.fr/donnees-locales/donnees/geo-NA5_B-ENTR_INDIVIDUELLE@GEO2017REE2017/COM-44115.all.all body: encoding: '' string: '' headers: Accept: application/json, text/xml, application/xml, */* - Authorization: Bearer 63b95dfc-f3ea-3598-9243-0a6842856057 response: status: status_code: 200 @@ -15,47 +14,41 @@ http_interactions: reason: OK message: 'Success: (200) OK' headers: - access-control-allow-headers: authorization,Access-Control-Allow-Origin,Content-Type,SOAPAction - access-control-allow-methods: GET - access-control-allow-origin: '*' + x-gravitee-client-identifier: e9664cbb0d020b2b0acd267fcc98512ec6faeab1faba963d1d5bc3203e4493a4 content-type: application/json;charset=utf-8 - date: Wed, 03 Jun 2020 08:27:12 GMT - set-cookie: - - INSEE=1208560394.20480.0000;secure; expires=Wed, 03-Jun-2020 08:47:12 GMT; - path=/ - - pdapimgateway=1830169354.22560.0000;secure; expires=Wed, 03-Jun-2020 08:47:12 - GMT; path=/ + content-length: '4990' + date: Tue, 17 Dec 2024 07:40:39 GMT + server: unknown + set-cookie: INSEE=rd4o00000000000000000000ffff0ac33804o8080; expires=Tue, 17-Dec-2024 + 08:00:39 GMT; path=/; Httponly; Secure + x-gravitee-transaction-id: 140057bf-7757-4854-8057-bf7757585490 + x-gravitee-request-id: 140057bf-7757-4854-8057-bf7757585490 strict-transport-security: max-age=100000; includeSubDomains - transfer-encoding: chunked - x-frame-options: SAMEORIGIN body: - encoding: UTF-8 + encoding: '' file: no - string: '{"Croisement":{"Filtre":"","Groupe":{"@code":"F","$":"France"},"JeuDonnees":{"@code":"GEO2017REE2017","Annee":"2017","Libelle":"Répertoire - des entreprises et des établissements 2017","Source":"Demographie des entreprises - et des établissements"}},"Zone":{"@codgeo":"44115","@nivgeo":"COM","Millesime":{"@annee":"2017","Nccenr":"Oudon","Tncc":"1"}},"Variable":[{"@code":"ENTR_INDIVIDUELLE","Libelle":"Entreprise - individuelle","Modalite":[{"@code":"2","@variable":"","Libelle":"Non"},{"@code":"1","@variable":"","Libelle":"Oui"},{"@code":"ENS","@variable":"","Libelle":"Ensemble"}]},{"@code":"NA5_B","Libelle":"Activité - économique en 5 postes, nouvelle répartition","Modalite":[{"@code":"PS","@variable":"","Libelle":"Services - marchands aux particuliers"},{"@code":"JN","@variable":"","Libelle":"Services - marchands aux entreprises"},{"@code":"GI","@variable":"","Libelle":"Commerce, - transport, hébergement et restauration"},{"@code":"FZ","@variable":"","Libelle":"Construction"},{"@code":"BE","@variable":"","Libelle":"Industrie"},{"@code":"ENS","@variable":"","Libelle":"Ensemble"}]}],"Cellule":[{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"ENS","@variable":"NA5_B"},{"@code":"ENS","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"21"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"BE","@variable":"NA5_B"},{"@code":"ENS","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"FZ","@variable":"NA5_B"},{"@code":"ENS","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"4"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"GI","@variable":"NA5_B"},{"@code":"ENS","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"JN","@variable":"NA5_B"},{"@code":"ENS","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"7"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"PS","@variable":"NA5_B"},{"@code":"ENS","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"8"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"ENS","@variable":"NA5_B"},{"@code":"1","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"15"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"BE","@variable":"NA5_B"},{"@code":"1","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"FZ","@variable":"NA5_B"},{"@code":"1","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"2"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"GI","@variable":"NA5_B"},{"@code":"1","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"0"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"JN","@variable":"NA5_B"},{"@code":"1","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"5"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"PS","@variable":"NA5_B"},{"@code":"1","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"7"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"ENS","@variable":"NA5_B"},{"@code":"2","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"6"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"BE","@variable":"NA5_B"},{"@code":"2","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"0"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"FZ","@variable":"NA5_B"},{"@code":"2","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"2"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"GI","@variable":"NA5_B"},{"@code":"2","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"JN","@variable":"NA5_B"},{"@code":"2","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"2"},{"Zone":{"@codgeo":"44115","@nivgeo":"COM"},"Mesure":{"@code":"NBCRENT","$":"Nombre - de créations d''entreprises"},"Modalite":[{"@code":"PS","@variable":"NA5_B"},{"@code":"2","@variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"}]}' - recorded_at: 2020-06-03 08:27:12 GMT - recorded_with: vcr/0.5.4, webmockr/0.6.2 + string: '{"Croisement":{"Filtre":"","JeuDonnees":{"code":"GEO2017REE2017","Libelle":"Répertoire + des entreprises et des établissements 2017","Annee":2017,"Source":"Demographie + des entreprises et des établissements"},"Groupe":{"value":"France","code":"F"}},"Zone":[{"codgeo":"44115","nivgeo":"COM","Evenement":[]}],"Variable":[{"code":"ENTR_INDIVIDUELLE","Libelle":"Entreprise + individuelle","Modalite":[{"code":"ENS","variable":""},{"code":"1","variable":""},{"code":"2","variable":""}]},{"code":"NA5_B","Libelle":"Activité + économique en 5 postes, nouvelle répartition","Modalite":[{"code":"ENS","variable":""},{"code":"BE","variable":""},{"code":"FZ","variable":""},{"code":"GI","variable":""},{"code":"JN","variable":""},{"code":"PS","variable":""}]}],"Cellule":[{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"ENS","variable":"NA5_B"},{"code":"ENS","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"21"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"BE","variable":"NA5_B"},{"code":"ENS","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"FZ","variable":"NA5_B"},{"code":"ENS","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"4"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"GI","variable":"NA5_B"},{"code":"ENS","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"JN","variable":"NA5_B"},{"code":"ENS","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"7"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"PS","variable":"NA5_B"},{"code":"ENS","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"8"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"ENS","variable":"NA5_B"},{"code":"1","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"15"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"BE","variable":"NA5_B"},{"code":"1","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"FZ","variable":"NA5_B"},{"code":"1","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"2"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"GI","variable":"NA5_B"},{"code":"1","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"0"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"JN","variable":"NA5_B"},{"code":"1","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"5"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"PS","variable":"NA5_B"},{"code":"1","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"7"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"ENS","variable":"NA5_B"},{"code":"2","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"6"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"BE","variable":"NA5_B"},{"code":"2","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"0"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"FZ","variable":"NA5_B"},{"code":"2","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"2"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"GI","variable":"NA5_B"},{"code":"2","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"JN","variable":"NA5_B"},{"code":"2","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"2"},{"Zone":{"codgeo":"44115","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Nombre + de créations d''entreprises","code":"NBCRENT"},"Modalite":[{"code":"PS","variable":"NA5_B"},{"code":"2","variable":"ENTR_INDIVIDUELLE"}],"Valeur":"1"}]}' + recorded_at: 2024-12-17 07:40:39 GMT + recorded_with: vcr/1.6.0, webmockr/1.0.0 diff --git a/tests/fixtures/popleg2020-com-44115.yml b/tests/fixtures/popleg2020-com-44115.yml new file mode 100644 index 0000000..8152c79 --- /dev/null +++ b/tests/fixtures/popleg2020-com-44115.yml @@ -0,0 +1,38 @@ +http_interactions: +- request: + method: get + uri: https://api.insee.fr/donnees-locales/donnees/geo-ind_poplegales@popleg2020/COM-44109.all + body: + encoding: '' + string: '' + headers: + Accept: application/json, text/xml, application/xml, */* + response: + status: + status_code: 200 + category: Success + reason: OK + message: 'Success: (200) OK' + headers: + x-gravitee-client-identifier: da8f0e3e43b6fa506c3ffbc45d3f15fedb15e896336c30f524c5fa3d7fdfe05d + content-type: application/json;charset=utf-8 + content-length: '999' + date: Tue, 17 Dec 2024 07:40:09 GMT + server: unknown + set-cookie: INSEE=rd4o00000000000000000000ffff0ac33804o8080; expires=Tue, 17-Dec-2024 + 08:00:09 GMT; path=/; Httponly; Secure + x-gravitee-transaction-id: 92153cd4-1b53-4e71-953c-d41b539e7123 + x-gravitee-request-id: 92153cd4-1b53-4e71-953c-d41b539e7123 + strict-transport-security: max-age=100000; includeSubDomains + body: + encoding: '' + file: no + string: '{"Croisement":{"Filtre":"","JeuDonnees":{"code":"POPLEG2020","Libelle":"Populations + légales 2020","Annee":2020,"Source":"Populations légales"},"Groupe":{"value":"Communes + des populations légales uniquement","code":"COMMUNES_POP"}},"Zone":[{"codgeo":"44109","nivgeo":"COM","Evenement":[]}],"Variable":[{"code":"IND_POPLEGALES","Libelle":"Indicateurs + des populations légales","Modalite":[{"code":"1","variable":""}]}],"Cellule":[{"Zone":{"codgeo":"44109","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Population + municipale","code":"POPMUN"},"Modalite":[{"code":"1","variable":"IND_POPLEGALES"}],"Valeur":"320732"},{"Zone":{"codgeo":"44109","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Population + comptée à part","code":"POPCAP"},"Modalite":[{"code":"1","variable":"IND_POPLEGALES"}],"Valeur":"5125"},{"Zone":{"codgeo":"44109","nivgeo":"COM","Evenement":[]},"Mesure":{"value":"Population + totale","code":"POPTOT"},"Modalite":[{"code":"1","variable":"IND_POPLEGALES"}],"Valeur":"325857"}]}' + recorded_at: 2024-12-17 07:40:09 GMT + recorded_with: vcr/1.6.0, webmockr/1.0.0 diff --git a/tests/testthat/test-get_dataset.R b/tests/testthat/test-get_dataset.R index 897babd..d7667f8 100644 --- a/tests/testthat/test-get_dataset.R +++ b/tests/testthat/test-get_dataset.R @@ -1,20 +1,36 @@ test_that("get_dataset works", { vcr::use_cassette("na5_b-entr_individuelle-geo2017REE2017-com-44115", { - res <- get_dataset('63b95dfc-f3ea-3598-9243-0a6842856057', - "GEO2017REE2017", + res <- get_dataset("GEO2017REE2017", "NA5_B-ENTR_INDIVIDUELLE", 'all.all', "COM", "44115") expect_is(res, "list") - expect_equal(as.character(res$source$jeu_donnees), "GEO2017REE2017") + expect_equal(as.character(res$source$code), "GEO2017REE2017") expect_equal(res$donnees$codgeo[1], "44115") expect_named(res, c("donnees", "liste_code", "info_zone", "source")) expect_is(res$donnees, "data.frame") expect_is(res$liste_code, "data.frame") expect_is(res$info_zone, "data.frame") expect_is(res$source, "data.frame") - expect_equal(dim(res$donnees), c(18, 7)) + expect_equal(dim(res$donnees), c(18, 5)) + }) + vcr::use_cassette("popleg2020-com-44115", { + res <- get_dataset("popleg2020", + "ind_poplegales", + 'all', + "COM", + "44109") + + expect_is(res, "list") + expect_equal(as.character(res$source$code), "POPLEG2020") + expect_equal(res$donnees$codgeo[1], "44109") + expect_named(res, c("donnees", "liste_code", "info_zone", "source")) + expect_is(res$donnees, "data.frame") + expect_is(res$liste_code, "data.frame") + expect_is(res$info_zone, "data.frame") + expect_is(res$source, "data.frame") + expect_equal(dim(res$donnees), c(3, 4)) }) })