diff --git a/bubble-server/pom.xml b/bubble-server/pom.xml
index 4ed177c5..f6792231 100644
--- a/bubble-server/pom.xml
+++ b/bubble-server/pom.xml
@@ -275,12 +275,6 @@
-
-
- com.sendgrid
- sendgrid-java
- 4.6.5
-
diff --git a/bubble-server/src/main/java/bubble/cloud/email/SendgridSmtpEmailDriver.java b/bubble-server/src/main/java/bubble/cloud/email/SendgridSmtpEmailDriver.java
index ea1ba7b5..0550c9d1 100644
--- a/bubble-server/src/main/java/bubble/cloud/email/SendgridSmtpEmailDriver.java
+++ b/bubble-server/src/main/java/bubble/cloud/email/SendgridSmtpEmailDriver.java
@@ -6,26 +6,28 @@ import bubble.model.account.Account;
import bubble.model.cloud.CloudCredentials;
import bubble.model.cloud.CloudService;
import bubble.server.BubbleConfiguration;
-import com.sendgrid.Method;
-import com.sendgrid.Request;
-import com.sendgrid.Response;
-import com.sendgrid.SendGrid;
import lombok.*;
+import org.cobbzilla.util.http.HttpMethods;
+import org.cobbzilla.util.http.HttpRequestBean;
+import org.cobbzilla.util.http.HttpResponseBean;
import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Nullable;
import java.io.IOException;
import static bubble.cloud.storage.StorageCryptStream.MIN_DISTINCT_LENGTH;
import static bubble.cloud.storage.StorageCryptStream.MIN_KEY_LENGTH;
-import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
-import static java.net.HttpURLConnection.HTTP_OK;
+import static org.apache.http.HttpHeaders.AUTHORIZATION;
+import static org.apache.http.HttpHeaders.CONTENT_TYPE;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;
-import static org.cobbzilla.util.json.JsonUtil.EMPTY_JSON;
+import static org.cobbzilla.util.http.HttpContentTypes.APPLICATION_JSON;
+import static org.cobbzilla.util.http.HttpUtil.getResponse;
import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.security.CryptoUtil.generatePassword;
import static org.cobbzilla.util.string.StringUtil.repeat;
public class SendgridSmtpEmailDriver extends SmtpEmailDriver {
+ public static final String SG_API_BASE = "https://api.sendgrid.com/v3/";
private static final String PARAM_PARENT_SERVICE = "parentService";
@@ -49,26 +51,12 @@ public class SendgridSmtpEmailDriver extends SmtpEmailDriver {
return super.setupDelegatedCloudService(configuration, parentService, delegatedService);
}
- final SendGrid sg = new SendGrid(parentCredentials.getParam(PARAM_PASSWORD));
final Account accountWithDelegate = accountDAO.findByUuid(delegatedService.getAccount());
final String user = sgUsername(delegatedService);
String password = generatePassword(MIN_KEY_LENGTH, MIN_DISTINCT_LENGTH);
final CreateSubuserRequest data = new CreateSubuserRequest(user, accountWithDelegate.getEmail(), password,
new String[]{});
- final Request req = new Request();
- req.setMethod(Method.POST);
- req.setEndpoint("subusers");
- req.setBody(json(data));
-
- final Response res;
- try {
- res = sg.api(req);
- } catch (IOException e) {
- return die("Cannot create SendGrid Subuser", e);
- }
- if (res.getStatusCode() != HTTP_OK) {
- return die("Wrong response when creating SendGrid Subuser: " + res.getStatusCode() + " : " + res.getBody());
- }
+ doRequest("subusers", HttpMethods.POST, json(data));
delegatedService.setDelegated(null).setTemplate(false);
delegatedService.getCredentials()
@@ -86,24 +74,29 @@ public class SendgridSmtpEmailDriver extends SmtpEmailDriver {
final CloudService parentService = serviceDAO.findByUuid(parentServiceUuid);
if (parentService == null) return;
- final SendGrid sg = new SendGrid(parentService.getCredentials().getParam(PARAM_PASSWORD));
final String sgUserToDelete = sgUsername(service);
+ doRequest("subusers/" + sgUserToDelete, HttpMethods.DELETE, null);
+ }
- final Request req = new Request();
- req.setMethod(Method.DELETE);
- req.setEndpoint("subusers/" + sgUserToDelete);
- req.setBody(EMPTY_JSON);
+ private String doRequest(@NonNull final String uri, @NonNull final String method, @Nullable final String json) {
+ final HttpRequestBean request = new HttpRequestBean();
+ request.setMethod(method)
+ .setUri(SG_API_BASE + uri)
+ .setEntity(json)
+ .setHeader(CONTENT_TYPE, APPLICATION_JSON)
+ .setHeader(AUTHORIZATION, "Bearer " + getCredentials().getParam(PARAM_PASSWORD));
- final Response res;
+ final HttpResponseBean response;
try {
- res = sg.api(req);
+ response = getResponse(request);
} catch (IOException e) {
- die("Cannot delete SendGrid Subuser " + sgUserToDelete, e);
- return;
+ return die("doGet(" + uri + "): " + e.getMessage(), e);
}
- if (res.getStatusCode() != HTTP_NO_CONTENT) {
- die("Wrong response when creating SendGrid Subuser: " + res.getStatusCode() + " : " + res.getBody());
+ if (!response.isOk()) {
+ return die("doPost(" + uri + "): HTTP " + response.getStatus() + " : " + response.getEntityString());
}
+
+ return response.getEntityString();
}
@AllArgsConstructor @NoArgsConstructor
@@ -113,4 +106,5 @@ public class SendgridSmtpEmailDriver extends SmtpEmailDriver {
@Getter @Setter private String password;
@Getter @Setter private String[] ips;
}
+
}