diff --git a/dev/gitlab_forge.R b/dev/gitlab_forge.R index 3f6147a9e70454e0694222fd010f2458f872576e..c9baf8cb78189515bc9bde5d605e3ad448d2997a 100644 --- a/dev/gitlab_forge.R +++ b/dev/gitlab_forge.R @@ -10,18 +10,44 @@ set_gitlab_connection( private_token = Sys.getenv("GITLAB_COM_TOKEN") ) -response <- GET( - "https://gitlab-forge.din.developpement-durable.gouv.fr/api/v4/groups/1013/projects", - add_headers(`PRIVATE-TOKEN` = Sys.getenv("GITLAB_COM_TOKEN")), - query = list( - include_subgroups = "true", - per_page = 1000 - ), - timeout(120) # Timeout augmenté pour les projets -) +response <- data.frame() +# on charge les projets du groupe CSD +buildres <- function(i){ + res_proj100 <- GET( + "https://gitlab-forge.din.developpement-durable.gouv.fr/api/v4/groups/1013/projects", + add_headers(`PRIVATE-TOKEN` = Sys.getenv("GITLAB_COM_TOKEN")), + query = list( + include_subgroups = "true", + per_page = 100, + page = i + ), + timeout(120) # Timeout augmenté pour les projets + ) + res <- content(res_proj100, as = "text", encoding = "UTF-8") %>% fromJSON() + return(res) +} +#on réalise une boucle si plus de 100 projets +x <- 1 +repeat { + res <- buildres(x) + if (length(res) == 0) { + break + } + response <- bind_rows(response, res) + x <- x + 1 +} +# response <- GET( +# "https://gitlab-forge.din.developpement-durable.gouv.fr/api/v4/groups/1013/projects", +# add_headers(`PRIVATE-TOKEN` = Sys.getenv("GITLAB_COM_TOKEN")), +# query = list( +# include_subgroups = "true", +# per_page = 1000 +# ), +# timeout(120) # Timeout augmenté pour les projets +# ) # Parse the JSON content -projects <- content(response, as = "text", encoding = "UTF-8") %>% fromJSON() +projects <- response # Extract the project IDs project_ids <- projects$id