diff --git a/api/src/main/java/be/naaturel/boardmateapi/services/SendgridService.java b/api/src/main/java/be/naaturel/boardmateapi/services/SendgridService.java index 12801f1a..25012e2c 100644 --- a/api/src/main/java/be/naaturel/boardmateapi/services/SendgridService.java +++ b/api/src/main/java/be/naaturel/boardmateapi/services/SendgridService.java @@ -1,6 +1,9 @@ package be.naaturel.boardmateapi.services; import be.naaturel.boardmateapi.common.exceptions.ServiceException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.sendgrid.Method; import com.sendgrid.Request; import com.sendgrid.Response; @@ -27,11 +30,9 @@ public class SendgridService { public void send(String dst, String subject, String text) throws ServiceException { try { - Content content = new Content("text/plain", text); + Content content = new Content("text/plain", formatContent(text)); Mail mail = new Mail(this.senderEmail, subject, new Email(dst), content); - // sg.setDataResidency("eu"); - // uncomment the above line if you are sending mail using a regional EU subuser Request request = new Request(); request.setMethod(Method.POST); request.setEndpoint("mail/send"); @@ -45,5 +46,27 @@ public class SendgridService { } } + private String formatContent(String content) throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = mapper.readTree(content); + StringBuilder mailBody = new StringBuilder(); + + mailBody.append("White: ").append(root.get("white_name").asText()).append("\n"); + mailBody.append("Black: ").append(root.get("black_name").asText()).append("\n"); + mailBody.append("Time Control: ") + .append(root.get("time_control").asInt()) + .append(" + ") + .append(root.get("increment").asInt()) + .append("\n"); + mailBody.append("Timestamp: ").append(root.get("timestamp").asLong()).append("\n\n"); + + mailBody.append("Moves:\n"); + int i = 1; + for (JsonNode move : root.get("moves")) { + mailBody.append(i++).append(". ").append(move.asText()).append("\n"); + } + + return mailBody.toString(); + } } diff --git a/api/src/main/java/be/naaturel/boardmateapi/services/TwilioService.java b/api/src/main/java/be/naaturel/boardmateapi/services/TwilioService.java index bf283e17..04cbe3af 100644 --- a/api/src/main/java/be/naaturel/boardmateapi/services/TwilioService.java +++ b/api/src/main/java/be/naaturel/boardmateapi/services/TwilioService.java @@ -1,11 +1,17 @@ package be.naaturel.boardmateapi.services; +import be.naaturel.boardmateapi.common.exceptions.ServiceException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.twilio.rest.api.v2010.account.Message; import com.twilio.type.PhoneNumber; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import java.util.Map; + @Service public class TwilioService { @@ -16,7 +22,14 @@ public class TwilioService { this.serviceId = serviceId; } - public void send(String msg){ - Message message = Message.creator(new PhoneNumber("+32496533833"), this.serviceId, msg).create(); + public void send(String msg) throws ServiceException { + try { + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(msg); + String content = jsonNode.get("content").asText(); + Message.creator(new PhoneNumber("+32496533833"), this.serviceId, content).create(); + } catch (Exception e){ + throw new ServiceException("Failed to send message :" + e.getMessage()); + } } }