diff options
Diffstat (limited to 'sonar-ws')
-rw-r--r-- | sonar-ws/src/main/java/org/sonarqube/ws/client/emails/EmailConfigurationService.java | 91 | ||||
-rw-r--r-- | sonar-ws/src/main/java/org/sonarqube/ws/client/emails/WsEmailConfiguration.java | 129 |
2 files changed, 220 insertions, 0 deletions
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/emails/EmailConfigurationService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/emails/EmailConfigurationService.java new file mode 100644 index 00000000000..785d61b88e4 --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/emails/EmailConfigurationService.java @@ -0,0 +1,91 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 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.emails; + +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import org.sonarqube.ws.client.BaseService; +import org.sonarqube.ws.client.DeleteRequest; +import org.sonarqube.ws.client.HttpException; +import org.sonarqube.ws.client.PostRequest; +import org.sonarqube.ws.client.WsConnector; +import org.sonarqube.ws.client.WsResponse; + +import static java.net.HttpURLConnection.HTTP_NOT_FOUND; + +public class EmailConfigurationService extends BaseService { + + + private static final String EMAIL_CONFIGURATION_ID = "email-configuration"; + + public EmailConfigurationService(WsConnector wsConnector) { + super(wsConnector, "api/v2/system/email-configurations"); + } + + public String createEmailConfiguration(WsEmailConfiguration config) { + String body = String.format(""" + { + "host": "%s", + "port": "%s", + "securityProtocol": "%s", + "fromAddress": "%s", + "fromName": "%s", + "subjectPrefix": "%s", + "authMethod": "%s", + "username": "%s", + "basicPassword": "%s", + "oauthAuthenticationHost": "%s", + "oauthClientId": "%s", + "oauthClientSecret": "%s", + "oauthTenant": "%s" + } + """, + config.host(), + config.port(), + config.securityProtocol(), + config.fromAddress(), + config.fromName(), + config.subjectPrefix(), + config.authMethod(), + config.username(), + config.basicPassword(), + config.oauthAuthenticationHost(), + config.oauthClientId(), + config.oauthClientSecret(), + config.oauthTenant() + ); + + WsResponse response = call( + new PostRequest(path()).setBody(body) + ); + return new Gson().fromJson(response.content(), JsonObject.class).get("id").getAsString(); + } + + public void deleteEmailConfiguration() { + try { + call(new DeleteRequest(path() + "/" + EMAIL_CONFIGURATION_ID)); + } catch (HttpException e) { + // We ignore if it gets deleted while there is no configuration + if (e.code() != HTTP_NOT_FOUND) { + throw e; + } + } + } +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/emails/WsEmailConfiguration.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/emails/WsEmailConfiguration.java new file mode 100644 index 00000000000..a44f47edc3b --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/emails/WsEmailConfiguration.java @@ -0,0 +1,129 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 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.emails; + +public record WsEmailConfiguration( + String host, + String port, + String securityProtocol, + String fromAddress, + String fromName, + String subjectPrefix, + String authMethod, + String username, + String basicPassword, + String oauthAuthenticationHost, + String oauthClientId, + String oauthClientSecret, + String oauthTenant + ) { + + public static WsEmailConfigurationBuilder builder() { + return new WsEmailConfigurationBuilder(); + } + + public static final class WsEmailConfigurationBuilder { + private String host; + private String port; + private String securityProtocol; + private String fromAddress; + private String fromName; + private String subjectPrefix; + private String authMethod; + private String username; + private String basicPassword; + private String oauthAuthenticationHost; + private String oauthClientId; + private String oauthClientSecret; + private String oauthTenant; + + private WsEmailConfigurationBuilder() { + } + + public WsEmailConfigurationBuilder host(String host) { + this.host = host; + return this; + } + + public WsEmailConfigurationBuilder port(String port) { + this.port = port; + return this; + } + + public WsEmailConfigurationBuilder securityProtocol(String securityProtocol) { + this.securityProtocol = securityProtocol; + return this; + } + + public WsEmailConfigurationBuilder fromAddress(String fromAddress) { + this.fromAddress = fromAddress; + return this; + } + + public WsEmailConfigurationBuilder fromName(String fromName) { + this.fromName = fromName; + return this; + } + + public WsEmailConfigurationBuilder subjectPrefix(String subjectPrefix) { + this.subjectPrefix = subjectPrefix; + return this; + } + + public WsEmailConfigurationBuilder authMethod(String authMethod) { + this.authMethod = authMethod; + return this; + } + + public WsEmailConfigurationBuilder username(String username) { + this.username = username; + return this; + } + + public WsEmailConfigurationBuilder basicPassword(String basicPassword) { + this.basicPassword = basicPassword; + return this; + } + + public WsEmailConfigurationBuilder oauthAuthenticationHost(String oauthAuthenticationHost) { + this.oauthAuthenticationHost = oauthAuthenticationHost; + return this; + } + + public WsEmailConfigurationBuilder oauthClientId(String oauthClientId) { + this.oauthClientId = oauthClientId; + return this; + } + + public WsEmailConfigurationBuilder oauthClientSecret(String oauthClientSecret) { + this.oauthClientSecret = oauthClientSecret; + return this; + } + + public WsEmailConfigurationBuilder oauthTenant(String oauthTenant) { + this.oauthTenant = oauthTenant; + return this; + } + + public WsEmailConfiguration build() { + return new WsEmailConfiguration(host, port, securityProtocol, fromAddress, fromName, subjectPrefix, authMethod, username, basicPassword, oauthAuthenticationHost, oauthClientId, oauthClientSecret, oauthTenant); + } + } +} |