Skip to content

Commit 12b7ee1

Browse files
insertion dans la liste de données du catalogue Melodi
1 parent 8a221ba commit 12b7ee1

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

R/donnees_dispo.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ donnees_dispo <- function(recherche_init = NULL,
3737
# 1 - construit table à afficher
3838
affich <-
3939
listToDf(
40-
liste = ld,
40+
liste = listerDonnees(),
4141
vars = c("collection", "libelle", "nom", "date_ref", "size")
4242
)
4343
affich$size <- round(as.numeric(affich$size) / 1048576, 1) # conversion Mo

R/utile.R

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,68 @@
11
# FONCTIONS AUXILIAIRES NON EXPORTÉES
22

3+
# ListerDonnees -------------------------------------------------------------
4+
5+
#' Fournit la liste de données disponibles (données internes au package + requête dans le catalogue Melodi)
6+
#'
7+
#'
8+
#' La fonction retourne une liste, `ld` seulement si pas d'accès Internet, et `ld` fusionné avec le catalogue Melodi sinon.
9+
#'
10+
#' @return Une liste issue d'une fusion éventuelle (sous condition d'accès à Melodi) de la liste `ld` et de l'équivalent sous la catalogue Mélodi.
11+
#'
12+
#' @keywords internal
13+
14+
listerDonnees <- function(){
15+
res <- ld
16+
if (curl::has_internet()){
17+
## requeter melodi
18+
url <- "https://api.insee.fr/melodi/catalog/all"
19+
appel_melodi <- tryCatch(httr::GET(url),
20+
error = function(e) message(e$message))
21+
if (appel_melodi$status_code == 200){
22+
catalogue <- jsonlite::fromJSON(httr::content(appel_melodi, as = "text", encoding = "UTF-8"),
23+
simplifyDataFrame = FALSE)
24+
res <- c(res,
25+
lapply(catalogue, function(x) list(nom = x$identifier,
26+
libelle = retourneLibelleMelodi(x$title, 'fr'),
27+
collection = "MELODI",
28+
lien = paste0("https://api.insee.fr/melodi/data/", x$identifier),
29+
type = "json",
30+
zip = FALSE,
31+
api_rest = TRUE)))
32+
}
33+
}
34+
res
35+
}
36+
37+
38+
# retourneLangueMelodi -------------------------------------------------------------
39+
40+
#' Fournit pour une liste de libelles, la langue pour chacun des éléments de la liste (adhérent à la structure du catalogue de Melodi)
41+
#'
42+
#'
43+
#' La fonction retourne un vecteur de codes langues
44+
#'
45+
#' @return Un vecteur du type `c('fr', 'en')`
46+
#'
47+
#' @keywords internal
48+
retourneLangueMelodi <- function(listeLibelles){
49+
unlist(lapply(listeLibelles, function(x) x$lang))
50+
}
51+
52+
# retourneLibelleMelodi -------------------------------------------------------------
53+
54+
#' Fournit le libellé correspondant à la langue désirée (adhérent à la structure du catalogue de Melodi)
55+
#'
56+
#'
57+
#' La fonction retourne une chaîne de caractères dans la langue désirée, sélectionnée dans une liste de libellés
58+
#'
59+
#' @return Une chaîne de caractères
60+
#'
61+
#' @keywords internal
62+
retourneLibelleMelodi <- function(listeLibelles, langue){
63+
listeLibelles[[which(retourneLangueMelodi(listeLibelles) == langue)]]$content
64+
}
65+
366
# infoDonnees -------------------------------------------------------------
467

568
#' Recherche ligne d'informations dans liste_donnees

0 commit comments

Comments
 (0)