@@ -34,6 +34,7 @@ import org.sonarqube.ws.client.duplications.DuplicationsService; | |||
import org.sonarqube.ws.client.editions.EditionsService; | |||
import org.sonarqube.ws.client.emails.EmailsService; | |||
import org.sonarqube.ws.client.favorites.FavoritesService; | |||
import org.sonarqube.ws.client.github.provisioning.permissions.GithubPermissionsService; | |||
import org.sonarqube.ws.client.githubprovisioning.GithubProvisioningService; | |||
import org.sonarqube.ws.client.governancereports.GovernanceReportsService; | |||
import org.sonarqube.ws.client.hotspots.HotspotsService; | |||
@@ -142,6 +143,7 @@ class DefaultWsClient implements WsClient { | |||
private final RegulatoryReportsService regulatoryReportsService; | |||
private final SonarLintServerPushService sonarLintPushService; | |||
private final GithubProvisioningService githubProvisioningService; | |||
private final GithubPermissionsService githubPermissionsService; | |||
DefaultWsClient(WsConnector wsConnector) { | |||
this.wsConnector = wsConnector; | |||
@@ -201,6 +203,7 @@ class DefaultWsClient implements WsClient { | |||
this.sonarLintPushService = new SonarLintServerPushService(wsConnector); | |||
this.regulatoryReportsService = new RegulatoryReportsService(wsConnector); | |||
this.githubProvisioningService = new GithubProvisioningService(wsConnector); | |||
this.githubPermissionsService = new GithubPermissionsService(wsConnector); | |||
} | |||
@Override | |||
@@ -279,6 +282,11 @@ class DefaultWsClient implements WsClient { | |||
return favoritesService; | |||
} | |||
@Override | |||
public GithubPermissionsService githubPermissionsService() { | |||
return githubPermissionsService; | |||
} | |||
@Override | |||
public GovernanceReportsService governanceReports() { | |||
return governanceReportsService; |
@@ -34,6 +34,7 @@ import org.sonarqube.ws.client.duplications.DuplicationsService; | |||
import org.sonarqube.ws.client.editions.EditionsService; | |||
import org.sonarqube.ws.client.emails.EmailsService; | |||
import org.sonarqube.ws.client.favorites.FavoritesService; | |||
import org.sonarqube.ws.client.github.provisioning.permissions.GithubPermissionsService; | |||
import org.sonarqube.ws.client.githubprovisioning.GithubProvisioningService; | |||
import org.sonarqube.ws.client.governancereports.GovernanceReportsService; | |||
import org.sonarqube.ws.client.hotspots.HotspotsService; | |||
@@ -125,6 +126,8 @@ public interface WsClient { | |||
FavoritesService favorites(); | |||
GithubPermissionsService githubPermissionsService(); | |||
GovernanceReportsService governanceReports(); | |||
HotspotsService hotspots(); |
@@ -0,0 +1,31 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2023 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonarqube.ws.client.github.provisioning.permissions; | |||
public class AddGithubPermissionMappingRequest { | |||
private final String githubRole; | |||
private final SonarqubePermissions permissions; | |||
public AddGithubPermissionMappingRequest(String githubRole, SonarqubePermissions permissions) { | |||
this.githubRole = githubRole; | |||
this.permissions = permissions; | |||
} | |||
} |
@@ -0,0 +1,49 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2023 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonarqube.ws.client.github.provisioning.permissions; | |||
import com.google.gson.Gson; | |||
import org.sonarqube.ws.MediaTypes; | |||
import org.sonarqube.ws.client.BaseService; | |||
import org.sonarqube.ws.client.PostRequest; | |||
import org.sonarqube.ws.client.WsConnector; | |||
import org.sonarqube.ws.client.WsResponse; | |||
public class GithubPermissionsService extends BaseService { | |||
public GithubPermissionsService(WsConnector wsConnector) { | |||
super(wsConnector, "api/v2"); | |||
} | |||
public void addPermissionMapping(AddGithubPermissionMappingRequest addGithubPermissionMappingRequest) { | |||
try (WsResponse response = callEndpoint(addGithubPermissionMappingRequest)) { | |||
if (!response.isSuccessful()) { | |||
throw new IllegalStateException("Failed to add github permission mapping, http error code: " + response.code()); | |||
} | |||
} | |||
} | |||
private WsResponse callEndpoint(AddGithubPermissionMappingRequest addGithubPermissionMappingRequest) { | |||
return call( | |||
new PostRequest(path("github-permission-mappings")) | |||
.setBody(new Gson().toJson(addGithubPermissionMappingRequest)) | |||
.setMediaType(MediaTypes.JSON)); | |||
} | |||
} |
@@ -0,0 +1,64 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2023 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonarqube.ws.client.github.provisioning.permissions; | |||
public class SonarqubePermissions { | |||
private final boolean user; | |||
private final boolean codeViewer; | |||
private final boolean issueAdmin; | |||
private final boolean securityHotspotAdmin; | |||
private final boolean admin; | |||
private final boolean scan; | |||
public SonarqubePermissions(boolean user, boolean codeViewer, boolean issueAdmin, boolean securityHotspotAdmin, boolean admin, boolean scan) { | |||
this.user = user; | |||
this.codeViewer = codeViewer; | |||
this.issueAdmin = issueAdmin; | |||
this.securityHotspotAdmin = securityHotspotAdmin; | |||
this.admin = admin; | |||
this.scan = scan; | |||
} | |||
public boolean isUser() { | |||
return user; | |||
} | |||
public boolean isCodeViewer() { | |||
return codeViewer; | |||
} | |||
public boolean isIssueAdmin() { | |||
return issueAdmin; | |||
} | |||
public boolean isSecurityHotspotAdmin() { | |||
return securityHotspotAdmin; | |||
} | |||
public boolean isAdmin() { | |||
return admin; | |||
} | |||
public boolean isScan() { | |||
return scan; | |||
} | |||
} |
@@ -0,0 +1,23 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2023 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
@ParametersAreNonnullByDefault | |||
package org.sonarqube.ws.client.github.provisioning.permissions; | |||
import javax.annotation.ParametersAreNonnullByDefault; |