diff options
author | Aurelien Poscia <aurelien.poscia@sonarsource.com> | 2023-12-13 09:54:59 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-12-22 20:03:02 +0000 |
commit | d237a80b07c1a99151bb61f492ab27dfdfd65594 (patch) | |
tree | 92ad30044b9dfa5a8e727813a61a8ed122625a86 /server/sonar-alm-client/src/main/java | |
parent | b2cd0f3ff50d504cd88ecf7eec9887ef4fb46ea3 (diff) | |
download | sonarqube-d237a80b07c1a99151bb61f492ab27dfdfd65594.tar.gz sonarqube-d237a80b07c1a99151bb61f492ab27dfdfd65594.zip |
SONAR-21244 Add step to fetch GitLab groups membership
Diffstat (limited to 'server/sonar-alm-client/src/main/java')
-rw-r--r-- | server/sonar-alm-client/src/main/java/org/sonar/alm/client/gitlab/GitlabApplicationClient.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/server/sonar-alm-client/src/main/java/org/sonar/alm/client/gitlab/GitlabApplicationClient.java b/server/sonar-alm-client/src/main/java/org/sonar/alm/client/gitlab/GitlabApplicationClient.java index cb260fcec33..0abe8f4e39e 100644 --- a/server/sonar-alm-client/src/main/java/org/sonar/alm/client/gitlab/GitlabApplicationClient.java +++ b/server/sonar-alm-client/src/main/java/org/sonar/alm/client/gitlab/GitlabApplicationClient.java @@ -62,6 +62,7 @@ public class GitlabApplicationClient { private static final Type GITLAB_USER = TypeToken.getParameterized(List.class, GsonUser.class).getType(); protected static final String PRIVATE_TOKEN = "Private-Token"; + private static final String GITLAB_GROUPS_MEMBERS_ENDPOINT = "/groups/%s/members"; protected final OkHttpClient client; private final GitlabPaginatedHttpClient gitlabPaginatedHttpClient; @@ -355,8 +356,16 @@ public class GitlabApplicationClient { return Set.copyOf(executePaginatedQuery(gitlabUrl, token, "/groups", resp -> GSON.fromJson(resp, GITLAB_GROUP))); } - public Set<GsonUser> getGroupMembers(String gitlabUrl, String token, String groupId) { - return Set.copyOf(executePaginatedQuery(gitlabUrl, token, format("/groups/%s/members", groupId), resp -> GSON.fromJson(resp, GITLAB_USER))); + public Set<GsonUser> getDirectGroupMembers(String gitlabUrl, String token, String groupId) { + return getMembers(gitlabUrl, token, format(GITLAB_GROUPS_MEMBERS_ENDPOINT, groupId)); + } + + public Set<GsonUser> getAllGroupMembers(String gitlabUrl, String token, String groupId) { + return getMembers(gitlabUrl, token, format(GITLAB_GROUPS_MEMBERS_ENDPOINT + "/all", groupId)); + } + + private Set<GsonUser> getMembers(String gitlabUrl, String token, String endpoint) { + return Set.copyOf(executePaginatedQuery(gitlabUrl, token, endpoint, resp -> GSON.fromJson(resp, GITLAB_USER))); } private <E> List<E> executePaginatedQuery(String appUrl, String token, String query, Function<String, List<E>> responseDeserializer) { |