package no.niths.application.rest.misc; import java.io.EOFException; import javax.servlet.http.HttpServletResponse; import no.niths.common.constants.AdminConstantNames; import no.niths.common.constants.SecurityConstants; import no.niths.domain.misc.Email; import no.niths.services.interfaces.MailSenderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseStatus; import com.sun.mail.smtp.SMTPAddressFailedException; /** * Class that handles and sends emails */ @Controller @RequestMapping(AdminConstantNames.BROADCAST) public class BroadcasterControllerImpl { @Autowired private MailSenderService service; @RequestMapping(method = RequestMethod.POST) @ResponseStatus(value = HttpStatus.OK) @PreAuthorize(SecurityConstants.ALL_LEADERS) public void broadcast(@RequestBody Email email) { String[] recipientAddresses = email.getRecipientAddresses(); for (String recipientAddress : recipientAddresses) { service.composeAndSend( recipientAddress, "NITHs", email.getSubject(), "Hei.\n\nDette er " + email.getSenderName() + ".\n\n" + email.getBody()); } } /** * * @param e The exception thrown * @param res The response */ @ExceptionHandler(EOFException.class) @ResponseStatus(value = HttpStatus.BAD_REQUEST) public void endOfFile(EOFException e, HttpServletResponse res) { res.setHeader("Error", "Wrong input"); } /** * * @param e The exception thrown * @param res The response */ @ExceptionHandler(SMTPAddressFailedException.class) @ResponseStatus(value = HttpStatus.BAD_REQUEST) public void handleNonexistentEmailAddresses(SMTPAddressFailedException e, HttpServletResponse res) { res.setHeader("Error", "Email addresse(s) don't exist"); } }